Fossil SCM

A CMake file from Thomas Schnurrenberger. Saved for reference. After some experimentation with cmake, the thinking is we will probably go in a different direction.

drh 2011-06-16 23:14 trunk
Commit d167b79e66d517d21df8303f6899ed42c6b1bfdd
1 file changed +215
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -0,0 +1,215 @@
1
+PROJECT(Fossil C)
2
+
3
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
4
+
5
+# Build options.
6
+OPTION(FOSSIL_BUILD_STATIC "Build Fossil static" TRUE)
7
+OPTION(FOSSIL_ENABLE_SSL "Enable SSL support" FALSE)
8
+
9
+# Include some macros.
10
+INCLUDE(CheckIncludeFile)
11
+
12
+# Source files which gets processed by the translate program.
13
+SET(TRANS_SRCS
14
+ add allrepo attach bag bisect blob branch browse captcha cgi checkin
15
+ checkout clearsign clone comformat configure content db delta deltacmd
16
+ descendants diff diffcmd doc encode event export file finfo glob graph gzip
17
+ http http_socket http_transport import info leaf login main manifest md5
18
+ merge merge3 name path pivot popen pqueue printf rebuild report rss schema
19
+ search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main
20
+ timeline tkt tktsetup undo update url user verify vfile wiki wikiformat
21
+ winhttp xfer zip http_ssl
22
+)
23
+
24
+# Additional source files.
25
+SET(OTHER_SRCS
26
+ src/sqlite3.c src/shell.c src/th.c src/th_lang.c
27
+)
28
+
29
+# Add the resource file on windows to the source files.
30
+IF(WIN32)
31
+ SET(OTHER_SRCS ${OTHER_SRCS} win/fossil.rc)
32
+ENDIF(WIN32)
33
+
34
+# Set compile definitions for src/shell.c.
35
+SET(SHELL_COMP_DEFS
36
+ main=sqlite3_shell
37
+ SQLITE_OMIT_LOAD_EXTENSION=1
38
+)
39
+SET_SOURCE_FILES_PROPERTIES(src/shell.c
40
+ PROPERTIES COMPILE_DEFINITIONS "${SHELL_COMP_DEFS}"
41
+)
42
+
43
+# Set compile definitions for src/sqlite.c.
44
+SET(SQLITE3_COMP_DEFS
45
+ SQLITE_OMIT_LOAD_EXTENSION=1
46
+ SQLITE_THREADSAFE=0
47
+ SQLITE_DEFAULT_FILE_FORMAT=4
48
+ SQLITE_ENABLE_STAT2
49
+ SQLITE_ENABLE_LOCKING_STYLE=0
50
+ localtime=fossil_localtime
51
+)
52
+SET_SOURCE_FILES_PROPERTIES(src/sqlite3.c
53
+ PROPERTIES COMPILE_DEFINITIONS "${SQLITE3_COMP_DEFS}"
54
+)
55
+
56
+# Build the makeheaders program.
57
+ADD_EXECUTABLE(makeheaders src/makeheaders.c)
58
+GET_TARGET_PROPERTY(MAKEHEADERS_LOC makeheaders LOCATION)
59
+
60
+# Build the translate program.
61
+ADD_EXECUTABLE(translate src/translate.c)
62
+GET_TARGET_PROPERTY(TRANSLATE_LOC translate LOCATION)
63
+
64
+# Build the mkindex program.
65
+ADD_EXECUTABLE(mkindex src/mkindex.c)
66
+GET_TARGET_PROPERTY(MKINDEX_LOC mkindex LOCATION)
67
+
68
+# Build the version program.
69
+ADD_EXECUTABLE(version win/version.c)
70
+GET_TARGET_PROPERTY(VERSION_LOC version LOCATION)
71
+
72
+# Custom command to build the VERSION.h include file.
73
+ADD_CUSTOM_COMMAND(
74
+ OUTPUT ${PROJECT_BINARY_DIR}/VERSION.h
75
+ DEPENDS version
76
+ ${PROJECT_SOURCE_DIR}/manifest.uuid
77
+ ${PROJECT_SOURCE_DIR}/manifest
78
+ COMMAND ${VERSION_LOC}
79
+ ARGS ${PROJECT_SOURCE_DIR}/manifest.uuid
80
+ ${PROJECT_SOURCE_DIR}/manifest
81
+ > ${PROJECT_BINARY_DIR}/VERSION.h
82
+ COMMENT "Generating VERSION.h ..."
83
+)
84
+
85
+# Custom commands to build the translated sources.
86
+FOREACH(SRC ${TRANS_SRCS})
87
+
88
+ ADD_CUSTOM_COMMAND(
89
+ OUTPUT ${PROJECT_BINARY_DIR}/${SRC}_.c
90
+ DEPENDS translate
91
+ ${PROJECT_SOURCE_DIR}/src/${SRC}.c
92
+ COMMAND ${TRANSLATE_LOC}
93
+ ARGS ${PROJECT_SOURCE_DIR}/src/${SRC}.c
94
+ > ${PROJECT_BINARY_DIR}/${SRC}_.c
95
+ COMMENT "Translating src/${SRC}.c ..."
96
+ )
97
+
98
+ # Build a list of all the results.
99
+ SET(TRANS_SRC ${TRANS_SRC} ${PROJECT_BINARY_DIR}/${SRC}_.c)
100
+
101
+ENDFOREACH(SRC)
102
+
103
+# Custom command to build page_index.h.
104
+ADD_CUSTOM_COMMAND(
105
+ OUTPUT ${PROJECT_BINARY_DIR}/page_index.h
106
+ DEPENDS mkindex
107
+ ${TRANS_SRC}
108
+ COMMAND ${MKINDEX_LOC}
109
+ ARGS ${TRANS_SRC}
110
+ > ${PROJECT_BINARY_DIR}/page_index.h
111
+ COMMENT "Generating page_index.h ..."
112
+)
113
+ADD_CUSTOM_TARGET(page_index DEPENDS ${PROJECT_BINARY_DIR}/page_index.h)
114
+
115
+# Create an input file for the makeheaders program.
116
+FILE(WRITE ${PROJECT_BINARY_DIR}/mkhdr.dat
117
+"# Warning: this file is automatically generated by CMake.
118
+${PROJECT_SOURCE_DIR}/src/sqlite3.h
119
+${PROJECT_SOURCE_DIR}/src/th.h
120
+${PROJECT_BINARY_DIR}/VERSION.h\n"
121
+)
122
+FOREACH(SRC ${TRANS_SRCS})
123
+ FILE(APPEND ${PROJECT_BINARY_DIR}/mkhdr.dat
124
+ "${PROJECT_BINARY_DIR}/${SRC}_.c:${PROJECT_BINARY_DIR}/${SRC}.h\n"
125
+ )
126
+ # Build a list of all the generated header files.
127
+ SET(GEN_HDRS ${GEN_HDRS} ${PROJECT_BINARY_DIR}/${SRC}.h)
128
+ENDFOREACH(SRC)
129
+
130
+# Custom commands to build the header files.
131
+ADD_CUSTOM_COMMAND(
132
+ OUTPUT ${PROJECT_BINARY_DIR}/headers ${GEN_HDRS}
133
+ DEPENDS makeheaders
134
+ ${PROJECT_SOURCE_DIR}/src/sqlite3.h
135
+ ${PROJECT_SOURCE_DIR}/src/th.h
136
+ ${PROJECT_BINARY_DIR}/VERSION.h
137
+ ${TRANS_SRC}
138
+ COMMAND ${MAKEHEADERS_LOC}
139
+ ARGS -f mkhdr.dat
140
+ COMMAND ${CMAKE_COMMAND}
141
+ ARGS -E echo Headers generated > ${PROJECT_BINARY_DIR}/headers
142
+ COMMENT "Generating header files..."
143
+)
144
+ADD_CUSTOM_TARGET(hdr_files DEPENDS ${PROJECT_BINARY_DIR}/headers)
145
+
146
+# Make sure that the CMake output directory and the source file directory
147
+# gets searched for include files.
148
+SET(FOSSIL_INCL_DIRS ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/src)
149
+
150
+# Disable internationalization.
151
+SET(FOSSIL_COMP_DEFS FOSSIL_I18N=0)
152
+
153
+# Fossil requires the Zlib library.
154
+CHECK_INCLUDE_FILE(zlib.h ZLIB_INTRINSIC)
155
+IF(ZLIB_INTRINSIC)
156
+ SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} z)
157
+ELSE(ZLIB_INTRINSIC)
158
+ FIND_PACKAGE(ZLIB REQUIRED)
159
+ IF(ZLIB_FOUND)
160
+ SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ${ZLIB_LIBRARIES})
161
+ SET(FOSSIL_INCL_DIRS ${FOSSIL_INCL_DIRS} ${ZLIB_INCLUDE_DIRS})
162
+ ENDIF(ZLIB_FOUND)
163
+ENDIF(ZLIB_INTRINSIC)
164
+
165
+IF(FOSSIL_ENABLE_SSL)
166
+ CHECK_INCLUDE_FILE(openssl/ssl.h OPENSSL_INTRINSIC)
167
+ IF(OPENSSL_INTRINSIC)
168
+ SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ssl crypto)
169
+ ELSE(OPENSSL_INTRINSIC)
170
+ FIND_PACKAGE(OpenSSL REQUIRED)
171
+ IF(OPENSSL_FOUND)
172
+ SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ${OPENSSL_LIBRARIES})
173
+ SET(FOSSIL_INCL_DIRS ${FOSSIL_INCL_DIRS} ${OPENSSL_INCLUDE_DIR})
174
+ ENDIF(OPENSSL_FOUND)
175
+ ENDIF(OPENSSL_INTRINSIC)
176
+ SET(FOSSIL_COMP_DEFS ${FOSSIL_COMP_DEFS} FOSSIL_ENABLE_SSL=1)
177
+ENDIF(FOSSIL_ENABLE_SSL)
178
+
179
+# On Windows, Fossil requires the socket library.
180
+IF(WIN32)
181
+ SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ws2_32)
182
+ENDIF(WIN32)
183
+
184
+# Set the include diretories.
185
+INCLUDE_DIRECTORIES(BEFORE ${FOSSIL_INCL_DIRS})
186
+
187
+# Build the Fossil program.
188
+ADD_EXECUTABLE(fossil ${TRANS_SRC} ${OTHER_SRCS})
189
+
190
+# Fossil depends on the generated header files.
191
+ADD_DEPENDENCIES(fossil hdr_files page_index)
192
+
193
+# Set flags for building fossil static.
194
+IF(FOSSIL_BUILD_STATIC)
195
+ SET(FOSSIL_LINK_FLAGS ${FOSSIL_LINK_FLAGS} -static)
196
+ENDIF(FOSSIL_BUILD_STATIC)
197
+
198
+# Set the additional link flags for the fossil target.
199
+IF(DEFINED FOSSIL_LINK_FLAGS)
200
+ SET_TARGET_PROPERTIES(fossil PROPERTIES
201
+ LINK_FLAGS ${FOSSIL_LINK_FLAGS}
202
+ )
203
+ENDIF(DEFINED FOSSIL_LINK_FLAGS)
204
+
205
+# Set the compile definitions for the fossil target.
206
+IF(DEFINED FOSSIL_COMP_DEFS)
207
+ SET_TARGET_PROPERTIES(fossil PROPERTIES
208
+ COMPILE_DEFINITIONS "${FOSSIL_COMP_DEFS}"
209
+ )
210
+ENDIF(DEFINED FOSSIL_COMP_DEFS)
211
+
212
+# Set the additional link libraries for the fossil target.
213
+IF(DEFINED FOSSIL_LINK_LIBS)
214
+ TARGET_LINK_LIBRARIES(fossil ${FOSSIL_LINK_LIBS})
215
+ENDIF(DEFINED FOSSIL_LINK_LIBS)
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -0,0 +1,215 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -0,0 +1,215 @@
1 PROJECT(Fossil C)
2
3 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
4
5 # Build options.
6 OPTION(FOSSIL_BUILD_STATIC "Build Fossil static" TRUE)
7 OPTION(FOSSIL_ENABLE_SSL "Enable SSL support" FALSE)
8
9 # Include some macros.
10 INCLUDE(CheckIncludeFile)
11
12 # Source files which gets processed by the translate program.
13 SET(TRANS_SRCS
14 add allrepo attach bag bisect blob branch browse captcha cgi checkin
15 checkout clearsign clone comformat configure content db delta deltacmd
16 descendants diff diffcmd doc encode event export file finfo glob graph gzip
17 http http_socket http_transport import info leaf login main manifest md5
18 merge merge3 name path pivot popen pqueue printf rebuild report rss schema
19 search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main
20 timeline tkt tktsetup undo update url user verify vfile wiki wikiformat
21 winhttp xfer zip http_ssl
22 )
23
24 # Additional source files.
25 SET(OTHER_SRCS
26 src/sqlite3.c src/shell.c src/th.c src/th_lang.c
27 )
28
29 # Add the resource file on windows to the source files.
30 IF(WIN32)
31 SET(OTHER_SRCS ${OTHER_SRCS} win/fossil.rc)
32 ENDIF(WIN32)
33
34 # Set compile definitions for src/shell.c.
35 SET(SHELL_COMP_DEFS
36 main=sqlite3_shell
37 SQLITE_OMIT_LOAD_EXTENSION=1
38 )
39 SET_SOURCE_FILES_PROPERTIES(src/shell.c
40 PROPERTIES COMPILE_DEFINITIONS "${SHELL_COMP_DEFS}"
41 )
42
43 # Set compile definitions for src/sqlite.c.
44 SET(SQLITE3_COMP_DEFS
45 SQLITE_OMIT_LOAD_EXTENSION=1
46 SQLITE_THREADSAFE=0
47 SQLITE_DEFAULT_FILE_FORMAT=4
48 SQLITE_ENABLE_STAT2
49 SQLITE_ENABLE_LOCKING_STYLE=0
50 localtime=fossil_localtime
51 )
52 SET_SOURCE_FILES_PROPERTIES(src/sqlite3.c
53 PROPERTIES COMPILE_DEFINITIONS "${SQLITE3_COMP_DEFS}"
54 )
55
56 # Build the makeheaders program.
57 ADD_EXECUTABLE(makeheaders src/makeheaders.c)
58 GET_TARGET_PROPERTY(MAKEHEADERS_LOC makeheaders LOCATION)
59
60 # Build the translate program.
61 ADD_EXECUTABLE(translate src/translate.c)
62 GET_TARGET_PROPERTY(TRANSLATE_LOC translate LOCATION)
63
64 # Build the mkindex program.
65 ADD_EXECUTABLE(mkindex src/mkindex.c)
66 GET_TARGET_PROPERTY(MKINDEX_LOC mkindex LOCATION)
67
68 # Build the version program.
69 ADD_EXECUTABLE(version win/version.c)
70 GET_TARGET_PROPERTY(VERSION_LOC version LOCATION)
71
72 # Custom command to build the VERSION.h include file.
73 ADD_CUSTOM_COMMAND(
74 OUTPUT ${PROJECT_BINARY_DIR}/VERSION.h
75 DEPENDS version
76 ${PROJECT_SOURCE_DIR}/manifest.uuid
77 ${PROJECT_SOURCE_DIR}/manifest
78 COMMAND ${VERSION_LOC}
79 ARGS ${PROJECT_SOURCE_DIR}/manifest.uuid
80 ${PROJECT_SOURCE_DIR}/manifest
81 > ${PROJECT_BINARY_DIR}/VERSION.h
82 COMMENT "Generating VERSION.h ..."
83 )
84
85 # Custom commands to build the translated sources.
86 FOREACH(SRC ${TRANS_SRCS})
87
88 ADD_CUSTOM_COMMAND(
89 OUTPUT ${PROJECT_BINARY_DIR}/${SRC}_.c
90 DEPENDS translate
91 ${PROJECT_SOURCE_DIR}/src/${SRC}.c
92 COMMAND ${TRANSLATE_LOC}
93 ARGS ${PROJECT_SOURCE_DIR}/src/${SRC}.c
94 > ${PROJECT_BINARY_DIR}/${SRC}_.c
95 COMMENT "Translating src/${SRC}.c ..."
96 )
97
98 # Build a list of all the results.
99 SET(TRANS_SRC ${TRANS_SRC} ${PROJECT_BINARY_DIR}/${SRC}_.c)
100
101 ENDFOREACH(SRC)
102
103 # Custom command to build page_index.h.
104 ADD_CUSTOM_COMMAND(
105 OUTPUT ${PROJECT_BINARY_DIR}/page_index.h
106 DEPENDS mkindex
107 ${TRANS_SRC}
108 COMMAND ${MKINDEX_LOC}
109 ARGS ${TRANS_SRC}
110 > ${PROJECT_BINARY_DIR}/page_index.h
111 COMMENT "Generating page_index.h ..."
112 )
113 ADD_CUSTOM_TARGET(page_index DEPENDS ${PROJECT_BINARY_DIR}/page_index.h)
114
115 # Create an input file for the makeheaders program.
116 FILE(WRITE ${PROJECT_BINARY_DIR}/mkhdr.dat
117 "# Warning: this file is automatically generated by CMake.
118 ${PROJECT_SOURCE_DIR}/src/sqlite3.h
119 ${PROJECT_SOURCE_DIR}/src/th.h
120 ${PROJECT_BINARY_DIR}/VERSION.h\n"
121 )
122 FOREACH(SRC ${TRANS_SRCS})
123 FILE(APPEND ${PROJECT_BINARY_DIR}/mkhdr.dat
124 "${PROJECT_BINARY_DIR}/${SRC}_.c:${PROJECT_BINARY_DIR}/${SRC}.h\n"
125 )
126 # Build a list of all the generated header files.
127 SET(GEN_HDRS ${GEN_HDRS} ${PROJECT_BINARY_DIR}/${SRC}.h)
128 ENDFOREACH(SRC)
129
130 # Custom commands to build the header files.
131 ADD_CUSTOM_COMMAND(
132 OUTPUT ${PROJECT_BINARY_DIR}/headers ${GEN_HDRS}
133 DEPENDS makeheaders
134 ${PROJECT_SOURCE_DIR}/src/sqlite3.h
135 ${PROJECT_SOURCE_DIR}/src/th.h
136 ${PROJECT_BINARY_DIR}/VERSION.h
137 ${TRANS_SRC}
138 COMMAND ${MAKEHEADERS_LOC}
139 ARGS -f mkhdr.dat
140 COMMAND ${CMAKE_COMMAND}
141 ARGS -E echo Headers generated > ${PROJECT_BINARY_DIR}/headers
142 COMMENT "Generating header files..."
143 )
144 ADD_CUSTOM_TARGET(hdr_files DEPENDS ${PROJECT_BINARY_DIR}/headers)
145
146 # Make sure that the CMake output directory and the source file directory
147 # gets searched for include files.
148 SET(FOSSIL_INCL_DIRS ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/src)
149
150 # Disable internationalization.
151 SET(FOSSIL_COMP_DEFS FOSSIL_I18N=0)
152
153 # Fossil requires the Zlib library.
154 CHECK_INCLUDE_FILE(zlib.h ZLIB_INTRINSIC)
155 IF(ZLIB_INTRINSIC)
156 SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} z)
157 ELSE(ZLIB_INTRINSIC)
158 FIND_PACKAGE(ZLIB REQUIRED)
159 IF(ZLIB_FOUND)
160 SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ${ZLIB_LIBRARIES})
161 SET(FOSSIL_INCL_DIRS ${FOSSIL_INCL_DIRS} ${ZLIB_INCLUDE_DIRS})
162 ENDIF(ZLIB_FOUND)
163 ENDIF(ZLIB_INTRINSIC)
164
165 IF(FOSSIL_ENABLE_SSL)
166 CHECK_INCLUDE_FILE(openssl/ssl.h OPENSSL_INTRINSIC)
167 IF(OPENSSL_INTRINSIC)
168 SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ssl crypto)
169 ELSE(OPENSSL_INTRINSIC)
170 FIND_PACKAGE(OpenSSL REQUIRED)
171 IF(OPENSSL_FOUND)
172 SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ${OPENSSL_LIBRARIES})
173 SET(FOSSIL_INCL_DIRS ${FOSSIL_INCL_DIRS} ${OPENSSL_INCLUDE_DIR})
174 ENDIF(OPENSSL_FOUND)
175 ENDIF(OPENSSL_INTRINSIC)
176 SET(FOSSIL_COMP_DEFS ${FOSSIL_COMP_DEFS} FOSSIL_ENABLE_SSL=1)
177 ENDIF(FOSSIL_ENABLE_SSL)
178
179 # On Windows, Fossil requires the socket library.
180 IF(WIN32)
181 SET(FOSSIL_LINK_LIBS ${FOSSIL_LINK_LIBS} ws2_32)
182 ENDIF(WIN32)
183
184 # Set the include diretories.
185 INCLUDE_DIRECTORIES(BEFORE ${FOSSIL_INCL_DIRS})
186
187 # Build the Fossil program.
188 ADD_EXECUTABLE(fossil ${TRANS_SRC} ${OTHER_SRCS})
189
190 # Fossil depends on the generated header files.
191 ADD_DEPENDENCIES(fossil hdr_files page_index)
192
193 # Set flags for building fossil static.
194 IF(FOSSIL_BUILD_STATIC)
195 SET(FOSSIL_LINK_FLAGS ${FOSSIL_LINK_FLAGS} -static)
196 ENDIF(FOSSIL_BUILD_STATIC)
197
198 # Set the additional link flags for the fossil target.
199 IF(DEFINED FOSSIL_LINK_FLAGS)
200 SET_TARGET_PROPERTIES(fossil PROPERTIES
201 LINK_FLAGS ${FOSSIL_LINK_FLAGS}
202 )
203 ENDIF(DEFINED FOSSIL_LINK_FLAGS)
204
205 # Set the compile definitions for the fossil target.
206 IF(DEFINED FOSSIL_COMP_DEFS)
207 SET_TARGET_PROPERTIES(fossil PROPERTIES
208 COMPILE_DEFINITIONS "${FOSSIL_COMP_DEFS}"
209 )
210 ENDIF(DEFINED FOSSIL_COMP_DEFS)
211
212 # Set the additional link libraries for the fossil target.
213 IF(DEFINED FOSSIL_LINK_LIBS)
214 TARGET_LINK_LIBRARIES(fossil ${FOSSIL_LINK_LIBS})
215 ENDIF(DEFINED FOSSIL_LINK_LIBS)

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button