-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpremake5.lua
More file actions
124 lines (95 loc) · 2.9 KB
/
Copy pathpremake5.lua
File metadata and controls
124 lines (95 loc) · 2.9 KB
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
---@diagnostic disable: undefined-global, undefined-field
workspace "ccsocket"
configurations { "Debug", "Release" }
characterset "ASCII"
platforms { "x64", "Win32", "ARM64" }
startproject "testmain"
filter "system:windows"
targetprefix ""
buildoptions { "/source-charset:utf-8" }
filter "configurations:Debug"
defines { "DEBUG" }
symbols "On"
optimize "Off"
filter "configurations:Release"
defines { "NDEBUG" }
optimize "On"
filter "toolset:msc*"
buildoptions { "/source-charset:utf-8" }
filter { "toolset:not msc*" }
buildoptions { "-std=c99" }
-- ── Options ──────────────────────────────────────────────
newoption {
trigger = "WITH_OSSL",
description = "Build with OpenSSL (TLS support)",
}
newoption {
trigger = "WITH_ICMP",
description = "Build with ICMP echo/reply module",
}
-- ── Source sets ──────────────────────────────────────────
local lib_sources = { "ccsocket.c", "ccsocket.h" }
local lib_links = {}
if _OPTIONS["WITH_OSSL"] then
table.insert(lib_sources, "cctls.c")
table.insert(lib_sources, "cctls.h")
table.insert(lib_links, "ssl")
table.insert(lib_links, "crypto")
end
if _OPTIONS["WITH_ICMP"] ~= "off" then
table.insert(lib_sources, "ccicmp.c")
table.insert(lib_sources, "ccicmp.h")
end
-- c-source files only (strip .h for object-only builds)
local lib_csrc = {}
for _, f in ipairs(lib_sources) do
if f:match("%.c$") then
table.insert(lib_csrc, f)
end
end
-- testmain sources: main.c + all library .c files (linked as objects)
local test_sources = { "main.c" }
for _, f in ipairs(lib_csrc) do
table.insert(test_sources, f)
end
-- ── Targets ─────────────────────────────────────────────
-- static library (no PIC)
project "ccsocket-static"
kind "StaticLib"
language "C"
files(lib_sources)
targetdir "build"
objdir "build/obj/static"
targetname "ccsocket"
links(lib_links)
filter "system:linux or bsd or macosx"
pic "Off"
filter "system:solaris"
links { "socket", "sendfile" }
filter {}
-- shared library (PIC)
project "ccsocket-dynamic"
kind "SharedLib"
language "C"
files(lib_sources)
targetdir "build"
objdir "build/obj/dynamic"
targetname "ccsocket"
links(lib_links)
filter "system:linux or bsd or macosx"
pic "On"
filter "system:solaris"
pic "On"
links { "socket", "sendfile" }
filter {}
-- test executable (links library .o files directly, no .a or .so dependency)
project "testmain"
kind "ConsoleApp"
language "C"
files(test_sources)
targetdir "build"
objdir "build/obj/testmain"
targetname "main"
filter "system:solaris"
links { "socket", "sendfile" }
filter {}