annotate CMakeLists.txt @ 24:678c6a03bfa9

apply a version mapfile to the produced shared object Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Mon, 28 Mar 2016 11:31:52 -0400
parents f7acc20835d4
children 3cb979d08023
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 #
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
2 # Copyright (c) 2016 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
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)
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
24
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
25 enable_testing()
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
26
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
27 add_definitions(
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
28 -D__EXTENSIONS__
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
29 -D_REENTRANT
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
30 )
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
31
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
32 add_compile_options(
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
33 -Wall
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
34 -O2
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
35 -g
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
36 -std=gnu99
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
37 -fno-omit-frame-pointer
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
38 $<$<C_COMPILER_ID:gcc>:-fno-inline-small-functions>
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
39 $<$<C_COMPILER_ID:gcc>:-fno-inline-functions-called-once>
ad8577f2345a Basic cmake file & ignore file
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
40 )
1
d5e68b231e18 atomic: define a type checking atomic ops
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
41
23
f7acc20835d4 cmake support for mapfiles
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
42 include(cmake/mapfile.cmake)
f7acc20835d4 cmake support for mapfiles
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
43
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
44 find_package(BISON)
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
45 find_package(FLEX)
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
46
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
47 include_directories(
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
48 include
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
49 )
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
50
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
51 BISON_TARGET(sexpr sexpr.y sexpr.tab.c COMPILE_FLAGS "-p sexpr_reader_")
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
52 FLEX_TARGET(sexpr sexpr.l sexpr.lex.c COMPILE_FLAGS "-P sexpr_reader_")
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
53 ADD_FLEX_BISON_DEPENDENCY(sexpr sexpr)
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
54
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
55 add_library(jeffpc SHARED
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
56 error.c
19
017a4abcfe3d init: add a single initialize-the-library function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
57 init.c
14
33b45c955db2 io: safe file reading & writing functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
58 io.c
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
59 sexpr.c
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
60 ${FLEX_sexpr_OUTPUTS} ${BISON_sexpr_OUTPUTS}
6
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
61 str.c
8
083d11258db6 val: a generic typed value structure
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 6
diff changeset
62 val.c
6
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
63 )
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
64
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
65 target_link_libraries(jeffpc
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
66 umem
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
67 )
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
68
24
678c6a03bfa9 apply a version mapfile to the produced shared object
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 23
diff changeset
69 target_apply_mapfile(jeffpc mapfile-vers)
678c6a03bfa9 apply a version mapfile to the produced shared object
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 23
diff changeset
70
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
71 install(TARGETS jeffpc DESTINATION lib
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
72 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
73 install(FILES include/jeffpc/atomic.h
4
49bec073c6e4 error: define assertion macros and a syslogging mechanism
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 2
diff changeset
74 include/jeffpc/error.h
10
9c2519c32502 int: string to integer conversion routines
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 8
diff changeset
75 include/jeffpc/int.h
14
33b45c955db2 io: safe file reading & writing functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
76 include/jeffpc/io.h
19
017a4abcfe3d init: add a single initialize-the-library function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
77 include/jeffpc/jeffpc.h
2
1ef6d9d92cfa refcnt: define a generic ref count type & macros
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 1
diff changeset
78 include/jeffpc/refcnt.h
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
79 include/jeffpc/sexpr.h
6
4317d47b267f str: a reference counted string
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
80 include/jeffpc/str.h
8
083d11258db6 val: a generic typed value structure
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 6
diff changeset
81 include/jeffpc/val.h
1
d5e68b231e18 atomic: define a type checking atomic ops
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
82 DESTINATION include/jeffpc
d5e68b231e18 atomic: define a type checking atomic ops
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
83 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
84
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
85 function(simple_c_test type section bin data)
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
86 add_test(NAME "${type}:${section}:${data}"
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
87 COMMAND "${CMAKE_BINARY_DIR}/test_${bin}"
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
88 "${CMAKE_CURRENT_SOURCE_DIR}/${data}"
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
89 )
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
90 endfunction()
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
91
15
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
92 #
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
93 # Test related executables
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
94 #
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
95
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
96 add_executable(test_sexpr_parser
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
97 test_sexpr_parser.c
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
98 )
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
99
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
100 target_link_libraries(test_sexpr_parser
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
101 jeffpc
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
102 )
c8bd88e39c07 sexpr: S-expression parsing and manipulation code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 14
diff changeset
103
13
99352ce825b8 tests: add basic infrastructure for ctest-based testing
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 10
diff changeset
104 add_subdirectory(tests)