This Trac instance is not used for development anymore!

We migrated our development workflow to git and Gitea.
To test the future redirection, replace trac by ariadne in the page URL.

source: ps/trunk/build/premake/premake5/src/_premake_init.lua

Last change on this file was 24387, checked in by s0600204, 4 years ago

(1/2) Update premake5 to Alpha 15 - premake5 files

See CHANGES.txt below for the upstream-composed list of changes.

premake5.exe built by Stan

Accepted By: Stan (for Windows)
Trac Tickets: #5869
Differential Revision: https://code.wildfiregames.com/D3219

File size: 30.1 KB
Line 
1--
2-- _premake_init.lua
3--
4-- Prepares the runtime environment for the add-ons and user project scripts.
5--
6-- Copyright (c) 2012-2015 Jason Perkins and the Premake project
7--
8
9 local p = premake
10 local api = p.api
11
12 local DOC_URL = "See https://github.com/premake/premake-core/wiki/"
13
14
15-----------------------------------------------------------------------------
16--
17-- Register the core API functions.
18--
19-----------------------------------------------------------------------------
20
21 api.register {
22 name = "architecture",
23 scope = "config",
24 kind = "string",
25 allowed = {
26 "universal",
27 p.X86,
28 p.X86_64,
29 p.ARM,
30 p.ARM64,
31 },
32 aliases = {
33 i386 = p.X86,
34 amd64 = p.X86_64,
35 x32 = p.X86, -- these should be DEPRECATED
36 x64 = p.X86_64,
37 },
38 }
39
40 api.register {
41 name = "atl",
42 scope = "config",
43 kind = "string",
44 allowed = {
45 "Off",
46 "Dynamic",
47 "Static",
48 },
49 }
50
51 api.register {
52 name = "basedir",
53 scope = "project",
54 kind = "path"
55 }
56
57 api.register {
58 name = "buildaction",
59 scope = "config",
60 kind = "string",
61 }
62
63 api.register {
64 name = "buildcommands",
65 scope = { "config", "rule" },
66 kind = "list:string",
67 tokens = true,
68 pathVars = true,
69 }
70
71 api.register {
72 name = "buildcustomizations",
73 scope = "project",
74 kind = "list:string",
75 }
76
77 api.register {
78 name = "builddependencies",
79 scope = { "rule" },
80 kind = "list:string",
81 tokens = true,
82 pathVars = true,
83 }
84
85 api.register {
86 name = "buildlog",
87 scope = { "config" },
88 kind = "path",
89 tokens = true,
90 pathVars = true,
91 }
92
93 api.register {
94 name = "buildmessage",
95 scope = { "config", "rule" },
96 kind = "string",
97 tokens = true,
98 pathVars = true,
99 }
100
101 api.register {
102 name = "buildoptions",
103 scope = "config",
104 kind = "list:string",
105 tokens = true,
106 pathVars = true,
107 }
108
109 api.register {
110 name = "buildoutputs",
111 scope = { "config", "rule" },
112 kind = "list:path",
113 tokens = true,
114 pathVars = false,
115 }
116
117 api.register {
118 name = "buildinputs",
119 scope = "config",
120 kind = "list:path",
121 tokens = true,
122 pathVars = false,
123 }
124
125 api.register {
126 name = "buildrule", -- DEPRECATED
127 scope = "config",
128 kind = "table",
129 tokens = true,
130 }
131
132 api.register {
133 name = "characterset",
134 scope = "config",
135 kind = "string",
136 allowed = {
137 "Default",
138 "ASCII",
139 "MBCS",
140 "Unicode",
141 }
142 }
143
144 api.register {
145 name = "cleancommands",
146 scope = "config",
147 kind = "list:string",
148 tokens = true,
149 pathVars = true,
150 }
151
152 api.register {
153 name = "cleanextensions",
154 scope = "config",
155 kind = "list:string",
156 }
157
158 api.register {
159 name = "clr",
160 scope = "config",
161 kind = "string",
162 allowed = {
163 "Off",
164 "On",
165 "Pure",
166 "Safe",
167 "Unsafe",
168 }
169 }
170
171 api.register {
172 name = "compilebuildoutputs",
173 scope = "config",
174 kind = "boolean"
175 }
176
177 api.register {
178 name = "compileas",
179 scope = "config",
180 kind = "string",
181 allowed = {
182 "Default",
183 "C",
184 "C++",
185 "Objective-C",
186 "Objective-C++",
187 }
188 }
189
190 api.register {
191 name = "configmap",
192 scope = "project",
193 kind = "list:keyed:array:string",
194 }
195
196 api.register {
197 name = "configurations",
198 scope = "project",
199 kind = "list:string",
200 }
201
202 api.register {
203 name = "copylocal",
204 scope = "config",
205 kind = "list:mixed",
206 tokens = true,
207 }
208
209 api.register {
210 name = "debugargs",
211 scope = "config",
212 kind = "list:string",
213 tokens = true,
214 pathVars = true,
215 allowDuplicates = true,
216 }
217
218 api.register {
219 name = "debugcommand",
220 scope = "config",
221 kind = "path",
222 tokens = true,
223 pathVars = true,
224 }
225
226 api.register {
227 name = "debugconnectcommands",
228 scope = "config",
229 kind = "list:string",
230 tokens = true,
231 }
232
233 api.register {
234 name = "debugdir",
235 scope = "config",
236 kind = "path",
237 tokens = true,
238 pathVars = true,
239 }
240
241 api.register {
242 name = "debugenvs",
243 scope = "config",
244 kind = "list:string",
245 tokens = true,
246 pathVars = true,
247 }
248
249 api.register {
250 name = "debugextendedprotocol",
251 scope = "config",
252 kind = "boolean",
253 }
254
255 api.register {
256 name = "debugformat",
257 scope = "config",
258 kind = "string",
259 allowed = {
260 "Default",
261 "c7",
262 "Dwarf",
263 "SplitDwarf",
264 },
265 }
266
267 api.register {
268 name = "debugger",
269 scope = "config",
270 kind = "string",
271 allowed = {
272 "Default",
273 "GDB",
274 "LLDB",
275 }
276 }
277
278 api.register {
279 name = "debuggertype",
280 scope = "config",
281 kind = "string",
282 allowed = {
283 "Mixed",
284 "NativeOnly",
285 "ManagedOnly",
286 }
287 }
288
289 api.register {
290 name = "debugpathmap",
291 scope = "config",
292 kind = "list:keyed:path",
293 tokens = true,
294 }
295
296 api.register {
297 name = "debugport",
298 scope = "config",
299 kind = "integer",
300 }
301
302 api.register {
303 name = "debugremotehost",
304 scope = "config",
305 kind = "string",
306 tokens = true,
307 }
308
309 api.register {
310 name = "debugsearchpaths",
311 scope = "config",
312 kind = "list:path",
313 tokens = true,
314 }
315
316 api.register {
317 name = "debugstartupcommands",
318 scope = "config",
319 kind = "list:string",
320 tokens = true,
321 }
322
323 api.register {
324 name = "debugtoolargs",
325 scope = "config",
326 kind = "list:string",
327 tokens = true,
328 pathVars = true,
329 }
330
331 api.register {
332 name = "debugtoolcommand",
333 scope = "config",
334 kind = "path",
335 tokens = true,
336 pathVars = true,
337 }
338
339 api.register {
340 name = "defaultplatform",
341 scope = "project",
342 kind = "string",
343 }
344
345 api.register {
346 name = "defines",
347 scope = "config",
348 kind = "list:string",
349 tokens = true,
350 }
351
352 api.register {
353 name = "dependson",
354 scope = "config",
355 kind = "list:string",
356 tokens = true,
357 }
358
359 api.register {
360 name = "disablewarnings",
361 scope = "config",
362 kind = "list:string",
363 tokens = true,
364 }
365
366 api.register {
367 name = "display",
368 scope = "rule",
369 kind = "string",
370 }
371
372 api.register {
373 name = "dpiawareness",
374 scope = "config",
375 kind = "string",
376 allowed = {
377 "Default",
378 "None",
379 "High",
380 "HighPerMonitor",
381 }
382 }
383
384 api.register {
385 name = "editandcontinue",
386 scope = "config",
387 kind = "string",
388 allowed = {
389 "Default",
390 "On",
391 "Off",
392 },
393 }
394
395 api.register {
396 name = "exceptionhandling",
397 scope = "config",
398 kind = "string",
399 allowed = {
400 "Default",
401 "On",
402 "Off",
403 "SEH",
404 "CThrow",
405 },
406 }
407
408 api.register {
409 name = "enablewarnings",
410 scope = "config",
411 kind = "list:string",
412 tokens = true,
413 }
414
415 api.register {
416 name = "endian",
417 scope = "config",
418 kind = "string",
419 allowed = {
420 "Default",
421 "Little",
422 "Big",
423 },
424 }
425
426 api.register {
427 name = "entrypoint",
428 scope = "config",
429 kind = "string",
430 }
431
432 api.register {
433 name = "fatalwarnings",
434 scope = "config",
435 kind = "list:string",
436 tokens = true,
437 }
438
439 api.register {
440 name = "fileextension",
441 scope = "rule",
442 kind = "list:string",
443 }
444
445 api.register {
446 name = "filename",
447 scope = { "project", "rule" },
448 kind = "string",
449 tokens = true,
450 }
451
452 api.register {
453 name = "files",
454 scope = "config",
455 kind = "list:file",
456 tokens = true,
457 }
458
459 api.register {
460 name = "functionlevellinking",
461 scope = "config",
462 kind = "boolean"
463 }
464
465 api.register {
466 name = "flags",
467 scope = "config",
468 kind = "list:string",
469 allowed = {
470 "Component", -- DEPRECATED
471 "DebugEnvsDontMerge",
472 "DebugEnvsInherit",
473 "EnableSSE", -- DEPRECATED
474 "EnableSSE2", -- DEPRECATED
475 "ExcludeFromBuild",
476 "ExtraWarnings", -- DEPRECATED
477 "FatalCompileWarnings",
478 "FatalLinkWarnings",
479 "FloatFast", -- DEPRECATED
480 "FloatStrict", -- DEPRECATED
481 "LinkTimeOptimization",
482 "Managed", -- DEPRECATED
483 "Maps",
484 "MFC",
485 "MultiProcessorCompile",
486 "NativeWChar", -- DEPRECATED
487 "No64BitChecks",
488 "NoCopyLocal",
489 "NoEditAndContinue", -- DEPRECATED
490 "NoFramePointer", -- DEPRECATED
491 "NoImplicitLink",
492 "NoImportLib",
493 "NoIncrementalLink",
494 "NoManifest",
495 "NoMinimalRebuild",
496 "NoNativeWChar", -- DEPRECATED
497 "NoPCH",
498 "NoRuntimeChecks",
499 "NoBufferSecurityCheck",
500 "NoWarnings", -- DEPRECATED
501 "OmitDefaultLibrary",
502 "Optimize", -- DEPRECATED
503 "OptimizeSize", -- DEPRECATED
504 "OptimizeSpeed", -- DEPRECATED
505 "RelativeLinks",
506 "ReleaseRuntime", -- DEPRECATED
507 "ShadowedVariables",
508 "StaticRuntime", -- DEPRECATED
509 "Symbols", -- DEPRECATED
510 "UndefinedIdentifiers",
511 "WinMain", -- DEPRECATED
512 "WPF",
513 "C++11", -- DEPRECATED
514 "C++14", -- DEPRECATED
515 "C90", -- DEPRECATED
516 "C99", -- DEPRECATED
517 "C11", -- DEPRECATED
518 },
519 aliases = {
520 FatalWarnings = { "FatalWarnings", "FatalCompileWarnings", "FatalLinkWarnings" },
521 Optimise = 'Optimize',
522 OptimiseSize = 'OptimizeSize',
523 OptimiseSpeed = 'OptimizeSpeed',
524 },
525 }
526
527 api.register {
528 name = "floatingpoint",
529 scope = "config",
530 kind = "string",
531 allowed = {
532 "Default",
533 "Fast",
534 "Strict",
535 }
536 }
537
538 api.register {
539 name = "floatingpointexceptions",
540 scope = "config",
541 kind = "boolean"
542 }
543
544 api.register {
545 name = "inlining",
546 scope = "config",
547 kind = "string",
548 allowed = {
549 "Default",
550 "Disabled",
551 "Explicit",
552 "Auto"
553 }
554 }
555
556 api.register {
557 name = "callingconvention",
558 scope = "config",
559 kind = "string",
560 allowed = {
561 "Cdecl",
562 "FastCall",
563 "StdCall",
564 "VectorCall",
565 }
566 }
567
568 api.register {
569 name = "forceincludes",
570 scope = "config",
571 kind = "list:mixed",
572 tokens = true,
573 }
574
575 api.register {
576 name = "forceusings",
577 scope = "config",
578 kind = "list:file",
579 tokens = true,
580 }
581
582 api.register {
583 name = "fpu",
584 scope = "config",
585 kind = "string",
586 allowed = {
587 "Software",
588 "Hardware",
589 }
590 }
591
592 api.register {
593 name = "dotnetframework",
594 scope = "config",
595 kind = "string",
596 }
597
598 api.register {
599 name = "enabledefaultcompileitems",
600 scope = "config",
601 kind = "boolean",
602 default = false
603 }
604
605 api.register {
606 name = "csversion",
607 scope = "config",
608 kind = "string",
609 }
610
611 api.register {
612 name = "gccprefix",
613 scope = "config",
614 kind = "string",
615 tokens = true,
616 }
617
618 api.register {
619 name = "ignoredefaultlibraries",
620 scope = "config",
621 kind = "list:mixed",
622 tokens = true,
623 }
624
625 api.register {
626 name = "icon",
627 scope = "project",
628 kind = "file",
629 tokens = true,
630 }
631
632 api.register {
633 name = "imageoptions",
634 scope = "config",
635 kind = "list:string",
636 tokens = true,
637 }
638
639 api.register {
640 name = "imagepath",
641 scope = "config",
642 kind = "path",
643 tokens = true,
644 }
645
646 api.register {
647 name = "implibdir",
648 scope = "config",
649 kind = "path",
650 tokens = true,
651 }
652
653 api.register {
654 name = "implibextension",
655 scope = "config",
656 kind = "string",
657 tokens = true,
658 }
659
660 api.register {
661 name = "implibname",
662 scope = "config",
663 kind = "string",
664 tokens = true,
665 }
666
667 api.register {
668 name = "implibprefix",
669 scope = "config",
670 kind = "string",
671 tokens = true,
672 }
673
674 api.register {
675 name = "implibsuffix",
676 scope = "config",
677 kind = "string",
678 tokens = true,
679 }
680
681 api.register {
682 name = "includedirs",
683 scope = "config",
684 kind = "list:directory",
685 tokens = true,
686 }
687
688 api.register {
689 name = "intrinsics",
690 scope = "config",
691 kind = "boolean"
692 }
693
694 api.register {
695 name = "bindirs",
696 scope = "config",
697 kind = "list:directory",
698 tokens = true,
699 }
700
701 api.register {
702 name = "kind",
703 scope = "config",
704 kind = "string",
705 allowed = {
706 "ConsoleApp",
707 "Makefile",
708 "None",
709 "SharedLib",
710 "StaticLib",
711 "WindowedApp",
712 "Utility",
713 "SharedItems",
714 },
715 }
716
717 api.register {
718 name = "sharedlibtype",
719 scope = "project",
720 kind = "string",
721 allowed = {
722 "OSXBundle",
723 "OSXFramework",
724 "XCTest",
725 },
726 }
727
728 api.register {
729 name = "language",
730 scope = "project",
731 kind = "string",
732 allowed = {
733 "C",
734 "C++",
735 "C#",
736 "F#"
737 }
738 }
739
740 api.register {
741 name = "cdialect",
742 scope = "config",
743 kind = "string",
744 allowed = {
745 "Default",
746 "C89",
747 "C90",
748 "C99",
749 "C11",
750 "gnu89",
751 "gnu90",
752 "gnu99",
753 "gnu11",
754 }
755 }
756
757 api.register {
758 name = "cppdialect",
759 scope = "config",
760 kind = "string",
761 allowed = {
762 "Default",
763 "C++latest",
764 "C++98",
765 "C++0x",
766 "C++11",
767 "C++1y",
768 "C++14",
769 "C++1z",
770 "C++17",
771 "gnu++98",
772 "gnu++0x",
773 "gnu++11",
774 "gnu++1y",
775 "gnu++14",
776 "gnu++1z",
777 "gnu++17",
778 }
779 }
780
781 api.register {
782 name = "libdirs",
783 scope = "config",
784 kind = "list:directory",
785 tokens = true,
786 }
787
788 api.register {
789 name = "frameworkdirs",
790 scope = "config",
791 kind = "list:directory",
792 tokens = true,
793 }
794
795 api.register {
796 name = "linkbuildoutputs",
797 scope = "config",
798 kind = "boolean"
799 }
800
801 api.register {
802 name = "linkoptions",
803 scope = "config",
804 kind = "list:string",
805 tokens = true,
806 }
807
808 api.register {
809 name = "links",
810 scope = "config",
811 kind = "list:mixed",
812 tokens = true,
813 }
814
815 api.register {
816 name = "linkgroups",
817 scope = "config",
818 kind = "string",
819 allowed = {
820 "Off",
821 "On",
822 }
823 }
824
825 api.register {
826 name = "locale",
827 scope = "config",
828 kind = "string",
829 tokens = false,
830 }
831
832 api.register {
833 name = "location",
834 scope = { "project", "rule" },
835 kind = "path",
836 tokens = true,
837 }
838
839 api.register {
840 name = "makesettings",
841 scope = "config",
842 kind = "list:string",
843 tokens = true,
844 }
845
846 api.register {
847 name = "namespace",
848 scope = "project",
849 kind = "string",
850 tokens = true,
851 }
852
853 api.register {
854 name = "nativewchar",
855 scope = "config",
856 kind = "string",
857 allowed = {
858 "Default",
859 "On",
860 "Off",
861 }
862 }
863
864 api.register {
865 name = "nuget",
866 scope = "config",
867 kind = "list:string",
868 tokens = true,
869 }
870
871 api.register {
872 name = "nugetsource",
873 scope = "project",
874 kind = "string",
875 tokens = true,
876 }
877
878 api.register {
879 name = "objdir",
880 scope = "config",
881 kind = "path",
882 tokens = true,
883 }
884
885 api.register {
886 name = "optimize",
887 scope = "config",
888 kind = "string",
889 allowed = {
890 "Off",
891 "On",
892 "Debug",
893 "Size",
894 "Speed",
895 "Full",
896 }
897 }
898
899 api.register {
900 name = "runpathdirs",
901 scope = "config",
902 kind = "list:path",
903 tokens = true,
904 }
905
906 api.register {
907 name = "runtime",
908 scope = "config",
909 kind = "string",
910 allowed = {
911 "Debug",
912 "Release",
913 }
914 }
915
916 api.register {
917 name = "pchheader",
918 scope = "config",
919 kind = "string",
920 tokens = true,
921 }
922
923 api.register {
924 name = "pchsource",
925 scope = "config",
926 kind = "path",
927 tokens = true,
928 }
929
930 api.register {
931 name = "pic",
932 scope = "config",
933 kind = "string",
934 allowed = {
935 "Off",
936 "On",
937 }
938 }
939
940 api.register {
941 name = "platforms",
942 scope = "project",
943 kind = "list:string",
944 }
945
946 api.register {
947 name = "postbuildcommands",
948 scope = "config",
949 kind = "list:string",
950 tokens = true,
951 pathVars = true,
952 allowDuplicates = true,
953 }
954
955 api.register {
956 name = "postbuildmessage",
957 scope = "config",
958 kind = "string",
959 tokens = true,
960 pathVars = true,
961 }
962
963 api.register {
964 name = "prebuildcommands",
965 scope = "config",
966 kind = "list:string",
967 tokens = true,
968 pathVars = true,
969 allowDuplicates = true,
970 }
971
972 api.register {
973 name = "prebuildmessage",
974 scope = "config",
975 kind = "string",
976 tokens = true,
977 pathVars = true,
978 }
979
980 api.register {
981 name = "prelinkcommands",
982 scope = "config",
983 kind = "list:string",
984 tokens = true,
985 pathVars = true,
986 }
987
988 api.register {
989 name = "prelinkmessage",
990 scope = "config",
991 kind = "string",
992 tokens = true,
993 pathVars = true,
994 }
995
996 api.register {
997 name = "propertydefinition",
998 scope = "rule",
999 kind = "list:table",
1000 }
1001
1002 api.register {
1003 name = "rebuildcommands",
1004 scope = "config",
1005 kind = "list:string",
1006 tokens = true,
1007 pathVars = true,
1008 }
1009
1010 api.register {
1011 name = "resdefines",
1012 scope = "config",
1013 kind = "list:string",
1014 tokens = true,
1015 }
1016
1017 api.register {
1018 name = "resincludedirs",
1019 scope = "config",
1020 kind = "list:directory",
1021 tokens = true,
1022 }
1023
1024 api.register {
1025 name = "resoptions",
1026 scope = "config",
1027 kind = "list:string",
1028 tokens = true,
1029 }
1030
1031 api.register {
1032 name = "resourcegenerator",
1033 scope = "project",
1034 kind = "string",
1035 allowed = {
1036 "internal",
1037 "public"
1038 }
1039 }
1040
1041 api.register {
1042 name = "rtti",
1043 scope = "config",
1044 kind = "string",
1045 allowed = {
1046 "Default",
1047 "On",
1048 "Off",
1049 },
1050 }
1051
1052 api.register {
1053 name = "rules",
1054 scope = "project",
1055 kind = "list:string",
1056 }
1057
1058 api.register {
1059 name = "startproject",
1060 scope = "workspace",
1061 kind = "string",
1062 tokens = true,
1063 }
1064
1065 api.register {
1066 name = "staticruntime",
1067 scope = "config",
1068 kind = "string",
1069 allowed = {
1070 "Default",
1071 "On",
1072 "Off"
1073 }
1074 }
1075
1076 api.register {
1077 name = "strictaliasing",
1078 scope = "config",
1079 kind = "string",
1080 allowed = {
1081 "Off",
1082 "Level1",
1083 "Level2",
1084 "Level3",
1085 }
1086 }
1087
1088 api.register {
1089 name = "stringpooling",
1090 scope = "config",
1091 kind = "boolean"
1092 }
1093
1094 api.register {
1095 name = "symbols",
1096 scope = "config",
1097 kind = "string",
1098 allowed = {
1099 "Default",
1100 "On",
1101 "Off",
1102 "FastLink", -- Visual Studio 2015+ only, considered 'On' for all other cases.
1103 "Full", -- Visual Studio 2017+ only, considered 'On' for all other cases.
1104 },
1105 }
1106
1107 api.register {
1108 name = "symbolspath",
1109 scope = "config",
1110 kind = "path",
1111 tokens = true,
1112 }
1113
1114 api.register {
1115 name = "sysincludedirs",
1116 scope = "config",
1117 kind = "list:directory",
1118 tokens = true,
1119 }
1120
1121 api.register {
1122 name = "syslibdirs",
1123 scope = "config",
1124 kind = "list:directory",
1125 tokens = true,
1126 }
1127
1128 api.register {
1129 name = "system",
1130 scope = "config",
1131 kind = "string",
1132 allowed = {
1133 "aix",
1134 "bsd",
1135 "haiku",
1136 "ios",
1137 "linux",
1138 "macosx",
1139 "solaris",
1140 "wii",
1141 "windows",
1142 },
1143 }
1144
1145 api.register {
1146 name = "systemversion",
1147 scope = "config",
1148 kind = "string",
1149 }
1150
1151 api.register {
1152 name = "tags",
1153 scope = "config",
1154 kind = "list:string",
1155 }
1156
1157 api.register {
1158 name = "tailcalls",
1159 scope = "config",
1160 kind = "boolean"
1161 }
1162
1163 api.register {
1164 name = "targetdir",
1165 scope = "config",
1166 kind = "path",
1167 tokens = true,
1168 }
1169
1170 api.register {
1171 name = "targetextension",
1172 scope = "config",
1173 kind = "string",
1174 tokens = true,
1175 }
1176
1177 api.register {
1178 name = "targetname",
1179 scope = "config",
1180 kind = "string",
1181 tokens = true,
1182 }
1183
1184 api.register {
1185 name = "targetprefix",
1186 scope = "config",
1187 kind = "string",
1188 tokens = true,
1189 }
1190
1191 api.register {
1192 name = "targetsuffix",
1193 scope = "config",
1194 kind = "string",
1195 tokens = true,
1196 }
1197
1198 api.register {
1199 name = "toolset",
1200 scope = "config",
1201 kind = "string",
1202 allowed = function(value)
1203 value = value:lower()
1204 local tool, version = p.tools.canonical(value)
1205 if tool then
1206 return p.tools.normalize(value)
1207 else
1208 return nil
1209 end
1210 end,
1211 }
1212
1213 api.register {
1214 name = "customtoolnamespace",
1215 scope = "config",
1216 kind = "string",
1217 }
1218
1219 api.register {
1220 name = "undefines",
1221 scope = "config",
1222 kind = "list:string",
1223 tokens = true,
1224 }
1225
1226 api.register {
1227 name = "usingdirs",
1228 scope = "config",
1229 kind = "list:directory",
1230 tokens = true,
1231 }
1232
1233 api.register {
1234 name = "uuid",
1235 scope = "project",
1236 kind = "string",
1237 allowed = function(value)
1238 local ok = true
1239 if (#value ~= 36) then ok = false end
1240 for i=1,36 do
1241 local ch = value:sub(i,i)
1242 if (not ch:find("[ABCDEFabcdef0123456789-]")) then ok = false end
1243 end
1244 if (value:sub(9,9) ~= "-") then ok = false end
1245 if (value:sub(14,14) ~= "-") then ok = false end
1246 if (value:sub(19,19) ~= "-") then ok = false end
1247 if (value:sub(24,24) ~= "-") then ok = false end
1248 if (not ok) then
1249 return nil, "invalid UUID"
1250 end
1251 return value:upper()
1252 end
1253 }
1254
1255 api.register {
1256 name = "vectorextensions",
1257 scope = "config",
1258 kind = "string",
1259 allowed = {
1260 "Default",
1261 "AVX",
1262 "AVX2",
1263 "IA32",
1264 "SSE",
1265 "SSE2",
1266 "SSE3",
1267 "SSSE3",
1268 "SSE4.1",
1269 }
1270 }
1271
1272 api.register {
1273 name = "isaextensions",
1274 scope = "config",
1275 kind = "list:string",
1276 allowed = {
1277 "MOVBE",
1278 "POPCNT",
1279 "PCLMUL",
1280 "LZCNT",
1281 "BMI",
1282 "BMI2",
1283 "F16C",
1284 "AES",
1285 "FMA",
1286 "FMA4",
1287 "RDRND",
1288 }
1289 }
1290
1291 api.register {
1292 name = "vpaths",
1293 scope = "project",
1294 kind = "list:keyed:list:path",
1295 tokens = true,
1296 pathVars = true,
1297 }
1298
1299 api.register {
1300 name = "warnings",
1301 scope = "config",
1302 kind = "string",
1303 allowed = {
1304 "Off",
1305 "Default",
1306 "High",
1307 "Extra",
1308 }
1309 }
1310
1311 api.register {
1312 name = "largeaddressaware",
1313 scope = "config",
1314 kind = "boolean",
1315 }
1316
1317 api.register {
1318 name = "editorintegration",
1319 scope = "workspace",
1320 kind = "boolean",
1321 }
1322
1323 api.register {
1324 name = "preferredtoolarchitecture",
1325 scope = "workspace",
1326 kind = "string",
1327 allowed = {
1328 "Default",
1329 p.X86,
1330 p.X86_64,
1331 }
1332 }
1333
1334 api.register {
1335 name = "unsignedchar",
1336 scope = "config",
1337 kind = "boolean",
1338 }
1339
1340 p.api.register {
1341 name = "structmemberalign",
1342 scope = "config",
1343 kind = "integer",
1344 allowed = {
1345 "1",
1346 "2",
1347 "4",
1348 "8",
1349 "16",
1350 }
1351 }
1352
1353 api.register {
1354 name = "omitframepointer",
1355 scope = "config",
1356 kind = "string",
1357 allowed = {
1358 "Default",
1359 "On",
1360 "Off"
1361 }
1362 }
1363
1364 api.register {
1365 name = "visibility",
1366 scope = "config",
1367 kind = "string",
1368 allowed = {
1369 "Default",
1370 "Hidden",
1371 "Internal",
1372 "Protected"
1373 }
1374 }
1375
1376 api.register {
1377 name = "inlinesvisibility",
1378 scope = "config",
1379 kind = "string",
1380 allowed = {
1381 "Default",
1382 "Hidden"
1383 }
1384 }
1385
1386 api.register {
1387 name = "assemblydebug",
1388 scope = "config",
1389 kind = "boolean"
1390 }
1391
1392-----------------------------------------------------------------------------
1393--
1394-- Field name aliases for backward compatibility
1395--
1396-----------------------------------------------------------------------------
1397
1398 api.alias("buildcommands", "buildCommands")
1399 api.alias("builddependencies", "buildDependencies")
1400 api.alias("buildmessage", "buildMessage")
1401 api.alias("buildoutputs", "buildOutputs")
1402 api.alias("cleanextensions", "cleanExtensions")
1403 api.alias("dotnetframework", "framework")
1404 api.alias("editandcontinue", "editAndContinue")
1405 api.alias("fileextension", "fileExtension")
1406 api.alias("propertydefinition", "propertyDefinition")
1407 api.alias("removefiles", "excludes")
1408
1409
1410-----------------------------------------------------------------------------
1411--
1412-- Handlers for deprecated fields and values.
1413--
1414-----------------------------------------------------------------------------
1415
1416 -- 13 Apr 2017
1417
1418 api.deprecateField("buildrule", 'Use `buildcommands`, `buildoutputs`, and `buildmessage` instead.',
1419 function(value)
1420 if value.description then
1421 buildmessage(value.description)
1422 end
1423 buildcommands(value.commands)
1424 buildoutputs(value.outputs)
1425 end)
1426
1427
1428 api.deprecateValue("flags", "Component", 'Use `buildaction "Component"` instead.',
1429 function(value)
1430 buildaction "Component"
1431 end)
1432
1433
1434 api.deprecateValue("flags", "EnableSSE", 'Use `vectorextensions "SSE"` instead.',
1435 function(value)
1436 vectorextensions("SSE")
1437 end,
1438 function(value)
1439 vectorextensions "Default"
1440 end)
1441
1442
1443 api.deprecateValue("flags", "EnableSSE2", 'Use `vectorextensions "SSE2"` instead.',
1444 function(value)
1445 vectorextensions("SSE2")
1446 end,
1447 function(value)
1448 vectorextensions "Default"
1449 end)
1450
1451
1452 api.deprecateValue("flags", "FloatFast", 'Use `floatingpoint "Fast"` instead.',
1453 function(value)
1454 floatingpoint("Fast")
1455 end,
1456 function(value)
1457 floatingpoint "Default"
1458 end)
1459
1460
1461 api.deprecateValue("flags", "FloatStrict", 'Use `floatingpoint "Strict"` instead.',
1462 function(value)
1463 floatingpoint("Strict")
1464 end,
1465 function(value)
1466 floatingpoint "Default"
1467 end)
1468
1469
1470 api.deprecateValue("flags", "NativeWChar", 'Use `nativewchar "On"` instead."',
1471 function(value)
1472 nativewchar("On")
1473 end,
1474 function(value)
1475 nativewchar "Default"
1476 end)
1477
1478
1479 api.deprecateValue("flags", "NoNativeWChar", 'Use `nativewchar "Off"` instead."',
1480 function(value)
1481 nativewchar("Off")
1482 end,
1483 function(value)
1484 nativewchar "Default"
1485 end)
1486
1487
1488 api.deprecateValue("flags", "Optimize", 'Use `optimize "On"` instead.',
1489 function(value)
1490 optimize ("On")
1491 end,
1492 function(value)
1493 optimize "Off"
1494 end)
1495
1496
1497 api.deprecateValue("flags", "OptimizeSize", 'Use `optimize "Size"` instead.',
1498 function(value)
1499 optimize ("Size")
1500 end,
1501 function(value)
1502 optimize "Off"
1503 end)
1504
1505
1506 api.deprecateValue("flags", "OptimizeSpeed", 'Use `optimize "Speed"` instead.',
1507 function(value)
1508 optimize ("Speed")
1509 end,
1510 function(value)
1511 optimize "Off"
1512 end)
1513
1514
1515 api.deprecateValue("flags", "ReleaseRuntime", 'Use `runtime "Release"` instead.',
1516 function(value)
1517 runtime "Release"
1518 end,
1519 function(value)
1520 end)
1521
1522
1523 api.deprecateValue("flags", "ExtraWarnings", 'Use `warnings "Extra"` instead.',
1524 function(value)
1525 warnings "Extra"
1526 end,
1527 function(value)
1528 warnings "Default"
1529 end)
1530
1531
1532 api.deprecateValue("flags", "NoWarnings", 'Use `warnings "Off"` instead.',
1533 function(value)
1534 warnings "Off"
1535 end,
1536 function(value)
1537 warnings "Default"
1538 end)
1539
1540 api.deprecateValue("flags", "Managed", 'Use `clr "On"` instead.',
1541 function(value)
1542 clr "On"
1543 end,
1544 function(value)
1545 clr "Off"
1546 end)
1547
1548
1549 api.deprecateValue("flags", "NoEditAndContinue", 'Use editandcontinue "Off"` instead.',
1550 function(value)
1551 editandcontinue "Off"
1552 end,
1553 function(value)
1554 editandcontinue "On"
1555 end)
1556
1557
1558 -- 21 June 2016
1559
1560 api.deprecateValue("flags", "Symbols", 'Use `symbols "On"` instead',
1561 function(value)
1562 symbols "On"
1563 end,
1564 function(value)
1565 symbols "Default"
1566 end)
1567
1568
1569 -- 31 January 2017
1570
1571 api.deprecateValue("flags", "C++11", 'Use `cppdialect "C++11"` instead',
1572 function(value)
1573 cppdialect "C++11"
1574 end,
1575 function(value)
1576 cppdialect "Default"
1577 end)
1578
1579 api.deprecateValue("flags", "C++14", 'Use `cppdialect "C++14"` instead',
1580 function(value)
1581 cppdialect "C++14"
1582 end,
1583 function(value)
1584 cppdialect "Default"
1585 end)
1586
1587 api.deprecateValue("flags", "C90", 'Use `cdialect "gnu90"` instead',
1588 function(value)
1589 cdialect "gnu90"
1590 end,
1591 function(value)
1592 cdialect "Default"
1593 end)
1594
1595 api.deprecateValue("flags", "C99", 'Use `cdialect "gnu99"` instead',
1596 function(value)
1597 cdialect "gnu99"
1598 end,
1599 function(value)
1600 cdialect "Default"
1601 end)
1602
1603 api.deprecateValue("flags", "C11", 'Use `cdialect "gnu11"` instead',
1604 function(value)
1605 cdialect "gnu11"
1606 end,
1607 function(value)
1608 cdialect "Default"
1609 end)
1610
1611
1612 -- 13 April 2017
1613
1614 api.deprecateValue("flags", "WinMain", 'Use `entrypoint "WinMainCRTStartup"` instead',
1615 function(value)
1616 entrypoint "WinMainCRTStartup"
1617 end,
1618 function(value)
1619 entrypoint "mainCRTStartup"
1620 end)
1621
1622 -- 31 October 2017
1623
1624 api.deprecateValue("flags", "StaticRuntime", 'Use `staticruntime "On"` instead',
1625 function(value)
1626 staticruntime "On"
1627 end,
1628 function(value)
1629 staticruntime "Default"
1630 end)
1631
1632 -- 08 April 2018
1633
1634 api.deprecateValue("flags", "NoFramePointer", 'Use `omitframepointer "On"` instead.',
1635 function(value)
1636 omitframepointer("On")
1637 end,
1638 function(value)
1639 omitframepointer("Default")
1640 end)
1641
1642-----------------------------------------------------------------------------
1643--
1644-- Install Premake's default set of command line arguments.
1645--
1646-----------------------------------------------------------------------------
1647
1648 newoption
1649 {
1650 category = "compilers",
1651 trigger = "cc",
1652 value = "VALUE",
1653 description = "Choose a C/C++ compiler set",
1654 allowed = {
1655 { "clang", "Clang (clang)" },
1656 { "gcc", "GNU GCC (gcc/g++)" },
1657 { "mingw", "MinGW GCC (gcc/g++)" },
1658 }
1659 }
1660
1661 newoption
1662 {
1663 category = "compilers",
1664 trigger = "dotnet",
1665 value = "VALUE",
1666 description = "Choose a .NET compiler set",
1667 allowed = {
1668 { "msnet", "Microsoft .NET (csc)" },
1669 { "mono", "Novell Mono (mcs)" },
1670 { "pnet", "Portable.NET (cscc)" },
1671 }
1672 }
1673
1674 newoption
1675 {
1676 trigger = "fatal",
1677 description = "Treat warnings from project scripts as errors"
1678 }
1679
1680 newoption
1681 {
1682 trigger = "debugger",
1683 description = "Start MobDebug remote debugger. Works with ZeroBrane Studio"
1684 }
1685
1686 newoption
1687 {
1688 trigger = "file",
1689 value = "FILE",
1690 description = "Read FILE as a Premake script; default is 'premake5.lua'"
1691 }
1692
1693 newoption
1694 {
1695 trigger = "help",
1696 description = "Display this information"
1697 }
1698
1699 newoption
1700 {
1701 trigger = "verbose",
1702 description = "Generate extra debug text output"
1703 }
1704
1705 newoption
1706 {
1707 trigger = "interactive",
1708 description = "Interactive command prompt"
1709 }
1710
1711 newoption
1712 {
1713 trigger = "os",
1714 value = "VALUE",
1715 description = "Generate files for a different operating system",
1716 allowed = {
1717 { "aix", "IBM AIX" },
1718 { "bsd", "OpenBSD, NetBSD, or FreeBSD" },
1719 { "haiku", "Haiku" },
1720 { "hurd", "GNU/Hurd" },
1721 { "ios", "iOS" },
1722 { "linux", "Linux" },
1723 { "macosx", "Apple Mac OS X" },
1724 { "solaris", "Solaris" },
1725 { "windows", "Microsoft Windows" },
1726 }
1727 }
1728
1729 newoption
1730 {
1731 trigger = "scripts",
1732 value = "PATH",
1733 description = "Search for additional scripts on the given path"
1734 }
1735
1736 newoption
1737 {
1738 trigger = "systemscript",
1739 value = "FILE",
1740 description = "Override default system script (premake5-system.lua)"
1741 }
1742
1743 newoption
1744 {
1745 trigger = "version",
1746 description = "Display version information"
1747 }
1748
1749 if http ~= nil then
1750 newoption {
1751 trigger = "insecure",
1752 description = "forfit SSH certification checks."
1753 }
1754 end
1755
1756
1757-----------------------------------------------------------------------------
1758--
1759-- Set up the global environment for the systems I know about. I would like
1760-- to see at least some if not all of this moved into add-ons in the future.
1761--
1762-----------------------------------------------------------------------------
1763
1764 characterset "Default"
1765 clr "Off"
1766 editorintegration "Off"
1767 exceptionhandling "Default"
1768 rtti "Default"
1769 symbols "Default"
1770 nugetsource "https://api.nuget.org/v3/index.json"
1771
1772 -- Setting a default language makes some validation easier later
1773
1774 language "C++"
1775
1776 -- Use Posix-style target naming by default, since it is the most common.
1777
1778 filter { "kind:SharedLib" }
1779 targetprefix "lib"
1780 targetextension ".so"
1781
1782 filter { "kind:StaticLib" }
1783 targetprefix "lib"
1784 targetextension ".a"
1785
1786 -- Add variations for other Posix-like systems.
1787
1788 filter { "system:darwin", "kind:WindowedApp" }
1789 targetextension ".app"
1790
1791 filter { "system:darwin", "kind:SharedLib" }
1792 targetextension ".dylib"
1793
1794 filter { "system:darwin", "kind:SharedLib", "sharedlibtype:OSXBundle" }
1795 targetprefix ""
1796 targetextension ".bundle"
1797
1798 filter { "system:darwin", "kind:SharedLib", "sharedlibtype:OSXFramework" }
1799 targetprefix ""
1800 targetextension ".framework"
1801
1802 filter { "system:darwin", "kind:SharedLib", "sharedlibtype:XCTest" }
1803 targetprefix ""
1804 targetextension ".xctest"
1805
1806 -- Windows and friends.
1807
1808 filter { "system:Windows or language:C# or language:F#", "kind:ConsoleApp or WindowedApp" }
1809 targetextension ".exe"
1810
1811 filter { "system:Windows", "kind:SharedLib" }
1812 targetprefix ""
1813 targetextension ".dll"
1814 implibextension ".lib"
1815
1816 filter { "system:Windows", "kind:StaticLib" }
1817 targetprefix ""
1818 targetextension ".lib"
1819
1820 filter { "language:C# or language:F#", "kind:SharedLib" }
1821 targetprefix ""
1822 targetextension ".dll"
1823 implibextension ".dll"
1824
1825 filter { "kind:SharedLib", "system:not Windows" }
1826 pic "On"
1827
1828 filter { "system:darwin" }
1829 toolset "clang"
1830
1831 filter { "platforms:Win64" }
1832 architecture "x86_64"
1833
1834 filter {}
Note: See TracBrowser for help on using the repository browser.