annotate CMakeLists.txt @ 812:59a473863eaa

cmake: add a way to force 64-bit build This is useful on OSes that support 64-bit binaries but default to 32-bit. To force 64-bits, pass FORCE_64_BIT_BUILD to cmake. E.g., $ cmake . -DFORCE_64_BIT_BUILD=1 Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Sat, 18 Jul 2020 10:16:00 -0400
parents 615cef3b291f
children 3fa2ebce953c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
1 #
789
14e07927c8a6 man: install mandoc-formated manpages as-is
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 785
diff changeset
2 # Copyright (c) 2016-2020 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
0
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
3 #
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
4 # Permission is hereby granted, free of charge, to any person obtaining a copy
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
5 # of this software and associated documentation files (the "Software"), to deal
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
6 # in the Software without restriction, including without limitation the rights
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
7 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
8 # copies of the Software, and to permit persons to whom the Software is
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
9 # furnished to do so, subject to the following conditions:
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
10 #
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
11 # The above copyright notice and this permission notice shall be included in
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
12 # all copies or substantial portions of the Software.
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
13 #
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
15 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
16 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
17 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
18 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
20 # SOFTWARE.
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
21 #
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
22
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
23 cmake_minimum_required(VERSION 2.8.12.2)
43
1cc160d0edb6 cmake: identify the project in the top-level CMakeLists.txt
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 42
diff changeset
24 project(libjeffpc)
0
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
25
792
615cef3b291f libjeffpc 0.21
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 789
diff changeset
26 set(JEFFPC_VERSION 0.21)
187
f89655d2e205 cmake: keep version number in top-level CMakeLists.txt
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 183
diff changeset
27
0
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
28 enable_testing()
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
29
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
30 add_definitions(
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
31 -D__EXTENSIONS__
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
32 -D_REENTRANT
575
897df8a90467 build: build as POSIX 2008 source
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 569
diff changeset
33 -D_POSIX_C_SOURCE=200809L
95
6939d2b1c8ab cmake: specify that we want POSIX 2001 standard with GNU extensions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 88
diff changeset
34 -D_GNU_SOURCE
616
7ba7402651b4 build: define __BSD_VISIBLE & __XSI_VISIBLE
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 613
diff changeset
35 -D__BSD_VISIBLE
7ba7402651b4 build: define __BSD_VISIBLE & __XSI_VISIBLE
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 613
diff changeset
36 -D__XSI_VISIBLE
0
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
37 )
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
38
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
39 add_compile_options(
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
40 -Wall
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
41 -O2
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
42 -g
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
43 -std=gnu99
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
44 -fno-omit-frame-pointer
617
2dc22af7e95f build: -Woverride-init is a gcc-only flag
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 616
diff changeset
45 $<$<C_COMPILER_ID:gcc>:-Woverride-init>
0
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
46 $<$<C_COMPILER_ID:gcc>:-fno-inline-small-functions>
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
47 $<$<C_COMPILER_ID:gcc>:-fno-inline-functions-called-once>
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
48 )
1
d5e68b231e18 atomic: define a type checking atomic ops
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
49
25
3cb979d08023 config: support for build-time feature checks
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 24
diff changeset
50 set(CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
3cb979d08023 config: support for build-time feature checks
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 24
diff changeset
51
812
59a473863eaa cmake: add a way to force 64-bit build
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 792
diff changeset
52 include(cmake/64-bit.cmake)
25
3cb979d08023 config: support for build-time feature checks
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 24
diff changeset
53 include(cmake/config.cmake)
23
f7acc20835d4 cmake support for mapfiles
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
54 include(cmake/mapfile.cmake)
47
7447b2d42ad7 cmake: move all the test related macros into a separate file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 44
diff changeset
55 include(cmake/test.cmake)
64
a0728e64316c cmake: let the user specify the location of the library
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 63
diff changeset
56 include(cmake/paths.cmake)
23
f7acc20835d4 cmake support for mapfiles
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
57
701
4e3e672275ce cmake: make the slab selection logic just like file cache's
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 700
diff changeset
58 # select which slab allocator API to use
4e3e672275ce cmake: make the slab selection logic just like file cache's
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 700
diff changeset
59 if(JEFFPC_HAVE_UMEM)
4e3e672275ce cmake: make the slab selection logic just like file cache's
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 700
diff changeset
60 set(SLAB_EXTRA_SOURCE slab_umem.c)
38
90f182a38741 fakeumem: include internal fall-back to missing libumem
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 34
diff changeset
61 else()
701
4e3e672275ce cmake: make the slab selection logic just like file cache's
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 700
diff changeset
62 set(SLAB_EXTRA_SOURCE)
38
90f182a38741 fakeumem: include internal fall-back to missing libumem
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 34
diff changeset
63 endif()
90f182a38741 fakeumem: include internal fall-back to missing libumem
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 34
diff changeset
64
700
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
65 # select which event monitoring API to use
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
66 if(JEFFPC_HAVE_PORT_H)
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
67 set(FILE_CACHE_EXTRA_SOURCE file_cache_event_port.c)
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
68 else()
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
69 set(FILE_CACHE_EXTRA_SOURCE)
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
70 endif()
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
71
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
72 find_package(BISON)
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
73 find_package(FLEX)
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
74
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
75 include_directories(
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
76 include
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
77 )
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
78
62
97874539130d cmake: #include "foo.h" should check the source directory as well
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 61
diff changeset
79 # include the current source dir but only for: #include "foo.h"
97874539130d cmake: #include "foo.h" should check the source directory as well
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 61
diff changeset
80 add_compile_options(
179
bed61aae209f build: -iquote the current binary dir
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 178
diff changeset
81 -iquote${CMAKE_CURRENT_SOURCE_DIR}
bed61aae209f build: -iquote the current binary dir
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 178
diff changeset
82 -iquote${CMAKE_CURRENT_BINARY_DIR}
62
97874539130d cmake: #include "foo.h" should check the source directory as well
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 61
diff changeset
83 )
97874539130d cmake: #include "foo.h" should check the source directory as well
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 61
diff changeset
84
61
49acba50f6fc cmake: output generated bison and flex files in the binary dir
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 49
diff changeset
85 BISON_TARGET(sexpr sexpr.y ${CMAKE_CURRENT_BINARY_DIR}/sexpr.tab.c
49acba50f6fc cmake: output generated bison and flex files in the binary dir
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 49
diff changeset
86 COMPILE_FLAGS "-p sexpr_reader_")
49acba50f6fc cmake: output generated bison and flex files in the binary dir
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 49
diff changeset
87 FLEX_TARGET(sexpr sexpr.l ${CMAKE_CURRENT_BINARY_DIR}/sexpr.lex.c
49acba50f6fc cmake: output generated bison and flex files in the binary dir
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 49
diff changeset
88 COMPILE_FLAGS "-P sexpr_reader_")
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
89 ADD_FLEX_BISON_DEPENDENCY(sexpr sexpr)
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
90
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
91 add_library(jeffpc SHARED
204
910021f14024 array: a resizable C array
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 199
diff changeset
92 array.c
726
de916e38bc55 base64 (RFC 4648) encoder & decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 724
diff changeset
93 base64.c
407
3562218129d7 bst: basic (unbalanced) binary search tree
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 397
diff changeset
94 bst.c
250
0e4e45813eb9 buffer: introduce a simple growing memory buffer API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 249
diff changeset
95 buffer.c
256
f82b45b662c9 buffer: use an ops vector to customize buffer behavior
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 250
diff changeset
96 buffer_heap.c
f82b45b662c9 buffer: use an ops vector to customize buffer behavior
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 250
diff changeset
97 buffer_sink.c
562
584def85123e buffer: introduce a static read-write buffer type
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 560
diff changeset
98 buffer_static.c
442
0d09c7592828 buffer: introduce a stdio buffer type
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 438
diff changeset
99 buffer_stdio.c
207
103260f6b99c cstr: add strcpy_safe
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 205
diff changeset
100 cstr.c
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
101 error.c
699
67a81f305a11 file cache: import the bare minimum implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 694
diff changeset
102 file_cache.c
700
de3dce4eb8ca file cache: import event ports implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 699
diff changeset
103 ${FILE_CACHE_EXTRA_SOURCE}
401
f2670f17e988 introduce cbor encoding API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 397
diff changeset
104 fmt_cbor.c
705
4f2c0ba43681 introduce json encoding API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 703
diff changeset
105 fmt_json.c
44
905e9ad459a0 hexdump: hexdump a buffer with or without a trailing \0
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 43
diff changeset
106 hexdump.c
19
017a4abcfe3d init: add a single initialize-the-library function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
107 init.c
14
33b45c955db2 io: safe file reading & writing functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
108 io.c
182
a24cc2a751fc list: implement illumos-style linked list
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 181
diff changeset
109 list.c
430
df53edaf06a4 mem: add mem_re{,c}allocarray() to improve portability
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 423
diff changeset
110 mem_array.c
262
89bf89fc814c nvlist: introduce a name-value list API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 258
diff changeset
111 nvl.c
274
c35b1f62bcac nvlist: value type conversion code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 273
diff changeset
112 nvl_convert.c
79
449d56767f49 padding: add a function for padding checking
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 65
diff changeset
113 padding.c
298
289a8ac515f2 qstring: turn a encoded query string into a nvlist entries
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 296
diff changeset
114 qstring.c
32
118d3438c86b rand: introduce random number generation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 29
diff changeset
115 rand.c
507
4cb72cb51d62 rbtree: basic red-black binary search tree
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 497
diff changeset
116 rbtree.c
500
8de8fcdac60e move everything from libjeffpc-comm into libjeffpc
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 497
diff changeset
117 scgisvc.c
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
118 sexpr.c
682
117603444601 sexpr: allow compacting list and alists into arrays and nvlists
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 680
diff changeset
119 sexpr_compact.c
371
3e5ce96011f4 sexpr: move dump code into separate source file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 362
diff changeset
120 sexpr_dump.c
114
73b4164d2811 sexpr: implement basic expression evaluation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 104
diff changeset
121 sexpr_eval.c
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
122 ${FLEX_sexpr_OUTPUTS} ${BISON_sexpr_OUTPUTS}
140
aa39202a5963 mem: add a slab allocator API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 137
diff changeset
123 slab.c
701
4e3e672275ce cmake: make the slab selection logic just like file cache's
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 700
diff changeset
124 ${SLAB_EXTRA_SOURCE}
88
7cbfcbcc3580 sock: make it easy to make client TCP/IP connections
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 84
diff changeset
125 sock.c
500
8de8fcdac60e move everything from libjeffpc-comm into libjeffpc
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 497
diff changeset
126 socksvc.c
6
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
127 str.c
103
021cf8b91cb3 synch: use functions instead of macros for pthread wrappers
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 95
diff changeset
128 synch.c
130
9a156f1dcd0e taskq: implement a simple fixed-size thread pool
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 114
diff changeset
129 taskq.c
647
b3563ef89203 thread: convert xthr_create into a non-inline function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 635
diff changeset
130 thread.c
407
3562218129d7 bst: basic (unbalanced) binary search tree
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 397
diff changeset
131 tree.c
296
1f6ae020116d urldecode: decode url-encoded strings
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 292
diff changeset
132 urldecode.c
447
44fd3fc3c5a1 unicode: add a UTF-8 codepoint to UTF-32 codepoint convertor
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 430
diff changeset
133 unicode.c
42
13e339c56f8a uuid: implement UUID {generate,compare,clear}
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 38
diff changeset
134 uuid.c
8
083d11258db6 val: a generic typed value structure
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 6
diff changeset
135 val.c
463
8f455913bfd0 val: introduce VT_ARRAY
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 449
diff changeset
136 val_array.c
470
21c09afa0b4f val: move dumping code into a separate file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 465
diff changeset
137 val_dump.c
464
b1e4c7607050 val: introduce VT_NVL
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 463
diff changeset
138 val_nvl.c
465
c4ac06c3ee4a val: move nvl packing code to live closer to val code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 464
diff changeset
139 val_pack.c
c4ac06c3ee4a val: move nvl packing code to live closer to val code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 464
diff changeset
140 val_unpack.c
137
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
141 version.c
6
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
142 )
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
143
693
ff744171cfd1 cmake: make libjeffpc's dependancies private
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 682
diff changeset
144 target_link_libraries(jeffpc PRIVATE
26
20bf88cb42eb config: check for presence of libumem
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 25
diff changeset
145 ${UMEM_LIBRARY}
579
bc6f5a293691 build: find & use the correct library containing backtrace(3)
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 578
diff changeset
146 ${EXECINFO_LIBRARY}
578
70a9f24b35d4 build: find & use the correct library containing accept(2)
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 577
diff changeset
147 ${SOCKET_LIBRARY}
577
d964f88ef555 build: find & use the correct library containing xdr_opaque
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 575
diff changeset
148 ${XDR_LIBRARY}
104
b1b1531f60d4 link against libpthread
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 103
diff changeset
149 pthread
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
150 )
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
151
694
bcc31181a255 cmake: use libumem's include dir only when building libjeffpc
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 693
diff changeset
152 target_include_directories(jeffpc PRIVATE
bcc31181a255 cmake: use libumem's include dir only when building libjeffpc
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 693
diff changeset
153 ${UMEM_INCLUDE_DIR}
bcc31181a255 cmake: use libumem's include dir only when building libjeffpc
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 693
diff changeset
154 )
bcc31181a255 cmake: use libumem's include dir only when building libjeffpc
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 693
diff changeset
155
500
8de8fcdac60e move everything from libjeffpc-comm into libjeffpc
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 497
diff changeset
156 target_apply_mapfile(jeffpc mapfile-vers)
24
678c6a03bfa9 apply a version mapfile to the produced shared object
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 23
diff changeset
157
290
f09190e05813 cmake: install libjeffpc-comm.so
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 289
diff changeset
158 install(TARGETS jeffpc
f09190e05813 cmake: install libjeffpc-comm.so
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 289
diff changeset
159 DESTINATION ${CMAKE_INSTALL_LIBDIR}
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
160 PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
1
d5e68b231e18 atomic: define a type checking atomic ops
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
161 install(FILES include/jeffpc/atomic.h
628
23a64d43d71f build: install array.h
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 626
diff changeset
162 include/jeffpc/array.h
726
de916e38bc55 base64 (RFC 4648) encoder & decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 724
diff changeset
163 include/jeffpc/base64.h
407
3562218129d7 bst: basic (unbalanced) binary search tree
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 397
diff changeset
164 include/jeffpc/bst.h
250
0e4e45813eb9 buffer: introduce a simple growing memory buffer API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 249
diff changeset
165 include/jeffpc/buffer.h
703
7cd40d019de4 cmake: install cbor.h
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 701
diff changeset
166 include/jeffpc/cbor.h
207
103260f6b99c cstr: add strcpy_safe
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 205
diff changeset
167 include/jeffpc/cstr.h
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
168 include/jeffpc/error.h
699
67a81f305a11 file cache: import the bare minimum implementation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 694
diff changeset
169 include/jeffpc/file-cache.h
44
905e9ad459a0 hexdump: hexdump a buffer with or without a trailing \0
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 43
diff changeset
170 include/jeffpc/hexdump.h
10
9c2519c32502 int: string to integer conversion routines
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 8
diff changeset
171 include/jeffpc/int.h
14
33b45c955db2 io: safe file reading & writing functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
172 include/jeffpc/io.h
19
017a4abcfe3d init: add a single initialize-the-library function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
173 include/jeffpc/jeffpc.h
705
4f2c0ba43681 introduce json encoding API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 703
diff changeset
174 include/jeffpc/json.h
181
df388ec51431 list: implement linux kernel-style linked list
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 179
diff changeset
175 include/jeffpc/list.h
140
aa39202a5963 mem: add a slab allocator API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 137
diff changeset
176 include/jeffpc/mem.h
569
1eac5e3f7a3b mmap: mmap and munmap wrappers
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 563
diff changeset
177 include/jeffpc/mmap.h
262
89bf89fc814c nvlist: introduce a name-value list API
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 258
diff changeset
178 include/jeffpc/nvl.h
79
449d56767f49 padding: add a function for padding checking
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 65
diff changeset
179 include/jeffpc/padding.h
298
289a8ac515f2 qstring: turn a encoded query string into a nvlist entries
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 296
diff changeset
180 include/jeffpc/qstring.h
32
118d3438c86b rand: introduce random number generation
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 29
diff changeset
181 include/jeffpc/rand.h
507
4cb72cb51d62 rbtree: basic red-black binary search tree
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 497
diff changeset
182 include/jeffpc/rbtree.h
2
1ef6d9d92cfa refcnt: define a generic ref count type & macros
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 1
diff changeset
183 include/jeffpc/refcnt.h
291
54d1ea17d64b scgi: move the SCGI header name definitions into a separate header file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 290
diff changeset
184 include/jeffpc/scgi.h
289
9a980c50a132 cmake: install scgisvc.h
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 286
diff changeset
185 include/jeffpc/scgisvc.h
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
186 include/jeffpc/sexpr.h
88
7cbfcbcc3580 sock: make it easy to make client TCP/IP connections
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 84
diff changeset
187 include/jeffpc/sock.h
282
4b52ab9eb514 socksvc: simple socket service
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 281
diff changeset
188 include/jeffpc/socksvc.h
6
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
189 include/jeffpc/str.h
65
a3bd464bf68f cmake: install synch.h
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 64
diff changeset
190 include/jeffpc/synch.h
130
9a156f1dcd0e taskq: implement a simple fixed-size thread pool
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 114
diff changeset
191 include/jeffpc/taskq.h
33
7fb711200ed7 thread: wrap pthread_{create,join,self}
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 32
diff changeset
192 include/jeffpc/thread.h
29
91cd9c0ab45c time: add gettime() to return unix time in nanoseconds
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 26
diff changeset
193 include/jeffpc/time.h
407
3562218129d7 bst: basic (unbalanced) binary search tree
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 397
diff changeset
194 include/jeffpc/tree_private.h
81
67f676c44e79 types: introduce ARRAY_LEN
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 80
diff changeset
195 include/jeffpc/types.h
296
1f6ae020116d urldecode: decode url-encoded strings
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 292
diff changeset
196 include/jeffpc/urldecode.h
447
44fd3fc3c5a1 unicode: add a UTF-8 codepoint to UTF-32 codepoint convertor
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 430
diff changeset
197 include/jeffpc/unicode.h
42
13e339c56f8a uuid: implement UUID {generate,compare,clear}
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 38
diff changeset
198 include/jeffpc/uuid.h
8
083d11258db6 val: a generic typed value structure
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 6
diff changeset
199 include/jeffpc/val.h
137
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
200 include/jeffpc/version.h
63
bd61c4d5d281 cmake: install the config header file properly
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 62
diff changeset
201 ${CMAKE_CURRENT_BINARY_DIR}/include/jeffpc/config.h
1
d5e68b231e18 atomic: define a type checking atomic ops
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
202 DESTINATION include/jeffpc
d5e68b231e18 atomic: define a type checking atomic ops
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
203 PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
13
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
204
137
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
205 add_custom_target(revisiontag ALL)
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
206
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
207 add_custom_command(TARGET revisiontag
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
208 COMMAND ${CMAKE_COMMAND}
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
209 -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
210 -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}
188
c71d879e18cd version: use the version from cmake files if needed
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 187
diff changeset
211 -DJEFFPC_VERSION=v${JEFFPC_VERSION}
137
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
212 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/hg.cmake
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
213 )
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
214
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
215 add_dependencies(jeffpc revisiontag)
2943c4b289f1 version: add a jeffpc_version symbol with the hg version info
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 130
diff changeset
216
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
217 #
724
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
218 # CBOR file dumper
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
219 #
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
220
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
221 add_executable(cbor-dumper
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
222 cbor-dumper.c
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
223 )
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
224
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
225 target_link_libraries(cbor-dumper
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
226 jeffpc
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
227 )
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
228
089746314db4 add cbor-dumper helper utility
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 709
diff changeset
229 #
141
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
230 # REPL executable
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
231 #
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
232
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
233 add_executable(sexpr-repl EXCLUDE_FROM_ALL
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
234 repl.c
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
235 )
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
236
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
237 target_link_libraries(sexpr-repl
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
238 tecla
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
239 jeffpc
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
240 )
08416c57f077 sexpr: implement a simple REPL for the sexpr APIs
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 140
diff changeset
241
789
14e07927c8a6 man: install mandoc-formated manpages as-is
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 785
diff changeset
242 add_subdirectory(man)
13
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
243 add_subdirectory(tests)