1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
// For licensing and usage information, read docs/winui_license.txt
//****************************************************************************
// NOTE: ifdef MESS doesn't work here
#ifndef WINUI_TREEVIEW_H
#define WINUI_TREEVIEW_H
/* corrections for commctrl.h */
#if defined(__GNUC__)
/* fix warning: cast does not match function type */
#undef TreeView_InsertItem
#define TreeView_InsertItem(w,i) (HTREEITEM)(LRESULT)(int)SendMessage((w),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(i))
#undef TreeView_SetImageList
#define TreeView_SetImageList(w,h,i) (HIMAGELIST)(LRESULT)(int)SendMessage((w),TVM_SETIMAGELIST,i,(LPARAM)(HIMAGELIST)(h))
#undef TreeView_GetNextItem
#define TreeView_GetNextItem(w,i,c) (HTREEITEM)(LRESULT)(int)SendMessage((w),TVM_GETNEXTITEM,c,(LPARAM)(HTREEITEM)(i))
#undef TreeView_HitTest
#define TreeView_HitTest(hwnd, lpht) \
(HTREEITEM)(LRESULT)(int)SNDMSG((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht))
/* fix wrong return type */
#undef TreeView_Select
#define TreeView_Select(w,i,c) (BOOL)(int)SendMessage((w),TVM_SELECTITEM,c,(LPARAM)(HTREEITEM)(i))
#undef TreeView_EditLabel
#define TreeView_EditLabel(w, i) SNDMSG(w,TVM_EDITLABEL,0,(LPARAM)(i))
#endif /* defined(__GNUC__) */
#include "bitmask.h"
#include <stdint.h>
#include "emu_opts.h"
/***************************************************************************
Folder And Filter Definitions
***************************************************************************/
typedef struct
{
const char *m_lpTitle; // Folder Title
const char *short_name; // for saving in the .ini
UINT m_nFolderId; // ID
UINT m_nIconId; // if >= 0, resource id of icon (IDI_xxx), otherwise index in image list
DWORD m_dwUnset; // Excluded filters
DWORD m_dwSet; // Implied filters
BOOL m_process; // 1 = process only if rebuilding the cache
void (*m_pfnCreateFolders)(int parent_index); // Constructor for special folders
BOOL (*m_pfnQuery)(uint32_t nDriver); // Query function
BOOL m_bExpectedResult; // Expected query result
OPTIONS_TYPE m_opttype = OPTIONS_MAX; // Has an ini file (vector.ini, etc)
} FOLDERDATA, *LPFOLDERDATA;
typedef const FOLDERDATA *LPCFOLDERDATA;
typedef struct
{
DWORD m_dwFilterType; /* Filter value */
DWORD m_dwCtrlID; /* Control ID that represents it */
BOOL (*m_pfnQuery)(uint32_t nDriver); /* Query function */
BOOL m_bExpectedResult; /* Expected query result */
} FILTER_ITEM, *LPFILTER_ITEM;
typedef const FILTER_ITEM *LPCFILTER_ITEM;
/***************************************************************************
Functions to build builtin folder lists
***************************************************************************/
void CreateManufacturerFolders(int parent_index);
void CreateYearFolders(int parent_index);
void CreateSourceFolders(int parent_index);
void CreateScreenFolders(int parent_index);
void CreateResolutionFolders(int parent_index);
void CreateFPSFolders(int parent_index);
void CreateBIOSFolders(int parent_index);
void CreateCPUFolders(int parent_index);
void CreateSoundFolders(int parent_index);
void CreateOrientationFolders(int parent_index);
void CreateDeficiencyFolders(int parent_index);
void CreateDumpingFolders(int parent_index);
/***************************************************************************/
#define MAX_EXTRA_FOLDERS 256
#define MAX_EXTRA_SUBFOLDERS 256
/* TreeView structures */
enum
{
FOLDER_NONE = 0,
FOLDER_ALLGAMES,
FOLDER_AVAILABLE,
FOLDER_BIOS,
FOLDER_CLONES,
FOLDER_COMPUTER,
FOLDER_CONSOLE,
FOLDER_CPU,
FOLDER_DEFICIENCY,
FOLDER_DUMPING,
FOLDER_FPS,
FOLDER_HARDDISK,
FOLDER_HORIZONTAL,
FOLDER_LIGHTGUN,
FOLDER_MANUFACTURER,
FOLDER_MECHANICAL,
FOLDER_MODIFIED,
FOLDER_MOUSE,
FOLDER_NONMECHANICAL,
FOLDER_NONWORKING,
FOLDER_ORIGINAL,
FOLDER_RASTER,
FOLDER_RESOLUTION,
FOLDER_SAMPLES,
FOLDER_SAVESTATE,
FOLDER_SCREENS,
FOLDER_SND,
FOLDER_SOURCE,
FOLDER_STEREO,
FOLDER_TRACKBALL,
FOLDER_UNAVAILABLE,
FOLDER_VECTOR,
FOLDER_VERTICAL,
FOLDER_WORKING,
FOLDER_YEAR,
MAX_FOLDERS,
};
typedef enum
{
F_CLONES = 0x00000001,
F_NONWORKING = 0x00000002,
F_UNAVAILABLE = 0x00000004,
F_VECTOR = 0x00000008,
F_RASTER = 0x00000010,
F_ORIGINALS = 0x00000020,
F_WORKING = 0x00000040,
F_AVAILABLE = 0x00000080,
F_HORIZONTAL = 0x00000100,
F_VERTICAL = 0x00000200,
F_MECHANICAL = 0x00000400,
F_ARCADE = 0x00000800,
F_MESS = 0x00001000,
F_COMPUTER = 0x00002000,
F_CONSOLE = 0x00004000,
F_MODIFIED = 0x00008000,
F_MASK = 0x0000FFFF,
F_INIEDIT = 0x00010000, // There is an .ini that can be edited. MSH 20070811
F_CUSTOM = 0x01000000 // for current .ini custom folders
} FOLDERFLAG;
typedef struct
{
LPSTR m_lpTitle; // String contains the folder name
LPTSTR m_lptTitle; // String contains the folder name as TCHAR*
UINT m_nFolderId; // Index / Folder ID number
int m_nParent; // Parent folder index in treeFolders[]
int m_nIconId; // negative icon index into the ImageList, or IDI_xxx resource id
DWORD m_dwFlags; // Misc flags
LPBITS m_lpGameBits; // Game bits, represent game indices
} TREEFOLDER, *LPTREEFOLDER;
typedef struct
{
char m_szTitle[64]; // Folder Title
UINT m_nFolderId; // ID
int m_nParent; // Parent Folder index in treeFolders[]
DWORD m_dwFlags; // Flags - Customisable and Filters
int m_nIconId; // negative icon index into the ImageList, or IDI_xxx resource id
int m_nSubIconId; // negative icon index into the ImageList, or IDI_xxx resource id
} EXFOLDERDATA, *LPEXFOLDERDATA;
void FreeFolders(void);
void ResetFilters(void);
void InitTree(LPCFOLDERDATA lpFolderData, LPCFILTER_ITEM lpFilterList);
void SetCurrentFolder(LPTREEFOLDER lpFolder);
UINT GetCurrentFolderID(void);
LPTREEFOLDER GetCurrentFolder(void);
int GetNumFolders(void);
LPTREEFOLDER GetFolder(UINT nFolder);
LPTREEFOLDER GetFolderByID(UINT nID);
LPTREEFOLDER GetFolderByName(int nParentId, const char *pszFolderName);
void AddGame(LPTREEFOLDER lpFolder, UINT nGame);
void RemoveGame(LPTREEFOLDER lpFolder, UINT nGame);
int FindGame(LPTREEFOLDER lpFolder, int nGame);
void ResetWhichGamesInFolders(void);
LPCFOLDERDATA FindFilter(DWORD folderID);
BOOL GameFiltered(int nGame, DWORD dwFlags);
BOOL GetParentFound(int nGame);
LPCFILTER_ITEM GetFilterList(void);
void SetTreeIconSize(HWND pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */--
-- Copyright 2010-2020 Branimir Karadzic. All rights reserved.
-- License: https://github.com/bkaradzic/bx#license-bsd-2-clause
--
local naclToolchain = ""
local toolchainPrefix = ""
if _OPTIONS['TOOLCHAIN'] then
toolchainPrefix = _OPTIONS["TOOLCHAIN"]
end
newoption {
trigger = "gcc",
value = "GCC",
description = "Choose GCC flavor",
allowed = {
{ "android-arm", "Android - ARM" },
{ "android-arm64", "Android - ARM64" },
{ "android-mips", "Android - MIPS" },
{ "android-mips64","Android - MIPS64" },
{ "android-x86", "Android - x86" },
{ "android-x64", "Android - x64" },
{ "asmjs", "Emscripten/asm.js" },
{ "freebsd", "FreeBSD" },
{ "freebsd-clang", "FreeBSD (clang compiler)"},
{ "linux-gcc", "Linux (GCC compiler)" },
{ "linux-clang", "Linux (Clang compiler)" },
{ "ios-arm", "iOS - ARM" },
{ "ios-simulator", "iOS - Simulator" },
{ "mingw32-gcc", "MinGW32" },
{ "mingw64-gcc", "MinGW64" },
{ "mingw-clang", "MinGW (clang compiler)" },
{ "netbsd", "NetBSD" },
{ "netbsd-clang", "NetBSD (clang compiler)"},
{ "openbsd", "OpenBSD" },
{ "osx", "OSX (GCC compiler)" },
{ "osx-clang", "OSX (Clang compiler)" },
{ "pnacl", "Native Client - PNaCl" },
{ "rpi", "RaspberryPi" },
{ "solaris", "Solaris" },
{ "steamlink", "Steam Link" },
{ "ci20", "Creator-Ci20" },
},
}
newoption {
trigger = "vs",
value = "toolset",
description = "Choose VS toolset",
allowed = {
{ "intel-14", "Intel C++ Compiler XE 14.0" },
{ "intel-15", "Intel C++ Compiler XE 15.0" },
{ "vs2015-clang", "Clang 3.6" },
{ "vs2015-xp", "Visual Studio 2015 targeting XP" },
{ "vs2017-clang", "Clang 3.6" },
{ "vs2017-xp", "Visual Studio 2017 targeting XP" },
{ "clangcl", "Visual Studio 2019 using Clang/LLVM" },
{ "winphone8", "Windows Phone 8.0" },
{ "winphone81", "Windows Phone 8.1" },
{ "winstore81", "Windows Store 8.1" },
{ "winstore82", "Universal Windows App" }
},
}
newoption {
trigger = "xcode",
value = "xcode_target",
description = "Choose XCode target",
allowed = {
{ "osx", "OSX" },
{ "ios", "iOS" },
}
}
newoption {
trigger = "with-android",
value = "#",
description = "Set Android platform version (default: android-21).",
}
newoption {
trigger = "with-ios",
value = "#",
description = "Set iOS target version (default: 8.0).",
}
newoption {
trigger = "with-windows",
value = "#",
description = "Set the Windows target platform version (default: 10.0.10240.0).",
}
function toolchain(_buildDir, _subDir)
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION)
local androidPlatform = "android-24"
if _OPTIONS["with-android"] then
androidPlatform = "android-" .. _OPTIONS["with-android"]
elseif _OPTIONS["PLATFORM"]:find("64", -2) then
androidPlatform = "android-24"
end
local iosPlatform = ""
if _OPTIONS["with-ios"] then
iosPlatform = _OPTIONS["with-ios"]
end
local windowsPlatform = "10.0.10240.0"
if _OPTIONS["with-windows"] then
windowsPlatform = _OPTIONS["with-windows"]
end
if _ACTION == "gmake" or _ACTION == "ninja" then
if nil == _OPTIONS["gcc"] or nil == _OPTIONS["gcc_version"] then
print("GCC flavor and version must be specified!")
os.exit(1)
end
if string.find(_OPTIONS["gcc"], "android") then
-- 64-bit android platform requires >= 21
if _OPTIONS["PLATFORM"]:find("64", -2) and tonumber(androidPlatform:sub(9)) < 21 then
error("64-bit android requires platform 21 or higher")
end
if not os.getenv("ANDROID_NDK_ROOT") then
print("Set ANDROID_NDK_ROOT environment variable.")
end
if not os.getenv("ANDROID_NDK_LLVM") then
print("Set ANDROID_NDK_LLVM envrionment variable.")
end
platform_ndk_env = "ANDROID_NDK_" .. _OPTIONS["PLATFORM"]:upper()
if not os.getenv(platform_ndk_env) then
print("Set " .. platform_ndk_env .. " environment variable.")
end
local platformToolchainMap = {
['arm'] = "arm-linux-androideabi",
['arm64'] = "aarch64-linux-android",
['mips64'] = "mips64el-linux-android",
['mips'] = "mipsel-linux-android",
['x86'] = "i686-linux-android",
['x64'] = "x86_64-linux-android",
}
toolchainPrefix = os.getenv(platform_ndk_env) .. "/bin/" .. platformToolchainMap[_OPTIONS["PLATFORM"]] .. "-"
premake.gcc.cc = "$(ANDROID_NDK_LLVM)/bin/clang"
premake.gcc.cxx = "$(ANDROID_NDK_LLVM)/bin/clang++"
premake.gcc.ar = toolchainPrefix .. "ar"
premake.gcc.llvm = true
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-android-" .. _OPTIONS["PLATFORM"])
end
if "asmjs" == _OPTIONS["gcc"] then
if not os.getenv("EMSCRIPTEN") then
print("Set EMSCRIPTEN enviroment variables.")
end
premake.gcc.cc = "$(EMSCRIPTEN)/emcc"
premake.gcc.cxx = "$(EMSCRIPTEN)/em++"
premake.gcc.ar = "$(EMSCRIPTEN)/emar"
premake.gcc.llvm = true
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-asmjs")
end
if "freebsd" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-freebsd")
end
if "freebsd-clang" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-freebsd-clang")
end
if "netbsd" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-netbsd")
end
if "netbsd-clang" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-netbsd-clang")
end
if "openbsd" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-openbsd")
end
if "ios-arm" == _OPTIONS["gcc"] then
premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
premake.gcc.ar = "ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ios-arm")
end
if "ios-simulator" == _OPTIONS["gcc"] then
premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
premake.gcc.ar = "ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ios-simulator")
end
if "linux-gcc" == _OPTIONS["gcc"] then
-- Force gcc-4.2 on ubuntu-intrepid
if _OPTIONS["distro"]=="ubuntu-intrepid" then
premake.gcc.cc = "@gcc -V 4.2"
premake.gcc.cxx = "@g++-4.2"
end
premake.gcc.ar = "ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-linux")
end
if "solaris" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-solaris")
end
if "linux-clang" == _OPTIONS["gcc"] then
premake.gcc.cc = "clang"
premake.gcc.cxx = "clang++"
premake.gcc.ar = "ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-linux-clang")
end
if "steamlink" == _OPTIONS["gcc"] then
if not os.getenv("MARVELL_SDK_PATH") then
print("Set MARVELL_SDK_PATH envrionment variable.")
end
premake.gcc.cc = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-gcc"
premake.gcc.cxx = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-g++"
premake.gcc.ar = "$(MARVELL_SDK_PATH)/toolchain/bin/armv7a-cros-linux-gnueabi-ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-steamlink")
end
if "rpi" == _OPTIONS["gcc"] then
if not os.getenv("RASPBERRY_SDK_PATH") then
print("Set RASPBERRY_SDK_PATH envrionment variable.")
end
premake.gcc.cc = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-gcc"
premake.gcc.cxx = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-g++"
premake.gcc.ar = "$(RASPBERRY_SDK_PATH)/bin/arm-linux-gnueabihf-ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-rpi")
end
if "ci20" == _OPTIONS["gcc"] then
if not os.getenv("MIPS_LINUXGNU_ROOT") then
print("Set MIPS_LINUXGNU_ROOT envrionment variable.")
end
premake.gcc.cc = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-gcc"
premake.gcc.cxx = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-g++"
premake.gcc.ar = "$(MIPS_LINUXGNU_ROOT)/bin/mips-mti-linux-gnu-ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ci20")
end
if "mingw32-gcc" == _OPTIONS["gcc"] then
if not os.getenv("MINGW32") then
print("Set MINGW32 envrionment variable.")
end
if toolchainPrefix == nil or toolchainPrefix == "" then
toolchainPrefix = "$(MINGW32)/bin/i686-w64-mingw32-"
end
premake.gcc.cc = toolchainPrefix .. "gcc"
premake.gcc.cxx = toolchainPrefix .. "g++"
premake.gcc.ar = toolchainPrefix .. "gcc-ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw32-gcc")
end
if "mingw64-gcc" == _OPTIONS["gcc"] then
if not os.getenv("MINGW64") then
print("Set MINGW64 envrionment variable.")
end
if toolchainPrefix == nil or toolchainPrefix == "" then
toolchainPrefix = "$(MINGW64)/bin/x86_64-w64-mingw32-"
end
premake.gcc.cc = toolchainPrefix .. "gcc"
premake.gcc.cxx = toolchainPrefix .. "g++"
premake.gcc.ar = toolchainPrefix .. "gcc-ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw64-gcc")
end
if "mingw-clang" == _OPTIONS["gcc"] then
premake.gcc.cc = "clang"
premake.gcc.cxx = "clang++"
premake.gcc.ar = "llvm-ar"
premake.gcc.llvm = true
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-mingw-clang")
end
if "osx" == _OPTIONS["gcc"] then
if os.is("linux") then
premake.gcc.cc = toolchainPrefix .. "clang"
premake.gcc.cxx = toolchainPrefix .. "clang++"
premake.gcc.ar = toolchainPrefix .. "ar"
end
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-osx")
end
if "osx-clang" == _OPTIONS["gcc"] then
premake.gcc.cc = toolchainPrefix .. "clang"
premake.gcc.cxx = toolchainPrefix .. "clang++"
premake.gcc.ar = toolchainPrefix .. "ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-osx-clang")
end
if "pnacl" == _OPTIONS["gcc"] then
if not os.getenv("NACL_SDK_ROOT") then
print("Set NACL_SDK_ROOT enviroment variables.")
end
naclToolchain = "$(NACL_SDK_ROOT)/toolchain/win_pnacl/bin/pnacl-"
if os.is("macosx") then
naclToolchain = "$(NACL_SDK_ROOT)/toolchain/mac_pnacl/bin/pnacl-"
elseif os.is("linux") then
naclToolchain = "$(NACL_SDK_ROOT)/toolchain/linux_pnacl/bin/pnacl-"
end
premake.gcc.cc = naclToolchain .. "clang"
premake.gcc.cxx = naclToolchain .. "clang++"
premake.gcc.ar = naclToolchain .. "ar"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-pnacl")
end
if "rpi" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-rpi")
end
if "ci20" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-ci20")
end
elseif _ACTION == "vs2015" or _ACTION == "vs2015-fastbuild" then
if (_ACTION .. "-clang") == _OPTIONS["vs"] then
premake.vstudio.toolset = ("LLVM-" .. _ACTION)
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-clang")
end
if "winphone8" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v110_wp80"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone8")
end
if "winphone81" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v120_wp81"
platforms { "ARM" }
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone81")
end
if "winstore81" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v120"
premake.vstudio.storeapp = "8.1"
platforms { "ARM" }
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore81")
end
if "winstore82" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v140"
premake.vstudio.storeapp = "8.2"
-- If needed, depending on GENie version, enable file-level configuration
if enablefilelevelconfig ~= nil then
enablefilelevelconfig()
end
local action = premake.action.current()
action.vstudio.windowsTargetPlatformVersion = windowsPlatform
platforms { "ARM" }
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82")
end
if "intel-14" == _OPTIONS["vs"] then
premake.vstudio.toolset = "Intel C++ Compiler XE 14.0"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
end
if "intel-15" == _OPTIONS["vs"] then
premake.vstudio.toolset = "Intel C++ Compiler XE 15.0"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
end
if ("vs2015-xp") == _OPTIONS["vs"] then
premake.vstudio.toolset = ("v140_xp")
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp")
end
elseif _ACTION == "vs2017" or _ACTION == "vs2017-fastbuild" then
if (_ACTION .. "-clang") == _OPTIONS["vs"] then
premake.vstudio.toolset = ("LLVM-" .. _ACTION)
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-clang")
end
if "winphone8" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v110_wp80"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone8")
end
if "winphone81" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v120_wp81"
platforms { "ARM" }
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winphone81")
end
if "winstore81" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v120"
premake.vstudio.storeapp = "8.1"
platforms { "ARM" }
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore81")
end
if "winstore82" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v141"
premake.vstudio.storeapp = "8.2"
-- If needed, depending on GENie version, enable file-level configuration
if enablefilelevelconfig ~= nil then
enablefilelevelconfig()
end
local action = premake.action.current()
action.vstudio.windowsTargetPlatformVersion = windowsPlatform
platforms { "ARM" }
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82")
end
if "intel-14" == _OPTIONS["vs"] then
premake.vstudio.toolset = "Intel C++ Compiler XE 14.0"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
end
if "intel-15" == _OPTIONS["vs"] then
premake.vstudio.toolset = "Intel C++ Compiler XE 15.0"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
end
if ("vs2017-xp") == _OPTIONS["vs"] then
premake.vstudio.toolset = ("v141_xp")
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-xp")
end
elseif _ACTION == "vs2019" or _ACTION == "vs2019-fastbuild" then
if "clangcl" == _OPTIONS["vs"] then
premake.vstudio.toolset = ("ClangCL")
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-clang")
end
if "winstore82" == _OPTIONS["vs"] then
premake.vstudio.toolset = "v142"
premake.vstudio.storeapp = "10.0"
-- If needed, depending on GENie version, enable file-level configuration
if enablefilelevelconfig ~= nil then
enablefilelevelconfig()
end
local action = premake.action.current()
action.vstudio.windowsTargetPlatformVersion = windowsPlatform
platforms { "ARM" }
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-winstore82")
end
if "intel-15" == _OPTIONS["vs"] then
premake.vstudio.toolset = "Intel C++ Compiler XE 15.0"
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-intel")
end
elseif _ACTION == "xcode4" then
if "osx" == _OPTIONS["xcode"] then
premake.xcode.toolset = "macosx"
location (path.join(_buildDir, "projects", _ACTION .. "-osx"))
elseif "ios" == _OPTIONS["xcode"] then
premake.xcode.toolset = "iphoneos"
location (path.join(_buildDir, "projects", _ACTION .. "-ios"))
end
end
if (_OPTIONS["CC"] ~= nil) then
premake.gcc.cc = _OPTIONS["CC"]
end
if (_OPTIONS["CXX"] ~= nil) then
premake.gcc.cxx = _OPTIONS["CXX"]
end
if (_OPTIONS["LD"] ~= nil) then
premake.gcc.ld = _OPTIONS["LD"]
end
configuration {} -- reset configuration
configuration { "x32", "vs*" }
objdir (_buildDir .. _ACTION .. "/obj")
configuration { "x32", "vs*", "Release" }
targetdir (_buildDir .. _ACTION .. "/bin/x32/Release")
configuration { "x32", "vs*", "Debug" }
targetdir (_buildDir .. _ACTION .. "/bin/x32/Debug")
configuration { "x64", "vs*" }
defines { "_WIN64" }
objdir (_buildDir .. _ACTION .. "/obj")
configuration { "x64", "vs*", "Release" }
targetdir (_buildDir .. _ACTION .. "/bin/x64/Release")
configuration { "x64", "vs*", "Debug" }
targetdir (_buildDir .. _ACTION .. "/bin/x64/Debug")
configuration { "ARM", "vs*" }
targetdir (_buildDir .. _ACTION .. "/bin/ARM")
objdir (_buildDir .. _ACTION .. "/obj")
configuration { "ARM", "vs*", "Release" }
targetdir (_buildDir .. _ACTION .. "/bin/ARM/Release")
configuration { "ARM", "vs*", "Debug" }
targetdir (_buildDir .. _ACTION .. "/bin/ARM/Debug")
configuration { "x32", "vs*-clang" }
objdir (_buildDir .. _ACTION .. "-clang/obj")
configuration { "x32", "vs*-clang", "Release" }
targetdir (_buildDir .. _ACTION .. "-clang/bin/x32/Release")
configuration { "x32", "vs*-clang", "Debug" }
targetdir (_buildDir .. _ACTION .. "-clang/bin/x32/Debug")
configuration { "x64", "vs*-clang" }
objdir (_buildDir .. _ACTION .. "-clang/obj")
configuration { "x64", "vs*-clang", "Release" }
targetdir (_buildDir .. _ACTION .. "-clang/bin/x64/Release")
configuration { "x64", "vs*-clang", "Debug" }
targetdir (_buildDir .. _ACTION .. "-clang/bin/x64/Debug")
configuration { "vs*-clang" }
buildoptions {
"-Qunused-arguments",
}
configuration { "winphone8* or winstore8*" }
removeflags {
"StaticRuntime",
"NoExceptions",
}
flags {
"WinMain"
}
configuration { "mingw*" }
defines { "WIN32" }
configuration { "x32", "mingw32-gcc" }
objdir (_buildDir .. "mingw-gcc" .. "/obj")
buildoptions { "-m32" }
configuration { "x32", "mingw32-gcc", "Release" }
targetdir (_buildDir .. "mingw-gcc" .. "/bin/x32/Release")
configuration { "x32", "mingw32-gcc", "Debug" }
targetdir (_buildDir .. "mingw-gcc" .. "/bin/x32/Debug")
configuration { "x64", "mingw64-gcc" }
objdir (_buildDir .. "mingw-gcc" .. "/obj")
buildoptions { "-m64" }
configuration { "x64", "mingw64-gcc", "Release" }
targetdir (_buildDir .. "mingw-gcc" .. "/bin/x64/Release")
configuration { "x64", "mingw64-gcc", "Debug" }
targetdir (_buildDir .. "mingw-gcc" .. "/bin/x64/Debug")
configuration { "steamlink" }
objdir ( _buildDir .. "steamlink/obj")
defines {
"__STEAMLINK__=1", -- There is no special prefedined compiler symbol to detect SteamLink, faking it.
}
buildoptions {
"-marm",
"-mfloat-abi=hard",
"--sysroot=$(MARVELL_SDK_PATH)/rootfs",
}
linkoptions {
"-static-libgcc",
"-static-libstdc++",
"--sysroot=$(MARVELL_SDK_PATH)/rootfs",
}
configuration { "steamlink", "Release" }
targetdir (_buildDir .. "steamlink/bin/Release")
configuration { "steamlink", "Debug" }
targetdir (_buildDir .. "steamlink/bin/Debug")
configuration { "rpi" }
objdir ( _buildDir .. "rpi/obj")
libdirs {
"$(RASPBERRY_SYSROOT)/opt/vc/lib",
}
includedirs {
"$(RASPBERRY_SYSROOT)/opt/vc/include",
"$(RASPBERRY_SYSROOT)/opt/vc/include/interface/vcos/pthreads",
"$(RASPBERRY_SYSROOT)/opt/vc/include/interface/vmcs_host/linux",
}
defines {
"__VCCOREVER__=0x04000000", -- There is no special prefedined compiler symbol to detect RaspberryPi, faking it.
}
linkoptions {
"-Wl,--gc-sections",
}
buildoptions {
"--sysroot=$(RASPBERRY_SYSROOT)",
}
linkoptions {
"-static-libgcc",
"-static-libstdc++",
"--sysroot=$(RASPBERRY_SYSROOT)",
}
configuration { "rpi", "Release" }
targetdir (_buildDir .. "rpi/bin/Release")
configuration { "rpi", "Debug" }
targetdir (_buildDir .. "rpi/bin/Debug")
configuration { "ci20" }
objdir ( _buildDir .. "ci20/obj")
includedirs {
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/c++/4.9",
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/mipsel-linux-gnu/c++/4.9",
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/c++/4.9/backward",
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9/include",
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/local/include",
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9/include-fixed",
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/include/mipsel-linux-gnu",
"$(CI20_SYSROOT)/mipsel-r2-hard/usr/include",
}
links {
"c",
"dl",
"m",
"gcc",
"stdc++",
"gcc_s",
}
buildoptions {
"--sysroot=$(CI20_SYSROOT)",
"-Wno-pragmas",
"-Wno-undef",
"-EL",
"-mel",
"-march=mips32r2",
"-mllsc",
"-mabi=32",
}
linkoptions {
"--sysroot=$(CI20_SYSROOT)",
"-Wl,-rpath=$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/mipsel-linux-gnu/",
"-Wl,-rpath=$(CI20_SYSROOT)/mipsel-r2-hard/lib/mipsel-linux-gnu/",
"-nostdlib",
"-EL",
"-mel",
"-march=mips32r2",
"-mllsc",
"-mabi=32",
"$(MIPS_LINUXGNU_ROOT)/lib/gcc/mips-mti-linux-gnu/4.9.2/mipsel-r2-hard/lib/crtbegin.o",
"$(MIPS_LINUXGNU_ROOT)/lib/gcc/mips-mti-linux-gnu/4.9.2/mipsel-r2-hard/lib/crtend.o",
"-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/gcc/mipsel-linux-gnu/4.9",
"-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib/mipsel-linux-gnu",
"-L$(CI20_SYSROOT)/mipsel-r2-hard/usr/lib",
"-L$(CI20_SYSROOT)/mipsel-r2-hard/lib/mipsel-linux-gnu",
"-L$(CI20_SYSROOT)/mipsel-r2-hard/lib",
}
configuration { "ci20", "Release" }
targetdir (_buildDir .. "ci20/bin/Release")
configuration { "ci20", "Debug" }
targetdir (_buildDir .. "ci20/bin/Debug")
configuration { "mingw-clang" }
buildoptions {
"-femulated-tls",
}
linkoptions {
"-Wl,--allow-multiple-definition",
}
configuration { "x32", "mingw-clang" }
objdir ( _buildDir .. "mingw-clang/obj")
buildoptions { "-m32" }
configuration { "x32", "mingw-clang", "Release" }
targetdir (_buildDir .. "mingw-clang/bin/x32/Release")
configuration { "x32", "mingw-clang", "Debug" }
targetdir (_buildDir .. "mingw-clang/bin/x32/Debug")
configuration { "x64", "mingw-clang" }
objdir (_buildDir .. "mingw-clang/obj")
buildoptions { "-m64" }
configuration { "x64", "mingw-clang", "Release" }
targetdir (_buildDir .. "mingw-clang/bin/x64/Release")
configuration { "x64", "mingw-clang", "Debug" }
targetdir (_buildDir .. "mingw-clang/bin/x64/Debug")
configuration { "linux-gcc", "x32" }
objdir (_buildDir .. "linux_gcc" .. "/obj")
buildoptions {
"-m32",
}
configuration { "linux-gcc", "x32", "Release" }
targetdir (_buildDir .. "linux_gcc" .. "/bin/x32/Release")
configuration { "linux-gcc", "x32", "Debug" }
targetdir (_buildDir .. "linux_gcc" .. "/bin/x32/Debug")
configuration { "linux-gcc", "x64" }
objdir (_buildDir .. "linux_gcc" .. "/obj")
buildoptions {
"-m64",
}
configuration { "linux-gcc", "x64", "Release" }
targetdir (_buildDir .. "linux_gcc" .. "/bin/x64/Release")
configuration { "linux-gcc", "x64", "Debug" }
targetdir (_buildDir .. "linux_gcc" .. "/bin/x64/Debug")
configuration { "linux-clang", "x32" }
objdir (_buildDir .. "linux_clang" .. "/obj")
buildoptions {
"-m32",
}
configuration { "linux-clang", "x32", "Release" }
targetdir (_buildDir .. "linux_clang" .. "/bin/x32/Release")
configuration { "linux-clang", "x32", "Debug" }
targetdir (_buildDir .. "linux_clang" .. "/bin/x32/Debug")
configuration { "linux-clang", "x64" }
objdir (_buildDir .. "linux_clang" .. "/obj")
buildoptions {
"-m64",
}
configuration { "linux-clang", "x64", "Release" }
targetdir (_buildDir .. "linux_clang" .. "/bin/x64/Release")
configuration { "linux-clang", "x64", "Debug" }
targetdir (_buildDir .. "linux_clang" .. "/bin/x64/Debug")
configuration { "solaris", "x32" }
objdir (_buildDir .. "solaris" .. "/obj")
buildoptions {
"-m32",
}
configuration { "solaris", "x32", "Release" }
targetdir (_buildDir .. "solaris" .. "/bin/x32/Release")
configuration { "solaris", "x32", "Debug" }
targetdir (_buildDir .. "solaris" .. "/bin/x32/Debug")
configuration { "solaris", "x64" }
objdir (_buildDir .. "solaris" .. "/obj")
buildoptions {
"-m64",
}
configuration { "solaris", "x64", "Release" }
targetdir (_buildDir .. "solaris" .. "/bin/x64/Release")
configuration { "solaris", "x64", "Debug" }
targetdir (_buildDir .. "solaris" .. "/bin/x64/Debug")
configuration { "freebsd", "x32" }
objdir (_buildDir .. "freebsd" .. "/obj")
buildoptions {
"-m32",
}
configuration { "freebsd", "x32", "Release" }
targetdir (_buildDir .. "freebsd" .. "/bin/x32/Release")
configuration { "freebsd", "x32", "Debug" }
targetdir (_buildDir .. "freebsd" .. "/bin/x32/Debug")
configuration { "freebsd", "x64" }
objdir (_buildDir .. "freebsd" .. "/obj")
buildoptions {
"-m64",
}
configuration { "freebsd", "x64", "Release" }
targetdir (_buildDir .. "freebsd" .. "/bin/x64/Release")
configuration { "freebsd", "x64", "Debug" }
targetdir (_buildDir .. "freebsd" .. "/bin/x64/Debug")
configuration { "netbsd", "x32" }
objdir (_buildDir .. "netbsd" .. "/obj")
buildoptions {
"-m32",
}
configuration { "netbsd", "x32", "Release" }
targetdir (_buildDir .. "netbsd" .. "/bin/x32/Release")
configuration { "netbsd", "x32", "Debug" }
targetdir (_buildDir .. "netbsd" .. "/bin/x32/Debug")
configuration { "netbsd", "x64" }
objdir (_buildDir .. "netbsd" .. "/obj")
buildoptions {
"-m64",
}
configuration { "netbsd", "x64", "Release" }
targetdir (_buildDir .. "netbsd" .. "/bin/x64/Release")
configuration { "netbsd", "x64", "Debug" }
targetdir (_buildDir .. "netbsd" .. "/bin/x64/Debug")
configuration { "openbsd", "x32" }
objdir (_buildDir .. "openbsd" .. "/obj")
buildoptions {
"-m32",
}
configuration { "openbsd", "x32", "Release" }
targetdir (_buildDir .. "openbsd" .. "/bin/x32/Release")
configuration { "openbsd", "x32", "Debug" }
targetdir (_buildDir .. "openbsd" .. "/bin/x32/Debug")
configuration { "openbsd", "x64" }
objdir (_buildDir .. "openbsd" .. "/obj")
buildoptions {
"-m64",
}
configuration { "openbsd", "x64", "Release" }
targetdir (_buildDir .. "openbsd" .. "/bin/x64/Release")
configuration { "openbsd", "x64", "Debug" }
targetdir (_buildDir .. "openbsd" .. "/bin/x64/Debug")
configuration { "android-*", "Release" }
targetdir (_buildDir .. "android/bin/" .. _OPTIONS["PLATFORM"] .. "/Release")
configuration { "android-*", "Debug" }
targetdir (_buildDir .. "android/bin/" .. _OPTIONS["PLATFORM"] .. "/Debug")
configuration { "android-*" }
objdir (_buildDir .. "android/obj/" .. _OPTIONS["PLATFORM"])
includedirs {
MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos",
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include",
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/include",
"$(ANDROID_NDK_ROOT)/sysroot/usr/include",
"$(ANDROID_NDK_ROOT)/sources/android/support/include",
"$(ANDROID_NDK_ROOT)/sources/android/native_app_glue",
}
linkoptions {
"-nostdlib",
}
flags {
"NoImportLib",
}
links {
"c",
"dl",
"m",
"android",
"log",
"c++_static",
"c++abi",
"stdc++",
"gcc",
}
buildoptions_c {
"-Wno-strict-prototypes",
}
buildoptions {
"-fpic",
"-ffunction-sections",
"-funwind-tables",
"-fstack-protector-strong",
"-no-canonical-prefixes",
"-fno-integrated-as",
"-Wunused-value",
"-Wundef",
"-Wno-cast-align",
"-Wno-unknown-attributes",
"-Wno-macro-redefined",
"-DASIO_HAS_STD_STRING_VIEW",
"-Wno-unused-function",
}
linkoptions {
"-no-canonical-prefixes",
"-Wl,--no-undefined",
"-Wl,-z,noexecstack",
"-Wl,-z,relro",
"-Wl,-z,now",
}
configuration { "android-arm" }
libdirs {
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib",
}
includedirs {
"$(ANDROID_NDK_ROOT)/sysroot/usr/include/arm-linux-androideabi",
}
buildoptions {
"-gcc-toolchain $(ANDROID_NDK_ARM)",
"-target armv7-none-linux-androideabi",
"-march=armv7-a",
"-mfloat-abi=softfp",
"-mfpu=vfpv3-d16",
"-mthumb",
}
links {
"unwind",
}
linkoptions {
"-gcc-toolchain $(ANDROID_NDK_ARM)",
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtbegin_so.o",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtend_so.o",
"-target armv7-none-linux-androideabi",
"-march=armv7-a",
"-mthumb",
}
configuration { "android-arm64" }
libdirs {
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/arm64-v8a",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib64",
}
includedirs {
"$(ANDROID_NDK_ROOT)/sysroot/usr/include/aarch64-linux-android",
}
buildoptions {
"-gcc-toolchain $(ANDROID_NDK_ARM64)",
"-target aarch64-none-linux-android",
}
linkoptions {
"-gcc-toolchain $(ANDROID_NDK_ARM64)",
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib/crtbegin_so.o",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm64/usr/lib/crtend_so.o",
"-target aarch64-none-linux-android",
}
configuration { "android-x86" }
libdirs {
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/x86",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib",
}
includedirs {
"$(ANDROID_NDK_ROOT)/sysroot/usr/include/i686-linux-android",
}
buildoptions {
"-gcc-toolchain $(ANDROID_NDK_X86)",
"-target i686-none-linux-android",
"-mssse3"
}
linkoptions {
"-gcc-toolchain $(ANDROID_NDK_X86)",
"-target i686-none-linux-android",
"-mssse3",
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtbegin_so.o",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtend_so.o",
}
configuration { "android-x64" }
libdirs {
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/x86_64",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64",
}
includedirs {
"$(ANDROID_NDK_ROOT)/sysroot/usr/include/x86_64-linux-android",
}
buildoptions {
"-gcc-toolchain $(ANDROID_NDK_X64)",
"-target x86_64-none-linux-android",
}
linkoptions {
"-gcc-toolchain $(ANDROID_NDK_X64)",
"-target x86_64-none-linux-android",
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64/crtbegin_so.o",
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86_64/usr/lib64/crtend_so.o",
}
configuration { "asmjs" }
targetdir (_buildDir .. "asmjs" .. "/bin")
objdir (_buildDir .. "asmjs" .. "/obj")
includedirs {
"$(EMSCRIPTEN)/system/include",
"$(EMSCRIPTEN)/system/include/compat",
"$(EMSCRIPTEN)/system/include/libc",
"$(EMSCRIPTEN)/system/lib/libcxxabi/include",
}
buildoptions {
"-Wno-cast-align",
"-Wno-tautological-compare",
"-Wno-self-assign-field",
"-Wno-format-security",
"-Wno-inline-new-delete",
"-Wno-constant-logical-operand",
"-Wno-absolute-value",
"-Wno-unknown-warning-option",
"-Wno-extern-c-compat",
}
configuration { "pnacl" }
buildoptions {
"-U__STRICT_ANSI__", -- strcasecmp, setenv, unsetenv,...
"-fno-stack-protector",
"-fdiagnostics-show-option",
"-fdata-sections",
"-ffunction-sections",
"-Wunused-value",
}
configuration { "pnacl" }
buildoptions {
"-Wno-tautological-undefined-compare",
"-Wno-cast-align",
}
includedirs {
"$(NACL_SDK_ROOT)/include",
"$(NACL_SDK_ROOT)/include/pnacl",
}
configuration { "pnacl" }
targetdir (_buildDir .. "pnacl" .. "/bin")
objdir (_buildDir .. "pnacl" .. "/obj")
configuration { "pnacl", "Debug" }
libdirs { "$(NACL_SDK_ROOT)/lib/pnacl/Debug" }
configuration { "pnacl", "Release" }
libdirs { "$(NACL_SDK_ROOT)/lib/pnacl/Release" }
configuration { "osx*", "x32" }
objdir (_buildDir .. "osx_clang" .. "/obj")
buildoptions {
"-m32",
}
configuration { "osx*", "x32", "Release" }
targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Release")
configuration { "osx*", "x32", "Debug" }
targetdir (_buildDir .. "osx_clang" .. "/bin/x32/Debug")
configuration { "osx*", "x64" }
objdir (_buildDir .. "osx_clang" .. "/obj")
buildoptions {
"-m64", "-DHAVE_IMMINTRIN_H=1",
}
configuration { "osx*", "x64", "Release" }
targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Release")
configuration { "osx*", "x64", "Debug" }
targetdir (_buildDir .. "osx_clang" .. "/bin/x64/Debug")
configuration { "ios-arm" }
targetdir (_buildDir .. "ios-arm" .. "/bin")
objdir (_buildDir .. "ios-arm" .. "/obj")
configuration { "ios-simulator" }
targetdir (_buildDir .. "ios-simulator" .. "/bin")
objdir (_buildDir .. "ios-simulator" .. "/obj")
configuration { "rpi" }
targetdir (_buildDir .. "rpi" .. "/bin")
objdir (_buildDir .. "rpi" .. "/obj")
configuration {} -- reset configuration
return true
end
function strip()
if _OPTIONS["STRIP_SYMBOLS"]~="1" then
return true
end
configuration { "osx-*" }
postbuildcommands {
"$(SILENT) echo Stripping symbols.",
"$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] and toolchainPrefix) .. "strip \"$(TARGET)\"",
}
configuration { "android-*" }
postbuildcommands {
"$(SILENT) echo Stripping symbols.",
"$(SILENT) " .. toolchainPrefix .. "strip -s \"$(TARGET)\""
}
configuration { "linux-* or rpi" }
postbuildcommands {
"$(SILENT) echo Stripping symbols.",
"$(SILENT) strip -s \"$(TARGET)\""
}
configuration { "mingw*", "x64" }
postbuildcommands {
"$(SILENT) echo Stripping symbols.",
"$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] or "$(MINGW64)/bin/") .. "strip -s \"$(TARGET)\"",
}
configuration { "mingw*", "x32" }
postbuildcommands {
"$(SILENT) echo Stripping symbols.",
"$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] or "$(MINGW32)/bin/") .. "strip -s \"$(TARGET)\"",
}
configuration { "pnacl" }
postbuildcommands {
"$(SILENT) echo Running pnacl-finalize.",
"$(SILENT) " .. naclToolchain .. "finalize \"$(TARGET)\""
}
configuration { "asmjs" }
postbuildcommands {
"$(SILENT) echo Running asmjs finalize.",
"$(SILENT) $(EMSCRIPTEN)/emcc -O2 -s TOTAL_MEMORY=268435456 \"$(TARGET)\" -o \"$(TARGET)\".html"
-- ALLOW_MEMORY_GROWTH
}
configuration {} -- reset configuration
end
|