-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.fl
49 lines (39 loc) · 1.53 KB
/
build.fl
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
# Copyright (c) 2024 Aymeric Wibo
#
# @APPLE_LICENSE_HEADER_START@
#
# This file contains Original Code and/or Modifications of Original Code
# as defined in and that are subject to the Apple Public Source License
# Version 2.0 (the 'License'). You may not use this file except in
# compliance with the License. Please obtain a copy of the License at
# http://www.opensource.apple.com/apsl/ and read it before using this
# file.
#
# The Original Code and all software distributed under the License are
# distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
# Please see the License for the specific language governing rights and
# limitations under the License.
#
# @APPLE_LICENSE_HEADER_END@
import bob
assert Platform.os() != "Darwin", "libcopyfile is already provided by the system; you should not be using this."
assert Platform.os() == "FreeBSD", "This libcopyfile reimplementation has only been validated on FreeBSD."
# C compilation.
let obj = Cc([
"-fPIC", "-std=c99",
"-Wall", "-Wextra", "-Werror"
]).compile(["src/copyfile.c"])
# Create static & dynamic libraries.
let archive = Linker([]).archive(obj)
let dyn_lib = Linker(["-shared"]).link(obj)
# Installation map.
install = {
archive: "lib/libcopyfile.a",
dyn_lib: "lib/libcopyfile.so",
"src/copyfile.h": "include/copyfile.h",
}
# Default runner.
run = none