# Merge lp:~mir-team/mir/xenial-0.26 into lp:mir/xenial

Proposed by Michał Sawicz on 2017-06-05
Reviewer Review Type Date Requested Status
Alan Griffiths 2017-06-05 Approve on 2017-06-05
lp:~mir-team/mir/xenial-0.26 updated on 2017-06-05
1274. By Alan Griffiths (<email address hidden>) on 2017-06-05

Drop android/arm64 (unsupported on Xenial)

 Alan Griffiths (alan-griffiths) wrote on 2017-06-05: #

LGTM

review: Approve

## Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
 1 === added file '.bzrignore' 2 --- .bzrignore 1970-01-01 00:00:00 +0000 3 +++ .bzrignore 2017-06-05 10:46:31 +0000 4 @@ -0,0 +1,5 @@ 5 +.idea 6 +.project 7 +include/server/mir/version.h 8 +include/client/mir_toolkit/version.h 9 +build-* 10 11 === modified file '3rd_party/android-deps/android/input.h' 12 --- 3rd_party/android-deps/android/input.h 2013-09-20 11:55:05 +0000 13 +++ 3rd_party/android-deps/android/input.h 2017-06-05 10:46:31 +0000 14 @@ -141,7 +141,10 @@ 15 AINPUT_EVENT_TYPE_KEY = 1, 16 17 /* Indicates that the input event is a motion event. */ 18 - AINPUT_EVENT_TYPE_MOTION = 2 19 + AINPUT_EVENT_TYPE_MOTION = 2, 20 + 21 + /* Indicates that the event contains a raw buffer. */ 22 + AINPUT_EVENT_TYPE_BUFFER = 3 23 }; 24 25 /* 26 27 === removed file '3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h' 28 --- 3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h 2012-11-13 11:17:46 +0000 29 +++ 3rd_party/android-input/android/frameworks/base/include/androidfw/GenericKeyMap.h 1970-01-01 00:00:00 +0000 30 @@ -1,36 +0,0 @@ 31 -// Copyright (C) 2010 The Android Open Source Project 32 -// 33 -// Licensed under the Apache License, Version 2.0 (the "License"); 34 -// you may not use this file except in compliance with the License. 35 -// You may obtain a copy of the License at 36 -// 37 -// http://www.apache.org/licenses/LICENSE-2.0 38 -// 39 -// Unless required by applicable law or agreed to in writing, software 40 -// distributed under the License is distributed on an "AS IS" BASIS, 41 -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 42 -// See the License for the specific language governing permissions and 43 -// limitations under the License. 44 -// 45 - 46 -// Generic key layout file for full alphabetic US English PC style 47 -// external keyboards. This file is intentionally very generic and is 48 -// intended to support a broad rang of keyboards. Do not edit the 49 -// generic key layout to support a specific keyboard; instead, create 50 -// a new key layout file with the required keyboard configuration. 51 -// Taken from android source tree Generic.kl and Generic.kcm 52 - 53 -#ifndef GENERIC_KEY_MAP_H_ 54 -#define GENERIC_KEY_MAP_H_ 55 - 56 -namespace android 57 -{ 58 -struct GenericKeyMap 59 -{ 60 - static const char* key_layout_contents(); 61 - 62 - static const char* keymap_contents(); 63 -}; 64 -} 65 - 66 -#endif // GENERIC_KEY_MAP_H_ 67 68 === modified file '3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h' 69 --- 3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h 2016-03-16 06:59:01 +0000 70 +++ 3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h 2017-06-05 10:46:31 +0000 71 @@ -571,6 +571,13 @@ 72 Vector mSamplePointerCoords; 73 }; 74 75 +struct RawBufferEvent : public InputEvent { 76 + 77 + virtual int32_t getType() const { return AINPUT_EVENT_TYPE_BUFFER; } 78 + virtual ~RawBufferEvent() { } 79 + std::string buffer; 80 +}; 81 + 82 /* 83 * Input event factory. 84 */ 85 @@ -583,6 +590,7 @@ 86 87 virtual KeyEvent* createKeyEvent() = 0; 88 virtual MotionEvent* createMotionEvent() = 0; 89 + virtual RawBufferEvent* createRawBufferEvent() = 0; 90 }; 91 92 /* 93 @@ -596,10 +604,12 @@ 94 95 virtual KeyEvent* createKeyEvent() { return & mKeyEvent; } 96 virtual MotionEvent* createMotionEvent() { return & mMotionEvent; } 97 + virtual RawBufferEvent* createRawBufferEvent() { return &mRawEvent; } 98 99 private: 100 KeyEvent mKeyEvent; 101 MotionEvent mMotionEvent; 102 + RawBufferEvent mRawEvent; 103 }; 104 105 /* 106 @@ -612,6 +622,7 @@ 107 108 virtual KeyEvent* createKeyEvent(); 109 virtual MotionEvent* createMotionEvent(); 110 + virtual RawBufferEvent* createRawBufferEvent(); 111 112 void recycle(InputEvent* event); 113 114 @@ -620,6 +631,7 @@ 115 116 Vector mKeyEventPool; 117 Vector mMotionEventPool; 118 + Vector mRawBufferEventPool; 119 }; 120 121 } // namespace android 122 123 === modified file '3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h' 124 --- 3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h 2016-01-29 08:18:22 +0000 125 +++ 3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h 2017-06-05 10:46:31 +0000 126 @@ -46,21 +46,26 @@ 127 */ 128 struct InputMessage { 129 InputMessage(); 130 + InputMessage(uint32_t seq, std::string const& buffer); 131 + InputMessage(InputMessage const& cp); 132 + InputMessage& operator=(InputMessage const& cp); 133 134 enum { 135 TYPE_KEY = 1, 136 TYPE_MOTION = 2, 137 - TYPE_FINISHED = 3 138 + TYPE_FINISHED = 3, 139 + TYPE_BUFFER = 4 140 }; 141 142 struct Header { 143 uint32_t type; 144 - uint32_t padding; // 8 byte alignment for the body that follows 145 + uint32_t seq; 146 + uint32_t size; // size of the Body 147 + uint32_t padding; // padding for 8byte tokens in Body 148 } header; 149 150 union Body { 151 struct Key { 152 - uint32_t seq; 153 int64_t eventTime; 154 mir::cookie::Blob cookieBlob; 155 int32_t deviceId; 156 @@ -79,7 +84,6 @@ 157 } key; 158 159 struct Motion { 160 - uint32_t seq; 161 int64_t eventTime; 162 mir::cookie::Blob cookieBlob; 163 int32_t deviceId; 164 @@ -113,17 +117,22 @@ 165 } motion; 166 167 struct Finished { 168 - uint32_t seq; 169 bool handled; 170 171 inline size_t size() const { 172 return sizeof(Finished); 173 } 174 } finished; 175 + 176 + struct Buffer { 177 + uint8_t buffer[sizeof(Motion)]; 178 + } buffer; 179 } body; 180 181 bool isValid(size_t actualSize) const; 182 size_t size() const; 183 + 184 + static const size_t raw_event_payload = sizeof(body.buffer); 185 }; 186 187 /* 188 @@ -141,12 +150,6 @@ 189 public: 190 InputChannel(const String8& name, int fd); 191 192 - /* Creates a pair of input channels. 193 - * 194 - * Returns OK on success. 195 - */ 196 - static status_t openInputFdPair(int& server_fd, int& client_fd); 197 - 198 inline String8 getName() const { return mName; } 199 inline int getFd() const { return mFd; } 200 201 @@ -194,6 +197,8 @@ 202 /* Gets the underlying input channel. */ 203 inline sp getChannel() { return mChannel; } 204 205 + status_t publishEventBuffer(uint32_t seq, std::string const& buffer); 206 + 207 /* Publishes a key event to the input channel. 208 * 209 * Returns OK on success. 210 @@ -436,6 +441,7 @@ 211 212 static void initializeKeyEvent(KeyEvent* event, const InputMessage* msg); 213 static void initializeMotionEvent(MotionEvent* event, const InputMessage* msg); 214 + static void initializeBufferEvent(RawBufferEvent* event, const InputMessage* msg); 215 static void addSample(MotionEvent* event, const InputMessage* msg); 216 static bool canAddSample(const Batch& batch, const InputMessage* msg); 217 static ssize_t findSampleNoLaterThan(const Batch& batch, std::chrono::nanoseconds time); 218 219 === modified file '3rd_party/android-input/android/frameworks/base/services/input/Input.cpp' 220 --- 3rd_party/android-input/android/frameworks/base/services/input/Input.cpp 2016-03-16 06:59:01 +0000 221 +++ 3rd_party/android-input/android/frameworks/base/services/input/Input.cpp 2017-06-05 10:46:31 +0000 222 @@ -612,6 +612,9 @@ 223 for (size_t i = 0; i < mMotionEventPool.size(); i++) { 224 delete mMotionEventPool.itemAt(i); 225 } 226 + for (size_t i = 0; i < mRawBufferEventPool.size(); i++) { 227 + delete mRawBufferEventPool.itemAt(i); 228 + } 229 } 230 231 KeyEvent* PooledInputEventFactory::createKeyEvent() { 232 @@ -632,8 +635,23 @@ 233 return new MotionEvent(); 234 } 235 236 +RawBufferEvent* PooledInputEventFactory::createRawBufferEvent() { 237 + if (!mRawBufferEventPool.isEmpty()) { 238 + RawBufferEvent* event = mRawBufferEventPool.top(); 239 + mRawBufferEventPool.pop(); 240 + return event; 241 + } 242 + return new RawBufferEvent(); 243 +} 244 + 245 void PooledInputEventFactory::recycle(InputEvent* event) { 246 switch (event->getType()) { 247 + case AINPUT_EVENT_TYPE_BUFFER: 248 + if (mRawBufferEventPool.size() < mMaxPoolSize) { 249 + mRawBufferEventPool.push(static_cast(event)); 250 + return; 251 + } 252 + break; 253 case AINPUT_EVENT_TYPE_KEY: 254 if (mKeyEventPool.size() < mMaxPoolSize) { 255 mKeyEventPool.push(static_cast(event)); 256 257 === modified file '3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp' 258 --- 3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp 2016-03-16 06:59:01 +0000 259 +++ 3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp 2017-06-05 10:46:31 +0000 260 @@ -29,15 +29,12 @@ 261 #include 262 #include 263 264 +#include 265 +#include 266 + 267 268 namespace android { 269 270 -// Socket buffer size. The default is typically about 128KB, which is much larger than 271 -// we really need. So we make it smaller. It just needs to be big enough to hold 272 -// a few dozen large multi-finger motion events in the case where an application gets 273 -// behind processing touches. 274 -static const size_t SOCKET_BUFFER_SIZE = 32 * 1024; 275 - 276 // Nanoseconds per milliseconds. 277 static constexpr const std::chrono::nanoseconds NANOS_PER_MS = std::chrono::nanoseconds(1000000); 278 279 @@ -68,16 +65,32 @@ 280 memset(this, 0, sizeof(InputMessage)); 281 } 282 283 +InputMessage::InputMessage(uint32_t seq, std::string const& buffer) 284 +{ 285 + memset(this, 0, sizeof(InputMessage)); 286 + header.type = TYPE_BUFFER; 287 + header.seq = seq; 288 + header.size = buffer.size(); 289 + 290 + if (raw_event_payload < buffer.size()) 291 + BOOST_THROW_EXCEPTION(std::runtime_error("raw buffer event exceeds payload")); 292 + memcpy(body.buffer.buffer, buffer.data(), header.size); 293 +} 294 + 295 +InputMessage::InputMessage(InputMessage const& cp) = default; 296 + 297 +InputMessage& InputMessage::operator=(InputMessage const& cp) = default; 298 + 299 bool InputMessage::isValid(size_t actualSize) const { 300 if (size() == actualSize) { 301 switch (header.type) { 302 + case TYPE_FINISHED: 303 + case TYPE_BUFFER: 304 case TYPE_KEY: 305 return true; 306 case TYPE_MOTION: 307 return body.motion.pointerCount > 0 308 && body.motion.pointerCount <= MAX_POINTERS; 309 - case TYPE_FINISHED: 310 - return true; 311 } 312 } 313 return false; 314 @@ -91,11 +104,11 @@ 315 return sizeof(Header) + body.motion.size(); 316 case TYPE_FINISHED: 317 return sizeof(Header) + body.finished.size(); 318 + case TYPE_BUFFER: 319 + return sizeof(Header) + header.size; 320 } 321 return sizeof(Header); 322 } 323 - 324 - 325 // --- InputChannel --- 326 327 InputChannel::InputChannel(const String8& name, int fd) : 328 @@ -117,29 +130,6 @@ 329 #endif 330 } 331 332 -status_t InputChannel::openInputFdPair(int& server_fd, int& client_fd) { 333 - int sockets[2]; 334 - if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, sockets)) { 335 - status_t result = -errno; 336 - ALOGE("InputChannel ~ Could not create socket pair. errno=%d", 337 - errno); 338 - server_fd = client_fd = 0; 339 - 340 - return result; 341 - } 342 - 343 - int bufferSize = SOCKET_BUFFER_SIZE; 344 - setsockopt(sockets[0], SOL_SOCKET, SO_SNDBUF, &bufferSize, sizeof(bufferSize)); 345 - setsockopt(sockets[0], SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize)); 346 - setsockopt(sockets[1], SOL_SOCKET, SO_SNDBUF, &bufferSize, sizeof(bufferSize)); 347 - setsockopt(sockets[1], SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize)); 348 - 349 - server_fd = sockets[0]; 350 - client_fd = sockets[1]; 351 - 352 - return OK; 353 -} 354 - 355 status_t InputChannel::sendMessage(const InputMessage* msg) { 356 size_t msgLength = msg->size(); 357 ssize_t nWrite; 358 @@ -226,6 +216,20 @@ 359 InputPublisher::~InputPublisher() { 360 } 361 362 +status_t InputPublisher::publishEventBuffer(uint32_t seq, std::string const& buffer) { 363 +#if DEBUG_TRANSPORT_ACTIONS 364 + ALOGD("channel '%s' publisher ~ publishInputBuffer: seq=%u", c_str(mChannel->getName()), seq); 365 +#endif 366 + 367 + if (!seq) { 368 + ALOGE("Attempted to publish a buffer with sequence number 0."); 369 + return BAD_VALUE; 370 + } 371 + 372 + InputMessage msg(seq, buffer); 373 + return mChannel->sendMessage(&msg); 374 +} 375 + 376 status_t InputPublisher::publishKeyEvent( 377 uint32_t seq, 378 int32_t deviceId, 379 @@ -255,7 +259,8 @@ 380 381 InputMessage msg; 382 msg.header.type = InputMessage::TYPE_KEY; 383 - msg.body.key.seq = seq; 384 + msg.header.seq = seq; 385 + msg.header.size = sizeof(msg.body.key); 386 msg.body.key.deviceId = deviceId; 387 msg.body.key.source = source; 388 msg.body.key.action = action; 389 @@ -313,7 +318,7 @@ 390 391 InputMessage msg; 392 msg.header.type = InputMessage::TYPE_MOTION; 393 - msg.body.motion.seq = seq; 394 + msg.header.seq = seq; 395 msg.body.motion.deviceId = deviceId; 396 msg.body.motion.source = source; 397 msg.body.motion.action = action; 398 @@ -333,6 +338,8 @@ 399 msg.body.motion.pointers[i].properties.copyFrom(pointerProperties[i]); 400 msg.body.motion.pointers[i].coords.copyFrom(pointerCoords[i]); 401 } 402 + 403 + msg.header.size = msg.body.motion.size(); 404 return mChannel->sendMessage(&msg); 405 } 406 407 @@ -354,7 +361,7 @@ 408 c_str(mChannel->getName()), msg.header.type); 409 return UNKNOWN_ERROR; 410 } 411 - *outSeq = msg.body.finished.seq; 412 + *outSeq = msg.header.seq; 413 *outHandled = msg.body.finished.handled; 414 return OK; 415 } 416 @@ -421,12 +428,25 @@ 417 } 418 419 switch (mMsg.header.type) { 420 + case InputMessage::TYPE_BUFFER: { 421 + RawBufferEvent* bufferEvent = factory->createRawBufferEvent(); 422 + if (!bufferEvent) return NO_MEMORY; 423 + 424 + initializeBufferEvent(bufferEvent, &mMsg); 425 + *outSeq = mMsg.header.seq; 426 + *outEvent = bufferEvent; 427 +#if DEBUG_TRANSPORT_ACTIONS 428 + ALOGD("channel '%s' consumer ~ consumed buffer event, seq=%u", 429 + c_str(mChannel->getName()), *outSeq); 430 +#endif 431 + break; 432 + } 433 case InputMessage::TYPE_KEY: { 434 KeyEvent* keyEvent = factory->createKeyEvent(); 435 if (!keyEvent) return NO_MEMORY; 436 437 initializeKeyEvent(keyEvent, &mMsg); 438 - *outSeq = mMsg.body.key.seq; 439 + *outSeq = mMsg.header.seq; 440 *outEvent = keyEvent; 441 #if DEBUG_TRANSPORT_ACTIONS 442 ALOGD("channel '%s' consumer ~ consumed key event, seq=%u", 443 @@ -484,7 +504,7 @@ 444 445 updateTouchState(&mMsg); 446 initializeMotionEvent(motionEvent, &mMsg); 447 - *outSeq = mMsg.body.motion.seq; 448 + *outSeq = mMsg.header.seq; 449 *outEvent = motionEvent; 450 #if DEBUG_TRANSPORT_ACTIONS 451 ALOGD("channel '%s' consumer ~ consumed motion event, seq=%u", 452 @@ -548,14 +568,14 @@ 453 updateTouchState(&msg); 454 if (i) { 455 SeqChain seqChain; 456 - seqChain.seq = msg.body.motion.seq; 457 + seqChain.seq = msg.header.seq; 458 seqChain.chain = chain; 459 mSeqChains.push(seqChain); 460 addSample(motionEvent, &msg); 461 } else { 462 initializeMotionEvent(motionEvent, &msg); 463 } 464 - chain = msg.body.motion.seq; 465 + chain = msg.header.seq; 466 } 467 batch.samples.removeItemsAt(0, count); 468 469 @@ -750,6 +770,7 @@ 470 // Resample touch coordinates. 471 touchState.lastResample.eventTime = sampleTime; 472 touchState.lastResample.ids.clear(); 473 + bool coords_resampled = false; 474 for (size_t i = 0; i < pointerCount; i++) { 475 uint32_t id = event->getPointerId(i); 476 touchState.lastResample.idToIndex[id] = i; 477 @@ -764,6 +785,9 @@ 478 lerp(currentCoords.getX(), otherCoords.getX(), alpha)); 479 resampledCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, 480 lerp(currentCoords.getY(), otherCoords.getY(), alpha)); 481 + coords_resampled = true; 482 + // No coordinate resampling for tooltype mouse - if we intend to 483 + // change that we must also resample RX, RY, HSCROLL, VSCROLL 484 #if DEBUG_RESAMPLING 485 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f), " 486 "other (%0.3f, %0.3f), alpha %0.3f", 487 @@ -773,6 +797,8 @@ 488 alpha); 489 #endif 490 } else { 491 + // Before calling this method currentCoords was already part of the 492 + // event -> no need to add them to the event. 493 resampledCoords.copyFrom(currentCoords); 494 #if DEBUG_RESAMPLING 495 ALOGD("[%d] - out (%0.3f, %0.3f), cur (%0.3f, %0.3f)", 496 @@ -782,7 +808,8 @@ 497 } 498 } 499 500 - event->addSample(sampleTime, touchState.lastResample.pointers); 501 + if (coords_resampled) 502 + event->addSample(sampleTime, touchState.lastResample.pointers); 503 } 504 505 bool InputConsumer::shouldResampleTool(int32_t toolType) { 506 @@ -838,7 +865,8 @@ 507 status_t InputConsumer::sendUnchainedFinishedSignal(uint32_t seq, bool handled) { 508 InputMessage msg; 509 msg.header.type = InputMessage::TYPE_FINISHED; 510 - msg.body.finished.seq = seq; 511 + msg.header.size = sizeof(msg.body.finished); 512 + msg.header.seq = seq; 513 msg.body.finished.handled = handled; 514 return mChannel->sendMessage(&msg); 515 } 516 @@ -872,6 +900,10 @@ 517 return -1; 518 } 519 520 +void InputConsumer::initializeBufferEvent(RawBufferEvent* event, const InputMessage* msg) { 521 + event->buffer.assign(msg->body.buffer.buffer, msg->body.buffer.buffer + msg->header.size); 522 +} 523 + 524 void InputConsumer::initializeKeyEvent(KeyEvent* event, const InputMessage* msg) { 525 event->initialize( 526 msg->body.key.deviceId, 527 528 === modified file 'CMakeLists.txt' 529 --- CMakeLists.txt 2016-03-25 15:08:27 +0000 530 +++ CMakeLists.txt 2017-06-05 10:46:31 +0000 531 @@ -28,8 +28,8 @@ 532 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) 533 534 set(MIR_VERSION_MAJOR 0) 535 -set(MIR_VERSION_MINOR 21) 536 -set(MIR_VERSION_PATCH 0) 537 +set(MIR_VERSION_MINOR 26) 538 +set(MIR_VERSION_PATCH 3) 539 540 add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR}) 541 add_definitions(-DMIR_VERSION_MINOR=${MIR_VERSION_MINOR}) 542 @@ -62,27 +62,31 @@ 543 544 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread -g -Werror -Wall -pedantic -Wextra -fPIC") 545 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -g -std=c++14 -Werror -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC") 546 +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed") 547 +set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed") 548 +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") 549 + 550 +include(CheckCXXCompilerFlag) 551 +check_cxx_compiler_flag(-Wmismatched-tags HAS_W_MISMATCHED_TAGS) 552 + 553 +if(HAS_W_MISMATCHED_TAGS) 554 + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-mismatched-tags") 555 +endif() 556 557 option(MIR_USE_LD_GOLD "Enables the \"gold\" linker." OFF) 558 if(MIR_USE_LD_GOLD) 559 - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold") 560 - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold") 561 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold") 562 set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=gold") 563 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold") 564 endif() 565 566 -if ("${CMAKE_CXX_COMPILER}" MATCHES "clang") 567 - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage -Wno-mismatched-tags") 568 -endif() 569 - 570 # Link time optimization allows leaner, cleaner libraries 571 message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER}) 572 573 option(MIR_LINK_TIME_OPTIMIZATION "Enables the linker to optimize binaries." OFF) 574 if(MIR_LINK_TIME_OPTIMIZATION) 575 - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") 576 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") 577 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto -ffat-lto-objects") 578 + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -ffat-lto-objects") 579 if(${CMAKE_COMPILER_IS_GNUCXX}) 580 set(CMAKE_NM "gcc-nm") 581 set(CMAKE_AR "gcc-ar") 582 @@ -138,6 +142,7 @@ 583 584 enable_testing() 585 586 +include_directories(include/core) 587 include_directories(include/common) 588 include_directories(include/cookie) 589 590 @@ -163,10 +168,10 @@ 591 # Default to KMS backend, but build all of them 592 set( 593 MIR_PLATFORM 594 - mesa-kms;android;mesa-x11 595 + mesa-kms;android;mesa-x11;eglstream-kms 596 CACHE 597 STRING 598 - "a list of graphics backends to build (options are 'mesa-kms', 'android' or 'mesa-x11')" 599 + "a list of graphics backends to build (options are 'mesa-kms', 'android', 'mesa-x11', or 'eglstream-kms')" 600 ) 601 602 list(GET MIR_PLATFORM 0 MIR_TEST_PLATFORM) 603 @@ -183,12 +188,16 @@ 604 if (platform STREQUAL "mesa-x11") 605 set(MIR_BUILD_PLATFORM_MESA_X11 TRUE) 606 endif() 607 + if (platform STREQUAL "eglstream-kms") 608 + set(MIR_BUILD_PLATFORM_EGLSTREAM_KMS TRUE) 609 + endif() 610 endforeach(platform) 611 612 find_package(EGL REQUIRED) 613 find_package(GLESv2 REQUIRED) 614 find_package(GLM REQUIRED) 615 find_package(Protobuf REQUIRED ) 616 +find_package(CapnProto REQUIRED) 617 find_package(GLog REQUIRED) 618 find_package(GFlags REQUIRED) 619 find_package(LTTngUST REQUIRED) 620 @@ -199,6 +208,43 @@ 621 include_directories (SYSTEM ${EGL_INCLUDE_DIRS}) 622 include_directories (SYSTEM${GLM_INCLUDE_DIRS}) 623 624 +# 625 +# Full OpenGL support is possibly complete but not yet perfect. So is 626 +# presently disabled by default due to: 627 +# 1. Black windows bug: https://bugs.freedesktop.org/show_bug.cgi?id=92265 628 +# 2. Use of glEGLImageTargetTexture2DOES in: 629 +# src/platform/graphics/egl_extensions.cpp 630 +# possibly shouldn't work even though it does. Or should it? 631 +# 632 +#if (TARGET_ARCH STREQUAL "x86_64-linux-gnu" OR 633 +# TARGET_ARCH STREQUAL "i386-linux-gnu") 634 +# set(DEFAULT_LIBGL "libGL") 635 +#else() 636 + set(DEFAULT_LIBGL "libGLESv2") 637 +#endif() 638 +set(MIR_SERVER_LIBGL ${DEFAULT_LIBGL} CACHE STRING "OpenGL library to use in Mir servers {libGL,libGLESv2}") 639 + 640 +if (MIR_SERVER_LIBGL STREQUAL "libGL") 641 + pkg_check_modules(GL REQUIRED gl) 642 + add_definitions( 643 + -DGL_GLEXT_PROTOTYPES 644 + -DMIR_SERVER_GL_H= 645 + -DMIR_SERVER_GLEXT_H= 646 + -DMIR_SERVER_EGL_OPENGL_BIT=EGL_OPENGL_BIT 647 + -DMIR_SERVER_EGL_OPENGL_API=EGL_OPENGL_API 648 + ) 649 +elseif (MIR_SERVER_LIBGL STREQUAL "libGLESv2") 650 + pkg_check_modules(GL REQUIRED glesv2) 651 + add_definitions( 652 + -DMIR_SERVER_GL_H= 653 + -DMIR_SERVER_GLEXT_H= 654 + -DMIR_SERVER_EGL_OPENGL_BIT=EGL_OPENGL_ES2_BIT 655 + -DMIR_SERVER_EGL_OPENGL_API=EGL_OPENGL_ES_API 656 + ) 657 +else() 658 + message(FATAL_ERROR "Invalid MIR_SERVER_LIBGL value${MIR_SERVER_LIBGL}") 659 +endif() 660 + 661 if (MIR_BUILD_PLATFORM_ANDROID) 662 find_package(AndroidProperties REQUIRED) 663 find_package(LibHardware REQUIRED) 664 @@ -210,6 +256,10 @@ 665 pkg_check_modules( DRM REQUIRED libdrm ) 666 endif() 667 668 +if (MIR_BUILD_PLATFORM_EGLSTREAM_KMS) 669 + pkg_check_modules(EPOXY REQUIRED epoxy) 670 +endif() 671 + 672 set(MIR_ANDROID_INCLUDE_DIRECTORIES) # to be filled by android-input 673 set(MIR_ANDROID_INPUT_COMPILE_FLAGS) # to be filled by android-input 674 set(MIR_3RD_PARTY_INCLUDE_DIRECTORIES) 675 @@ -245,7 +295,7 @@ 676 677 # There's no nice way to format this. Thanks CMake. 678 mir_add_test(NAME LGPL-required 679 - COMMAND /bin/sh -c "! grep -rl 'GNU General' ${PROJECT_SOURCE_DIR}/src/client${PROJECT_SOURCE_DIR}/include/client ${PROJECT_SOURCE_DIR}/src/common${PROJECT_SOURCE_DIR}/include/common ${PROJECT_SOURCE_DIR}/src/include/common${PROJECT_SOURCE_DIR}/src/platform ${PROJECT_SOURCE_DIR}/include/platform${PROJECT_SOURCE_DIR}/src/include/platform" 680 + COMMAND /bin/sh -c "! grep -rl 'GNU General' ${PROJECT_SOURCE_DIR}/src/client${PROJECT_SOURCE_DIR}/include/client ${PROJECT_SOURCE_DIR}/src/common${PROJECT_SOURCE_DIR}/include/common ${PROJECT_SOURCE_DIR}/src/include/common${PROJECT_SOURCE_DIR}/src/platform ${PROJECT_SOURCE_DIR}/include/platform${PROJECT_SOURCE_DIR}/src/include/platform ${PROJECT_SOURCE_DIR}/src/capnproto" 681 ) 682 mir_add_test(NAME GPL-required 683 COMMAND /bin/sh -c "! grep -rl 'GNU Lesser'${PROJECT_SOURCE_DIR}/src/server ${PROJECT_SOURCE_DIR}/include/server${PROJECT_SOURCE_DIR}/src/include/server ${PROJECT_SOURCE_DIR}/tests${PROJECT_SOURCE_DIR}/examples" 684 @@ -271,3 +321,9 @@ 685 mir_check_no_unreleased_symbols(mirplatform release-checks) 686 mir_check_no_unreleased_symbols(mirprotobuf release-checks) 687 mir_check_no_unreleased_symbols(mirserver release-checks) 688 + 689 +if (TARGET doc) 690 + add_custom_target(doc-show 691 + xdg-open ${CMAKE_BINARY_DIR}/doc/html/index.html 692 + DEPENDS doc) 693 +endif() 694 695 === modified file 'benchmarks/frame-uniformity/CMakeLists.txt' 696 --- benchmarks/frame-uniformity/CMakeLists.txt 2016-03-16 06:59:01 +0000 697 +++ benchmarks/frame-uniformity/CMakeLists.txt 2017-06-05 10:46:31 +0000 698 @@ -4,6 +4,8 @@ 699${PROJECT_SOURCE_DIR}/include/server 700 ${PROJECT_SOURCE_DIR}/include/client 701${PROJECT_SOURCE_DIR}/include/test 702 + ${PROJECT_SOURCE_DIR}/include/renderers/gl 703 +${PROJECT_SOURCE_DIR}/include/renderers/sw 704 705 ${PROJECT_SOURCE_DIR}/src/include/server 706${PROJECT_SOURCE_DIR}/src/include/common 707 708 === modified file 'benchmarks/frame-uniformity/touch_measuring_client.cpp' 709 --- benchmarks/frame-uniformity/touch_measuring_client.cpp 2015-06-17 05:20:42 +0000 710 +++ benchmarks/frame-uniformity/touch_measuring_client.cpp 2017-06-05 10:46:31 +0000 711 @@ -29,39 +29,39 @@ 712 namespace 713 { 714 715 -MirSurface *create_surface(MirConnection *connection) 716 +MirWindow *create_window(MirConnection *connection) 717 { 718 MirPixelFormat pixel_format; 719 unsigned int valid_formats; 720 mir_connection_get_available_surface_formats(connection, &pixel_format, 1, &valid_formats); 721 722 - auto const spec = mir_connection_create_spec_for_normal_surface( 723 - connection, 1024, 1024, pixel_format); 724 - mir_surface_spec_set_name(spec, "frame-uniformity-test"); 725 - mir_surface_spec_set_buffer_usage(spec, mir_buffer_usage_hardware); 726 + auto const spec = mir_create_normal_window_spec(connection, 1024, 1024); 727 + mir_window_spec_set_pixel_format(spec, pixel_format); 728 + mir_window_spec_set_name(spec, "frame-uniformity-test"); 729 + mir_window_spec_set_buffer_usage(spec, mir_buffer_usage_hardware); 730 731 - auto surface = mir_surface_create_sync(spec); 732 - mir_surface_spec_release(spec); 733 + auto window = mir_create_window_sync(spec); 734 + mir_window_spec_release(spec); 735 736 - if (!mir_surface_is_valid(surface)) 737 + if (!mir_window_is_valid(window)) 738 { 739 - std::cerr << "Surface creation failed: " << mir_surface_get_error_message(surface) << std::endl; 740 + std::cerr << "Window creation failed: " << mir_window_get_error_message(window) << std::endl; 741 exit(1); 742 } 743 744 - return surface; 745 + return window; 746 } 747 748 -void input_callback(MirSurface * /* surface */, MirEvent const* event, void* context) 749 +void input_callback(MirWindow * /* surface */, MirEvent const* event, void* context) 750 { 751 auto results = static_cast(context); 752 753 results->record_pointer_coordinates(std::chrono::high_resolution_clock::now(), *event); 754 } 755 756 -void collect_input_and_frame_timing(MirSurface *surface, mt::Barrier& client_ready, std::chrono::high_resolution_clock::duration duration, std::shared_ptr const& results) 757 +void collect_input_and_frame_timing(MirWindow *surface, mt::Barrier& client_ready, std::chrono::high_resolution_clock::duration duration, std::shared_ptr const& results) 758 { 759 - mir_surface_set_event_handler(surface, input_callback, results.get()); 760 + mir_window_set_event_handler(surface, input_callback, results.get()); 761 762 client_ready.ready(); 763 764 @@ -69,7 +69,7 @@ 765 auto end_time = std::chrono::high_resolution_clock::now() + duration; 766 while (std::chrono::high_resolution_clock::now() < end_time) 767 { 768 - mir_buffer_stream_swap_buffers_sync(mir_surface_get_buffer_stream(surface)); 769 + mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(surface)); 770 results->record_frame_time(std::chrono::high_resolution_clock::now()); 771 } 772 } 773 @@ -106,11 +106,11 @@ 774 */ 775 mir_connection_set_lifecycle_event_callback(connection, null_lifecycle_callback, nullptr); 776 777 - auto surface = create_surface(connection); 778 + auto window = create_window(connection); 779 780 - collect_input_and_frame_timing(surface, client_ready, touch_duration, results_); 781 + collect_input_and_frame_timing(window, client_ready, touch_duration, results_); 782 783 - mir_surface_release_sync(surface); 784 + mir_window_release_sync(window); 785 mir_connection_release(connection); 786 } 787 788 789 === modified file 'benchmarks/touch_event_latency.py' 790 --- benchmarks/touch_event_latency.py 2015-07-02 14:40:40 +0000 791 +++ benchmarks/touch_event_latency.py 2017-06-05 10:46:31 +0000 792 @@ -57,13 +57,9 @@ 793 794 ####### TEST ####### 795 796 -# Disable input resampling so that the event_time field of input events, 797 -# used to calculate latency, is accurate 798 -no_resampling_env = {"MIR_CLIENT_INPUT_RATE": "0"} 799 - 800 host = Server(reports=["input"]) 801 -nested = Server(host=host, reports=["client-input-receiver"], env=no_resampling_env) 802 -client = Client(server=nested, reports=["client-input-receiver"], options=["-f"], env=no_resampling_env) 803 +nested = Server(host=host, reports=["client-input-receiver"]) 804 +client = Client(server=nested, reports=["client-input-receiver"], options=["-f"]) 805 806 test = PerformanceTest([host, nested, client]) 807 touch_screen = TouchScreen() 808 809 === modified file 'cmake/FindGtestGmock.cmake' 810 --- cmake/FindGtestGmock.cmake 2016-03-16 06:59:01 +0000 811 +++ cmake/FindGtestGmock.cmake 2017-06-05 10:46:31 +0000 812 @@ -1,24 +1,44 @@ 813 include(ExternalProject) 814 include(FindPackageHandleStandardArgs) 815 816 +# 817 +# When cross compiling MIR_CHROOT points to our chroot. 818 +# When not cross compiling, it should be blank to use the host system. 819 +# 820 +set(usr ${MIR_CHROOT}/usr) 821 + 822 +if (EXISTS${usr}/src/googletest) 823 + set (USING_GOOGLETEST_1_8 TRUE) 824 + set (GTEST_INSTALL_DIR ${usr}/src/googletest/googletest/include) 825 +else() 826 + set (GTEST_INSTALL_DIR${usr}/src/gmock/gtest/include) 827 +endif() 828 + 829 #gtest 830 -set(GTEST_INSTALL_DIR /usr/src/gmock/gtest/include) 831 -find_path(GTEST_INCLUDE_DIR gtest/gtest.h 832 - HINTS ${GTEST_INSTALL_DIR}) 833 +find_path( 834 + GTEST_INCLUDE_DIR gtest/gtest.h 835 + HINTS${GTEST_INSTALL_DIR} 836 +) 837 838 #gmock 839 -find_path(GMOCK_INSTALL_DIR gmock/CMakeLists.txt 840 - HINTS /usr/src) 841 +find_path( 842 + GMOCK_INSTALL_DIR CMakeLists.txt 843 + HINTS ${usr}/src/googletest${usr}/src/gmock) 844 if(${GMOCK_INSTALL_DIR} STREQUAL "GMOCK_INSTALL_DIR-NOTFOUND") 845 message(FATAL_ERROR "google-mock package not found") 846 endif() 847 848 -set(GMOCK_INSTALL_DIR${GMOCK_INSTALL_DIR}/gmock) 849 find_path(GMOCK_INCLUDE_DIR gmock/gmock.h) 850 851 -set(GMOCK_PREFIX gmock) 852 -set(GMOCK_BINARY_DIR ${CMAKE_BINARY_DIR}/${GMOCK_PREFIX}/libs) 853 -set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest) 854 +if (USING_GOOGLETEST_1_8) 855 + set(GMOCK_BASE_BINARY_DIR${CMAKE_BINARY_DIR}/gmock/libs) 856 + set(GMOCK_BINARY_DIR ${GMOCK_BASE_BINARY_DIR}/googlemock) 857 + set(GTEST_BINARY_DIR${GMOCK_BINARY_DIR}/gtest) 858 +else() 859 + set(GMOCK_BASE_BINARY_DIR ${CMAKE_BINARY_DIR}/gmock/libs) 860 + set(GMOCK_BINARY_DIR${GMOCK_BASE_BINARY_DIR}) 861 + set(GTEST_BINARY_DIR ${GMOCK_BINARY_DIR}/gtest) 862 +endif() 863 864 set(GTEST_CXX_FLAGS "-fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64") 865 if (cmake_build_type_lower MATCHES "threadsanitizer") 866 @@ -30,13 +50,18 @@ 867 set(GTEST_CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}") 868 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}) 869 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}) 870 + 871 +if (USING_GOOGLETEST_1_8) 872 + list(APPEND GTEST_CMAKE_ARGS -DBUILD_GTEST=ON) 873 +endif() 874 + 875 if (cmake_build_type_lower MATCHES "threadsanitizer") 876 #Skip compiler check, since if GCC is the compiler, we need to link against -ltsan 877 #explicitly; specifying additional linker flags doesn't seem possible for external projects 878 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_CXX_COMPILER_WORKS=1) 879 endif() 880 if (${CMAKE_CROSSCOMPILING}) 881 - if(DEFINED MIR_NDK_PATH) 882 + if(DEFINED MIR_CHROOT) 883 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_MODULE_PATH}/LinuxCrossCompile.cmake) 884 else() 885 list(APPEND GTEST_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}) 886 @@ -52,7 +77,7 @@ 887 SOURCE_DIR${GMOCK_INSTALL_DIR} 888 #forward the compilers to the subproject so cross-arch builds work 889 CMAKE_ARGS ${GTEST_CMAKE_ARGS} 890 - BINARY_DIR${GMOCK_BINARY_DIR} 891 + BINARY_DIR ${GMOCK_BASE_BINARY_DIR} 892 893 #we don't need to install, so skip 894 INSTALL_COMMAND "" 895 896 === modified file 'cmake/FindLibHardware.cmake' 897 --- cmake/FindLibHardware.cmake 2016-03-16 06:59:01 +0000 898 +++ cmake/FindLibHardware.cmake 2017-06-05 10:46:31 +0000 899 @@ -7,7 +7,7 @@ 900 INCLUDE(FindPackageHandleStandardArgs) 901 902 find_package( PkgConfig ) 903 -pkg_search_module(ANDROID_HEADERS REQUIRED android-headers) 904 +pkg_search_module(ANDROID_HEADERS REQUIRED android-headers-23) 905 set(LIBHARDWARE_INCLUDE_DIRS${ANDROID_HEADERS_INCLUDE_DIRS}) 906 907 find_library(LIBHARDWARE_LIBRARY 908 909 === modified file 'cmake/LinuxCrossCompile.cmake' 910 --- cmake/LinuxCrossCompile.cmake 2016-01-29 08:18:22 +0000 911 +++ cmake/LinuxCrossCompile.cmake 2017-06-05 10:46:31 +0000 912 @@ -1,7 +1,7 @@ 913 set(CMAKE_SYSTEM_NAME Linux) 914 set(CMAKE_SYSTEM_VERSION 1) 915 916 -set(MIR_NDK_PATH $ENV{MIR_NDK_PATH} CACHE STRING "path of mir android bundle") 917 +set(MIR_CHROOT$ENV{MIR_CHROOT} CACHE STRING "path of mir android bundle") 918 919 if (NOT DEFINED MIR_TARGET_MACHINE) 920 set(MIR_TARGET_MACHINE $ENV{MIR_TARGET_MACHINE} CACHE STRING "target machine") 921 @@ -14,28 +14,28 @@ 922 set(CMAKE_CXX_COMPILER /usr/bin/${MIR_TARGET_MACHINE}-g++${MIR_GCC_VARIANT}) 923 924 # where to look to find dependencies in the target environment 925 -set(CMAKE_FIND_ROOT_PATH "${MIR_NDK_PATH}") 926 +set(CMAKE_FIND_ROOT_PATH "${MIR_CHROOT}") 927 928 #treat the chroot's includes as system includes 929 -include_directories(SYSTEM "${MIR_NDK_PATH}/usr/include" "${MIR_NDK_PATH}/usr/include/${MIR_TARGET_MACHINE}") 930 -list(APPEND CMAKE_SYSTEM_INCLUDE_PATH "${MIR_NDK_PATH}/usr/include" "${MIR_NDK_PATH}/usr/include/${MIR_TARGET_MACHINE}" ) 931 +include_directories(SYSTEM "${MIR_CHROOT}/usr/include" "${MIR_CHROOT}/usr/include/${MIR_TARGET_MACHINE}") 932 +list(APPEND CMAKE_SYSTEM_INCLUDE_PATH "${MIR_CHROOT}/usr/include" "${MIR_CHROOT}/usr/include/${MIR_TARGET_MACHINE}" ) 933 934 # Add the chroot libraries as system libraries 935 list(APPEND CMAKE_SYSTEM_LIBRARY_PATH 936 - "${MIR_NDK_PATH}/lib" 937 - "${MIR_NDK_PATH}/lib/${MIR_TARGET_MACHINE}" 938 - "${MIR_NDK_PATH}/usr/lib" 939 - "${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}" 940 + "${MIR_CHROOT}/lib" 941 + "${MIR_CHROOT}/lib/${MIR_TARGET_MACHINE}" 942 + "${MIR_CHROOT}/usr/lib" 943 + "${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}" 944 ) 945 946 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) 947 set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) 948 set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG "-Wl,-rpath-link,") 949 set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG "-Wl,-rpath-link,") 950 -set(CMAKE_INSTALL_RPATH "${MIR_NDK_PATH}/lib:${MIR_NDK_PATH}/lib/${MIR_TARGET_MACHINE}:${MIR_NDK_PATH}/usr/lib:${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}") 951 +set(CMAKE_INSTALL_RPATH "${MIR_CHROOT}/lib:${MIR_CHROOT}/lib/${MIR_TARGET_MACHINE}:${MIR_CHROOT}/usr/lib:${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}") 952 953 -set(ENV{PKG_CONFIG_PATH} "${MIR_NDK_PATH}/usr/lib/pkgconfig:${MIR_NDK_PATH}/usr/lib/${MIR_TARGET_MACHINE}/pkgconfig") 954 -set(ENV{PKG_CONFIG_SYSROOT_DIR} "${MIR_NDK_PATH}") 955 +set(ENV{PKG_CONFIG_PATH} "${MIR_CHROOT}/usr/lib/pkgconfig:${MIR_CHROOT}/usr/lib/${MIR_TARGET_MACHINE}/pkgconfig") 956 +set(ENV{PKG_CONFIG_SYSROOT_DIR} "${MIR_CHROOT}") 957 958 #use only the cross compile system 959 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 960 961 === modified file 'cmake/MirCommon.cmake' 962 --- cmake/MirCommon.cmake 2016-03-16 06:59:01 +0000 963 +++ cmake/MirCommon.cmake 2017-06-05 10:46:31 +0000 964 @@ -28,7 +28,8 @@ 965 set(VALGRIND_CMD${VALGRIND_CMD} "--track-fds=yes") 966 set(VALGRIND_CMD ${VALGRIND_CMD} "--num-callers=128") 967 set(VALGRIND_CMD${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_generic") 968 - set(VALGRIND_CMD${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.21") 969 + set(VALGRIND_CMD${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_glibc_2.23") 970 + set(VALGRIND_CMD${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_libhybris") 971 if (TARGET_ARCH STREQUAL "arm-linux-gnueabihf") 972 set(VALGRIND_CMD${VALGRIND_CMD} "--suppressions=${CMAKE_SOURCE_DIR}/tools/valgrind_suppressions_armhf") 973 endif() 974 @@ -98,7 +99,7 @@ 975 976 # Final commands 977 set(test_cmd "${test_cmd}" "--gtest_filter=-${test_no_memcheck_filter}:${test_exclusion_filter}") 978 - set(test_cmd_no_memcheck "${test_cmd_no_memcheck}" "--gtest_filter=${test_no_memcheck_filter}:-${test_exclusion_filter}") 979 + set(test_cmd_no_memcheck "${test_cmd_no_memcheck}" "--gtest_death_test_style=threadsafe" "--gtest_filter=${test_no_memcheck_filter}:-${test_exclusion_filter}") 980 if(DETECT_FD_LEAKS) 981 set(test_cmd ${CMAKE_SOURCE_DIR}/tools/detect_fd_leaks.bash${test_cmd}) 982 endif() 983 @@ -117,10 +118,10 @@ 984 list_to_string("${test_cmd_no_memcheck}" "" discover_cmd_no_memcheck) 985 986 file(APPEND${CMAKE_BINARY_DIR}/discover_all_tests.sh 987 - "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh${discover_env} -- ${discover_cmd}\n") 988 + "sh${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} --test-name${test_name} -- ${discover_cmd}\n") 989 if (test_no_memcheck_filter) 990 file(APPEND${CMAKE_BINARY_DIR}/discover_all_tests.sh 991 - "sh ${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh${discover_env} -- ${discover_cmd_no_memcheck}\n") 992 + "sh${CMAKE_SOURCE_DIR}/tools/discover_gtests.sh ${discover_env} --test-name${test_name}_no_memcheck -- ${discover_cmd_no_memcheck}\n") 993 endif() 994 endfunction () 995 996 @@ -169,11 +170,7 @@ 997 set(TARGET_COMPILE_DEFINITIONS "$<$:-D$\n>") 998 999 foreach(dir ${TARGET_INCLUDE_DIRECTORIES}) 1000 - if (${dir} MATCHES "usr/include") 1001 - set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -isystem${dir}") 1002 - else() 1003 - set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -I${dir}") 1004 - endif() 1005 + set(TARGET_INCLUDE_DIRECTORIES_STRING "${TARGET_INCLUDE_DIRECTORIES_STRING} -I${dir}") 1006 endforeach() 1007 1008 # So. 1009 @@ -304,21 +301,3 @@ 1010 ) 1011 add_dependencies(${DEPENDENT_TARGET}${TARGET_NAME}) 1012 endfunction() 1013 - 1014 -function (mir_add_library_with_symbols TARGET TYPE SYMBOLS_FILE) 1015 - # Bask in the majesty of CMake! 1016 - # 1017 - # You can't just depend on an arbitary file. Oh, no! 1018 - # 1019 - # Instead, we add a custom command to generate an empty C++ source 1020 - # file, depending on the symbols file, and then add that empty C++ 1021 - # source to the library. 1022 - set(HACK_OUTPUT ${TARGET}_abysmal_hack.cpp) 1023 - 1024 - add_custom_command(OUTPUT${HACK_OUTPUT} 1025 - COMMAND touch ${HACK_OUTPUT} 1026 - DEPENDS${SYMBOLS_FILE} 1027 - ) 1028 - 1029 - add_library(${TARGET}${TYPE} ${HACK_OUTPUT}${ARGN}) 1030 -endfunction() 1031 1032 === modified file 'cross-compile-chroot.sh' 1033 --- cross-compile-chroot.sh 2016-03-16 06:59:01 +0000 1034 +++ cross-compile-chroot.sh 2017-06-05 10:46:31 +0000 1035 @@ -26,10 +26,10 @@ 1036 dist=vivid 1037 clean=0 1038 update_build_dir=0 1039 - 1040 +enable_tests=yes 1041 target_arch=armhf 1042 1043 -while getopts "a:cd:hu" OPTNAME 1044 +while getopts "a:cd:hut:" OPTNAME 1045 do 1046 case $OPTNAME in 1047 a ) 1048 @@ -55,6 +55,9 @@ 1049 usage 1050 exit 1; 1051 ;; 1052 + t ) 1053 + enable_tests=${OPTARG} 1054 + ;; 1055 * ) 1056 echo "invalid option specified" 1057 usage 1058 @@ -77,11 +80,11 @@ 1059 BUILD_DIR=build-${target_arch}-${dist} 1060 fi 1061 1062 -if [ "${MIR_NDK_PATH}" = "" ]; then 1063 - export MIR_NDK_PATH=~/.cache/mir-${target_arch}-chroot-${dist} 1064 +if [ "${MIR_CHROOT}" = "" ]; then 1065 + export MIR_CHROOT=~/.cache/mir-${target_arch}-chroot-${dist} 1066 fi 1067 1068 -if [ ! -d ${MIR_NDK_PATH} ]; then 1069 +if [ ! -d${MIR_CHROOT} ]; then 1070 echo "no partial chroot dir detected. attempting to create one" 1071 _do_update_chroot=1 1072 fi 1073 @@ -91,7 +94,7 @@ 1074 fi 1075 1076 echo "Building for distro: $dist" 1077 -echo "Using MIR_NDK_PATH:${MIR_NDK_PATH}" 1078 +echo "Using MIR_CHROOT: ${MIR_CHROOT}" 1079 1080 additional_repositories= 1081 if [${dist} == "vivid" ] ; then 1082 @@ -101,6 +104,10 @@ 1083 gcc_variant= 1084 if [ "${dist}" = "vivid" ]; then 1085 gcc_variant=-4.9 1086 +elif [ "${dist}" = "wily" -o "${dist}" = "xenial" ]; then 1087 + gcc_variant=-5 1088 +elif [ "${dist}" = "yakkety" -o "${dist}" = "zesty" ]; then 1089 + gcc_variant=-6 1090 fi 1091 1092 case${target_arch} in 1093 @@ -144,7 +151,7 @@ 1094 1095 if [ ${_do_update_chroot} -eq 1 ] ; then 1096 pushd tools > /dev/null 1097 - ./setup-partial-armhf-chroot.sh -d${dist} -a ${target_arch}${additional_repositories} ${MIR_NDK_PATH} 1098 + ./setup-partial-armhf-chroot.sh -d${dist} -a ${target_arch}${additional_repositories} ${MIR_CHROOT} 1099 popd > /dev/null 1100 # force a clean build after an update, since CMake cache maybe out of date 1101 clean_build_dir${BUILD_DIR} 1102 @@ -152,17 +159,19 @@ 1103 1104 pushd ${BUILD_DIR} > /dev/null 1105 1106 - export PKG_CONFIG_PATH="${MIR_NDK_PATH}/usr/lib/pkgconfig:${MIR_NDK_PATH}/usr/lib/${target_machine}/pkgconfig" 1107 + export PKG_CONFIG_PATH="${MIR_CHROOT}/usr/lib/pkgconfig:${MIR_CHROOT}/usr/lib/${target_machine}/pkgconfig" 1108 export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 1109 export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 1110 - export PKG_CONFIG_SYSROOT_DIR=$MIR_NDK_PATH 1111 + export PKG_CONFIG_SYSROOT_DIR=$MIR_CHROOT 1112 export PKG_CONFIG_EXECUTABLE=which pkg-config 1113 export MIR_TARGET_MACHINE=${target_machine} 1114 export MIR_GCC_VARIANT=${gcc_variant} 1115 + export CMAKE_PREFIX_PATH=$MIR_CHROOT/usr/lib/${target_machine}/cmake 1116 echo "Using PKG_CONFIG_PATH:$PKG_CONFIG_PATH" 1117 echo "Using PKG_CONFIG_EXECUTABLE: $PKG_CONFIG_EXECUTABLE" 1118 cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LinuxCrossCompile.cmake \ 1119 - -DMIR_PLATFORM=${mir_platform} \ 1120 + -DMIR_PLATFORM=${mir_platform} -DMIR_ENABLE_TESTS=${enable_tests}\ 1121 + -DMIR_USE_PRECOMPILED_HEADERS=OFF \ 1122 .. 1123 1124 make -j${NUM_JOBS}$@ 1125 1126 === modified file 'debian/changelog' 1127 --- debian/changelog 2016-03-30 00:23:20 +0000 1128 +++ debian/changelog 2017-06-05 10:46:31 +0000 1129 @@ -1,3 +1,658 @@ 1130 +mir (0.26.3) UNRELEASED; urgency=medium 1131 + 1132 + [ Daniel van Vugt ] 1133 + * New upstream release 0.26.3 (https://launchpad.net/mir/+milestone/0.26.3) 1134 + - Enhancements: 1135 + . Make deprecations optional (and default to off for builds on 16.04 LTS) 1136 + . Added support for building on Ubuntu 17.10 artful. 1137 + - Bugs fixed: 1138 + . Mir needs to be updated to 0.26 in 16.04LTS (LP: #1685186) 1139 + . unity-system-compositor crashed with SIGSEGV in 1140 + libinput_device_config_accel_is_available() from 1141 + libinput_device_config_accel_set_speed() from 1142 + mir::input::evdev::LibInputDevice::apply_settings() (LP: #1672955) 1143 + . Please transition to Boost 1.62 (LP: #1675138) 1144 + . Mir sending key repeat events continually to nested shell after VT 1145 + switch (causes Unity8 lockup for a while) (LP: #1675357) 1146 + . mir_demo_standalone_render_overlays fails to link (LP: #1677239) 1147 + 1148 + -- Alan Griffiths Fri, 26 May 2017 16:57:20 +0000 1149 + 1150 +mir (0.26.2) UNRELEASED; urgency=medium 1151 + 1152 + [ Mattia Rizzolo ] 1153 + * Patch the code to use unversioned runtime boost libraries (LP: #1675138). 1154 + 1155 + -- Gianfranco Costamagna Fri, 24 Mar 2017 22:58:36 +0100 1156 + 1157 +mir (0.26.2) UNRELEASED; urgency=medium 1158 + 1159 + [ Daniel van Vugt ] 1160 + * New upstream release 0.26.2 (https://launchpad.net/mir/+milestone/0.26.2) 1161 + - Bugs fixed: 1162 + . EDID does not change when hotplugging a monitor (LP: #1660017) 1163 + . [regression] mirout crashes when connecting to unity8 or any nested 1164 + server: [libprotobuf FATAL /usr/include/google/protobuf/repeated_field. 1165 + h:1408] CHECK failed: (index) < (current_size_) (LP: #1661163) 1166 + . Mir server crashed with SIGSEGV in 1167 + mir::compositor::TemporaryBuffer::size() called from 1168 + mir::gl::tessellate_renderable_into_rectangle() (LP: #1664760) 1169 + . Nested servers (Unity8) periodically stutter (half frame rate) with 1170 + Mir 0.26.1 (LP: #1666372) 1171 + . Don't dereference the end iterator in ms::ApplicationSession:: 1172 + surface_after() (LP: #1667645) 1173 + . [regression] OSK input shaping no longer works correctly (LP: #1669444) 1174 + . Setting MirWindowSpec parameters always causes window's input_region 1175 + to be reset (LP: #1670876) 1176 + . Subpixel order not included in Mir display information (LP: #1393578) 1177 + . Presentation chains should support various swap interval modes 1178 + (LP: #1673533) 1179 + . Need an extension for GBM buffers to replace 1180 + mir_buffer_get_buffer_package() (LP: #1673534) 1181 + . Seg fault on detect_fd_leaks (LP: #1661498) 1182 + 1183 + -- Cemil Azizoglu Wed, 22 Mar 2017 04:54:19 +0000 1184 + 1185 +mir (0.26.1) UNRELEASED; urgency=medium 1186 + 1187 + * New upstream release 0.26.1 (https://launchpad.net/mir/+milestone/0.26.1) 1188 + - ABI summary: 1189 + . mirclient ABI unchanged at 9 1190 + . mirserver ABI unchanged at 43 1191 + . mircommon ABI unchanged at 7 1192 + . mirplatform ABI bumped to 15 1193 + . mirprotobuf ABI unchanged at 3 1194 + . mirplatformgraphics ABI bumped to 12 1195 + . mirclientplatform ABI unchanged at 5 1196 + . mirinputplatform ABI unchanged at 6 1197 + . mircore ABI unchanged at 1 1198 + - Enhancements: 1199 + . Support for MirBuffer API that allows for better management of 1200 + hardware/software buffers. 1201 + . Support for MirPresentationChain API that allows better control 1202 + over {de}queueing of individual buffers {from}to the server. 1203 + . Interim support for MirRenderSurface API that provides a unit of 1204 + renderable for lower level content such as MirBufferStreams and 1205 + MirPresentationChains, etc.. MirRenderSurface API is marked 1206 + deprecated as it (and the relevant entry points) will be renamed to 1207 + MirSurface before general availability. It will initially be used for 1208 + revamping support for EGL drivers. 1209 + . Synchronous version of mir_prompt_session_new_fds_for_prompt_providers() 1210 + API (mir_prompt_session_new_fds_for_prompt_providers_sync()) added for 1211 + convenience. 1212 + . Better name for MirPersistentId-->MirWindowId. MirPersistentId has now 1213 + been deprecated. 1214 + - Bugs fixed: 1215 + . [regression] Unity8 stutters constantly (like half frame rate). 1216 + (LP: #1661128) 1217 + . mir 0.26 - spinner loading animation, minimize, maximize too fast. 1218 + (LP: #1661072) 1219 + . [regression] Nested server segfaults or rapidly logs exceptions when a 1220 + fullscreen client starts [in mir_presentation_chain_set_dropping_mode 1221 + ... std::exception::what: Operation not permitted] (LP: #1661508) 1222 + . mir_window_request_persistent_id_sync seg faults when called twice. 1223 + (LP: #1661704) 1224 + . [regression] Windowed clients of nested servers are all black. 1225 + (LP: #1661521) 1226 + . Mir graphics platform ABI broke in series 0.26 but sonames never 1227 + changed (LP: #1662455) 1228 + . Fixes for 0.26 changelog. 1229 + . [regression] mirscreencast hangs during screencast creation. (LP: #1662997) 1230 + . libmirclient-dev missing build dependency on libmircore-dev. (LP: #1662942) 1231 + . mir_window_spec_set_cursor_name() doesn't trigger 1232 + mir::scene::SurfaceObserver::cursor_image_set_to. (LP: #1663197) 1233 + . [regression] Software clients of nested servers are all black in Mir 0.25.0 1234 + and later. (LP: #1663062) 1235 + 1236 + -- Cemil Azizoglu Thu, 09 Feb 2017 21:46:32 +0000 1237 + 1238 +mir (0.26.0) UNRELEASED; urgency=medium 1239 + 1240 + * New upstream release 0.26.0 (https://launchpad.net/mir/+milestone/0.26.0) 1241 + - ABI summary: 1242 + . mirclient ABI unchanged at 9 1243 + . mirserver ABI bumped to 43 1244 + . mircommon ABI unchanged at 7 1245 + . mirplatform ABI unchanged at 14 1246 + . mirprotobuf ABI unchanged at 3 1247 + . mirplatformgraphics ABI unchanged at 11 1248 + . mirclientplatform ABI unchanged at 5 1249 + . mirinputplatform ABI unchanged at 6 1250 + . mircore ABI unchanged at 1 1251 + - Enhancements: 1252 + . New and improved client APIs: MirInputConfig, MirWindow, DisplayConfig, 1253 + MirScreencastSpec. 1254 + . Support for setting the input configuration. 1255 + . Introduced an extension mechanism for platform-specific APIs. 1256 + . Support for screencasting to a specific MirBuffer. 1257 + . Added DisplayConfigurationController::base_configuration() so 1258 + downstreams can get the base configuration (weirdly they can already 1259 + set it). 1260 + . X11 platform: Allow adjustable scale parameter. 1261 + . Added monitor EDID support to both the client API and server-side. 1262 + . mirout: Now shows scaling factor, subpixel arrangement, form factor and 1263 + EDID. 1264 + . mirout: Can now change the monitor configuration as well as report it. 1265 + . Replace the mir::Server-overridable Reports with Observers. 1266 + . Deprecate legacy toolkit APIs that will be removed in Mir 1.0 1267 + . Introduced client-side vsync which dramatically reduces latency 1268 + from the client to the screen, by up to 44ms. 1269 + . Removed all input resampling logic. We now expect toolkits to do their 1270 + own, if at all. This reduces input lag by up to 16.9ms, or 8.4ms on 1271 + average. 1272 + - Bugs fixed: 1273 + . [performance] Restore support for better-than-triple buffering by 1274 + default. (LP: #1240909) 1275 + . Frame rate is artificially low on Diamondville Intel Atom systems due 1276 + to aggressive power management (LP: #1388490) 1277 + . [testsfail] failure in CI in 1278 + AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_frameskipping 1279 + (LP: #1394369) 1280 + . [trusted prompt sessions] Can't open two prompt sessions at the same 1281 + time (LP: #1494197) 1282 + . Changing scale, formFactor or DPI in display configuration causes 1283 + renderer teardown/recreate unnecessarily (LP: #1556142) 1284 + . [testsfail] ApplicationNotRespondingDetection.failure_to_pong_is_ 1285 + noticed (LP: #1570327) 1286 + . CI failure in TestClientInput.receives_one_touch_event_per_frame 1287 + (LP: #1570698) 1288 + . Mir-on-X mouse input is jerky/stuttery compared to Mir-on-KMS 1289 + (LP: #1576600) 1290 + . [regression] Two fingers in mir_proving_server now resizes/moves app 1291 + windows (two finger apps unusable) (LP: #1586311) 1292 + . Pointer/cursor input lag in unity8 session (LP: #1591328) 1293 + . PointerConfinement.test_we_update_our_confined_region_on_a_resize 1294 + (LP: #1606418) 1295 + . [ FAILED ] ClientLatency.throttled_input_rate_yields_lower_latency 1296 + (LP: #1624188) 1297 + . Valgrind failure on mir_acceptance_tests - leak on incoming buffer in 1298 + Requests::free_buffer(int) (LP: #1628794) 1299 + . Add support for returning monitor EDIDs (LP: #1634868) 1300 + . When pointer motion crosses window borders SurfaceInputDispatcher 1301 + injected events increase accumulated relative motion (LP: #1639749) 1302 + . [ FAILED ] ClientLatency.dropping_latency_is_limited_to_one (AKA 1303 + dropping_latency_is_closer_to_zero_than_one) (LP: #1640366) 1304 + . Server::override_the_coordinate_translator() cannot be effectively used 1305 + downstream (LP: #1641166) 1306 + . [regression] FTBFS when cross compiling to yakkety from zesty: 1307 + test_client_extensions.cpp: error: ‘Ne’ was not declared in this scope 1308 + (LP: #1642473) 1309 + . [regression] mir_proving_server crashes with std::exception::what: 1310 + add_options() must be called before the_options() (LP: #1642504) 1311 + . [ FAILED ] NestedServer.nested_platform_connects_and_disconnects 1312 + (LP: #1643432) 1313 + . googletest 1.8.0-2 (on zesty) breaks existing builds [add_library 1314 + cannot create target "gmock" ...] (LP: #1644062) 1315 + . [regression] Those mir_demo_client_* which default to fullscreen now 1316 + ignore the size parameter (-s WIDTHxHEIGHT) (LP: #1644075) 1317 + . Shell doesn't know when base display config has changed (LP: #1644189) 1318 + . miral::ActiveOutputsMonitor (and therefore miral-shell --window-manager 1319 + tiling) are broken by lp:mir (LP: #1645284) 1320 + . mir_proving_server's four finger swipe to switch apps leaks touch 1321 + events to the clients (LP: #1646700) 1322 + . [regression] Cross compiling from zesty to yakkety fails with *** No 1323 + rule to make target 'gmock/libs/googlemock/gtest/libgtest.a' (LP: 1324 + #1646704) 1325 + . [ FAILED ] ThreadedDispatcherDeathTest.destroying_dispatcher_from_a_ 1326 + callback_is_an_error (LP: #1647573) 1327 + . [regression] eglapps now all have window title "default" (LP: #1647575) 1328 + . Package mirtest-dev is missing a dependency on mir-renderer-gl-dev 1329 + (LP: #1651391) 1330 + . EDID data is missing in nested servers (LP: #1651633) 1331 + . [regression] Latency for fullscreen interval 0 clients (e.g. games and 1332 + benchmarks) increased with the introduction of nested passthrough 1333 + (LP: #1651638) 1334 + . Race between MirConnection::released() and 1335 + MirConnection::~MirConnection() causes deadlocks, possible crashes and 1336 + memory corruption (LP: #1653658) 1337 + . DisplayConfigurationTest.configure_session_removed_display failure 1338 + (LP: #1653789) 1339 + . [regression] Development headers reference unknown header 1340 + "mir_toolkit/mir_input_device_types.h" so some clients can't build at 1341 + all any more (LP: #1654023) 1342 + . [regression] mir_acceptance_tests' death tests leave behind core files 1343 + (LP: #1654478) 1344 + . Setting the event handler after the surface has been created does 1345 + nothing (LP: #1654612) 1346 + . [ FAILED ] RaiseSurfaces.key_event_with_cookie (LP: #1655293) 1347 + . Black screen with Raspberry Pi 3 VC4 Mesa driver (LP: #1656164) 1348 + . i386 FTBFS: 1349 + src/platforms/eglstream-kms/server/kms_display_configuration.cpp:88:47: 1350 + error: narrowing conversion of ‘..._drmModeConnector::connector_id’ 1351 + from ‘uint32_t {aka unsigned int}’ to ‘EGLAttrib {aka int}’ inside { } 1352 + [-Werror=narrowing] (LP: #1656633) 1353 + . android: overlays no longer are activated (LP: #1657755) 1354 + . Mir FTBFS with MIR_USE_PRECOMPILED_HEADERS=OFF: error: ISO C++11 1355 + requires at least one argument for the "..." in a variadic macro 1356 + [-Werror] (LP: #1658604) 1357 + . [regression] Mir cross-compile to vivid/armhf FTBFS with: 1358 + mock_input_device_hub.h:33:18: error: ‘add_observer’ is not a type 1359 + (LP: #1658605) 1360 + . Caught exception at Mir/EGL driver boundary (in setSwapInterval) in 1361 + clients and tests (LP: #1659298) 1362 + . Support display scaling slider in unity8 (LP: #1645372) 1363 + 1364 + -- Cemil Azizoglu Thu, 26 Jan 2017 23:29:33 +0000 1365 + 1366 +mir (0.25.0) UNRELEASED; urgency=medium 1367 + 1368 + * New upstream release 0.25.0 (https://launchpad.net/mir/+milestone/0.25.0) 1369 + - ABI summary: 1370 + . mirclient ABI unchanged at 9 1371 + . mirserver ABI bumped to 42 1372 + . mircommon ABI bumped to 7 1373 + . mirplatform ABI bumped to 14 1374 + . mirprotobuf ABI unchanged at 3 1375 + . mirplatformgraphics ABI bumped to 11 1376 + . mirclientplatform ABI unchanged at 5 1377 + . mirinputplatform ABI bumped to 6 1378 + . mircore ABI added, at version 1 1379 + - Enhancements: 1380 + . Added pointer confinement support 1381 + . Identify Raspberry Pi output types correctly 1382 + . Added dead key and compose key support 1383 + . Added gamma support for KMS hardware 1384 + . Added yakkety and zesty gcc-6 support 1385 + . Added surface passthrough support for fullscreen clients of nested 1386 + servers 1387 + . Introduced a new library libmircore' 1388 + . Began migrating from Protobuf to Cap'n Proto starting with events 1389 + . Began support for VirtualBox (servers now start instead of crashing 1390 + but full support for GL clients is still missing) 1391 + . Began support for high precision frame timing, implemented for the 1392 + KMS, Android and X11 backends so far 1393 + . Added --display-report support for the X11 backend 1394 + . Improved reliability of mirvanity' latency test tool 1395 + . Moved to using the CSS cursor naming scheme internally, although 1396 + the old symbolic indentifiers remain unchanged and still work 1397 + . Added refresh rate to MirSurfaceOutputEvent 1398 + . Many improvements to automated test quality and coverage 1399 + . Smoother desktop zoom using mir_proving_server (Super + two fingers) 1400 + - Bugs fixed: 1401 + . FTBFS On Zesty: invalid use of 1402 + 'struct native_handle' (LP: #1638774) 1403 + . libmirclient-debug-extension-dev install debug/surface.h 1404 + twice (LP: #1639153) 1405 + . Mir crashes on virtual box drmModeCrtcSetGamma 1406 + Function not implemented (LP: #1638220) 1407 + . Flickering in mir_demo_client_multistream (LP: #1635273) 1408 + . Camera apps (camera & vanity) never exit (LP: #1635010) 1409 + . Clients cannot connect when MIR_SOCKET="" (LP: #1634508) 1410 + . mirtest-dev packaging fails to sepcify boost depends (LP: #1633537) 1411 + . cursor.h is unclear about mir_diagonal_resize_* (LP: #1626924) 1412 + . Inconsistent underscores in cursor names (LP: #1632617) 1413 + . [regression] Accidental libmircommon.so.6 break (LP: #1617865) 1414 + . [regression] mir demo server fails to start with mx4 (LP: #1615703) 1415 + . [regression] Trust prompt now shown when starting camera (LP: #1612256) 1416 + . [regression] make abi-check fails to build (LP: #1626866) 1417 + . Nested servers prevent overlays or fullscreen bypass (LP: #1262116) 1418 + . Failed to get PRIME fd from gbm bo (LP: #1607812) 1419 + . Mir-on-X is difficult to use on 1366x768 laptop (LP: #1590959) 1420 + . Remove useless message 'Surface 0 DPI' in demos (LP: #1559831) 1421 + . Mir fails to cross-build with newer sbuild (LP: #1628507) 1422 + . Infinite loop in AbstractShell::focus_next_session (LP: #1625401) 1423 + . Destroying a presentation chain doesn't trigger ownership 1424 + notification to client (LP: #1626503) 1425 + . Keyboard layout not applied on the shell (LP: #1626435) 1426 + . Warning, No syntax specified for the proto file (LP: #1624971) 1427 + . display-report=log reports vsync on non-existent output number 1428 + (LP: #1621352) 1429 + . libmirserver-dev missing uuid-dev depends (LP: #1617435) 1430 + . debian/control missing epoxy (LP: #1617256) 1431 + . Downstreams need to disable clang diagnostic "-Wreturn-type-clinkage" 1432 + to build against public headers (LP: #1615587) 1433 + . mirtest-dev: mock_display_configuration.h uses mg namespace without 1434 + using it (LP: #1614983) 1435 + . FTBFS using clang (LP: #1609612) 1436 + . mesa-kms doesn't fall back to using software cursor if hardware 1437 + cursor is unavailable (LP: #1610054) 1438 + . StubGraphicsPlatform::create_display() leaves a dubious state 1439 + (LP: #1611337) 1440 + . Mir build/tests fail with gcc-6 and LTO (LP: #1610215) 1441 + . Cross compiling on xenial fails (LP: #1609329) 1442 + . Building with -DMIR_PLATFORM=anroid fails (LP: #1609916) 1443 + . unity-system-compositor crashes on start-up with "Mir fatal error: 1444 + Failed to schedule page flip" (LP: #1584894) 1445 + . mir_connection_create_spec_for_tooltip doesn't meet requirements 1446 + (LP: #1603922) 1447 + . Updating surface size/location needs to update the pointer confinement 1448 + (LP: #1604673) 1449 + . ServerConfigurationOption is not ptest safe (LP: #1607351) 1450 + . HWC's vsync_signal_on is never called when using HWC 1.0 (LP: #1613373) 1451 + . mir_connection_create_spec_for_tooltip does not set aux_rect 1452 + (LP: #1632335) 1453 + . VMware virtual connector recognized by Mir as "unknown" (LP: #1248072) 1454 + . Fix code to match the documentation of CoordinateTranslator - vis "It is 1455 + acceptable ...[to] throw a std::runtime_error" (LP: #1641166) 1456 + . Test timeout MesaDisplayConfigurationTests.* (LP: #1613352) 1457 + . Tests fail when built against lp:mir (LP: #1621917) 1458 + . CI failure MultiThreadedCompositor (LP: #1595940) 1459 + . CI failure in DisplayConfiguration (LP: #1563210) 1460 + . CI failure NestedServer.given_client_set_display_configuration* 1461 + (LP: #1617036) 1462 + . CI failure on krillin in NestedServer.* testes (LP: #1628828) 1463 + . CI failure: PosixRWMutex hangs (LP: #1633920) 1464 + . googletest 1.8.0-2 (on zesty) breaks existing builds [add_library 1465 + cannot create target "gmock" ...] (LP: #1644062) 1466 + 1467 + -- Brandon Schaefer Sat, 03 Dec 2016 12:42:33 +0000 1468 + 1469 +mir (0.24.1) UNRELEASED; urgency=medium 1470 + 1471 + * New upstream release 0.24.1 (https://launchpad.net/mir/+milestone/0.24.1) 1472 + - ABI summary: 1473 + . All ABI numbers remain unchanged. 1474 + . mircommon ABI at 6, but now including a symbol misplaced in 0.24.0 1475 + - Bugs fixed: 1476 + . mirserver ignored further keymap configuration changes after a keyboard 1477 + is configured (LP: #1626435) 1478 + . fix for libmircommon.so.6 ABI break: version stanza of 1479 + mir::dispatch::ReadableFd* moved to newer version (LP: #1617865) 1480 + . clang builds fail (again) (LP: #1609612) 1481 + . Valgrind errors in NesterServer.* cause subsequent tests 1482 + (ServerDisconnect, ServerStartup, UnresponsiveClient) to fail 1483 + (LP: #1612012) 1484 + . Break potentially infinite loop in search for next session to focus 1485 + (LP: #1625401) 1486 + 1487 + -- Andreas Pokorny Wed, 28 Sep 2016 12:09:49 +0000 1488 + 1489 +mir (0.24.0) UNRELEASED; urgency=medium 1490 + 1491 + * New upstream release 0.24.0 (https://launchpad.net/mir/+milestone/0.24.0) 1492 + - ABI summary: 1493 + . mirclient ABI unchanged at 9 1494 + . mirserver ABI bumped to 41 1495 + . mircommon ABI unchanged at 6 1496 + . mirplatform ABI bumped to 12 1497 + . mirprotobuf ABI unchanged at 3 1498 + . mirplatformgraphics ABI bumped to 10 1499 + . mirclientplatform ABI unchanged at 5 1500 + . mirinputplatform ABI unchanged at 5 1501 + - Enhancements: 1502 + . Added a new tool 'mirvanity' which can use a high speed video camera 1503 + to measure client-to-screen latency. 1504 + . Added (build-time) support for desktop full OpenGL servers (disabled 1505 + by default in favor of GLESv2). 1506 + . Introduced new buffer semantics (NBS) and enabled it by default. 1507 + . Avoided using libmirserver in mir_demo_standalone_render_overlays, 1508 + making bringup traces less cluttered. 1509 + . Removed TilingWindowManager from example servers. 1510 + . Added two new mir_*_performance_test tools that are run as part of 1511 + 'mir_performance_tests'. 1512 + . Added pointer confinement to the client API. 1513 + . Added new platform supporting software EGLStreams. 1514 + . Added an input platform that the nested server can use. 1515 + . Allow configuration of the application_not_responding_detector 1516 + . Handle server-side keymapping using XKBMapper. 1517 + . Remove the offscreen display. 1518 + . Add callback option to notify shells that the server is about to stop. 1519 + . Add logging for ANativeWindow events on Android. 1520 + - Bugs fixed: 1521 + . usage of std:call_once in mirclient causes TLS collisions with some 1522 + android devices (LP: #1599867) 1523 + . AltGr not working on external keyboards (LP: #1565236) 1524 + . [regression] unity8 fails to start when built with 0.24 series (lp:mir) 1525 + (LP: #1597717) 1526 + . CI failure in MirSurfaceVisibilityEvent.exposed_received_when_surface_ 1527 + raised_over_occluding_surface [called twice - over-saturated and active] 1528 + (LP: #1556045) 1529 + . package-built mir_demo_server does not start on device (LP: #1577357) 1530 + . During surface creation, first stream in spec becomes default stream. 1531 + (LP: #1577967) 1532 + . mouse is getting stuck on a phantom edge (LP: #1580774) 1533 + . [testsfail] in MirSurfaceVisibilityEvent.exposed_received_when_surface_ 1534 + raised_over_occluding_surface [never called] (LP: #1581385) 1535 + . [enhancement] Add support for full OpenGL compositing (LP: #1420581) 1536 + . [testsfail] ServerSignal.terminate_handler_is_called_for_SIGINT|SIGTERM 1537 + (LP: #1570353) 1538 + . [testsfail] ClientLatency.triple_buffered_client_has_less_than_two_ 1539 + frames_latency (LP: #1576690) 1540 + . [testsfail] NestedServer.when_monitor_plugged_in_client_is_notified_of_ 1541 + new_display_configuration (LP: #1576760) 1542 + . mir server crashed in what(): drmModeMoveCursor failed (returned -13) 1543 + (LP: #1579630) 1544 + . mirtest-dev is hard to use as the objects used are compiled with LTO 1545 + (LP: #1583536) 1546 + . [testsfail] ClientLogging.reports_performance [Value of: lag] 1547 + (LP: #1583970) 1548 + . [ FAILED ] ClientLogging.reports_performance (Value of: nbuffers) 1549 + (LP: #1584603) 1550 + . [ FAILED ] ClientLogging.reports_performance (Value of: render) 1551 + (LP: #1584605) 1552 + . ClientCredsTestFixture.session_authorizer_receives_pid_of_connecting_ 1553 + clients failure (LP: #1587604) 1554 + . Mir on X11 ignores mir::graphics::GLConfig depth & stencil buffer size 1555 + (LP: #1589632) 1556 + . Need to support pointer confinement (LP: #1590099) 1557 + . [tests] given_nested_server_set_base_display_configuration_when_ 1558 + monitor_plugged_in_configuration_is_reset fails (LP: #1591354) 1559 + . CI failure in DemoInProcessServerWithStubClientPlatform.surface_ 1560 + creation_does_not_leak_fds (LP: #1598802) 1561 + . Screen is squashed/distorted when rotated in Mir-on-X11 (LP: #1577262) 1562 + . --display-report=log shows some invalid uninitialized EGL attribute 1563 + values (LP: #1582066) 1564 + . mir_demo_client_eglplasma falls back to software rendering on i915 1565 + (Intel Atoms), which explains why it's so slow (LP: #1583532) 1566 + . [regression] x11 platform only draws to a small part of the x11 window 1567 + (LP: #1598267) 1568 + . mir ftbfs in yakkety builders (LP: #1600343) 1569 + . Autolanding keeps failing: mock_egl.h:89:7: error: type 'struct 1570 + MockEGL' violates one definition rule [-Werror=odr] (LP: #1603303) 1571 + . [regression] The Super/Windows key doesn't work any more (LP: #1602966) 1572 + . mir_acceptance_tests.bin: double free or corruption (fasttop) 1573 + (LP: #1603114) 1574 + . ftbfs in linking libmir-test-assist.a in xenial+overlay and 1575 + yakkety+overlay (LP: #1601810) 1576 + . [testsfail] failure in NestedInput.on_input_device_state_nested_* 1577 + (LP: #1602646) 1578 + . mirtest-dev provides an incorrect .pc file (LP: #1603080) 1579 + . mir_test_framework::server_platform_path(), 1580 + mir_test_framework::server_platform() don't support use in a downstream 1581 + test built against mir-test-assist (LP: #1603091) 1582 + . Servers based on Mir need a hook to execute code when the server is 1583 + closing (LP: #1593655) 1584 + . Android graphics platform doesn't get packaged for arm64 (LP: #157866) 1585 + . memory leaks in unit tests on android (LP: #1253486) 1586 + . Physical "screen" size reported by the X11 backend is same as pixel 1587 + count, fixing dpi to 25.4 (LP: #1596051) 1588 + . Mir build and test failures with gcc-6 and LTO (LP: #1610215) 1589 + . [regression] Trust prompt not shown when starting camera (LP: #1612256) 1590 + 1591 + -- Kevin DuBois Mon, 15 Aug 2016 16:29:03 +0000 1592 + 1593 +mir (0.23.5) UNRELEASED; urgency=medium 1594 + 1595 + * No-change rebuild for boost soname change. 1596 + 1597 + -- Matthias Klose Thu, 04 Aug 2016 08:25:48 +0000 1598 + 1599 +mir (0.23.5) UNRELEASED; urgency=medium 1600 + 1601 + * New upstream release 0.23.5 (https://launchpad.net/mir/+milestone/0.23.5) 1602 + - ABI summary: 1603 + . No ABI changes in any libraries. 1604 + - Enhancements: 1605 + . Enable new buffer semantics (NBS) by default. 1606 + - Bugs fixed: 1607 + . Mir fails to build in: COMPOSITOR_TRACE_CALL (LP: #1584601) 1608 + . [testsfail] Process.* (memory leak in libhybris generated when probing 1609 + android platforms) (LP: #1602199) 1610 + . unity8/libmirclient gives up and terminates prematurely with 1611 + "std::exception::what: disconnected: no new buffers" via 1612 + ExchangeSemantics::submit() (LP: #1506358) 1613 + 1614 + -- Kevin DuBois Fri, 29 Jul 2016 11:31:02 +0000 1615 + 1616 +mir (0.23.4) UNRELEASED; urgency=medium 1617 + 1618 + * New upstream release 0.23.4 (https://launchpad.net/mir/+milestone/0.23.4) 1619 + - ABI summary: 1620 + . No ABI changes in any libraries. Bugfix release only. 1621 + - Bugs fixed: 1622 + . Android graphics platform doesn't get packaged for arm64 (LP: #1579866) 1623 + 1624 + -- Cemil Azizoglu Tue, 19 Jul 2016 17:49:47 +0000 1625 + 1626 +mir (0.23.3) UNRELEASED; urgency=medium 1627 + 1628 + * New upstream release 0.23.3 (https://launchpad.net/mir/+milestone/0.23.3) 1629 + - ABI summary: 1630 + . No ABI changes in any libraries. Bugfix release only. 1631 + - Bugs fixed: 1632 + . usage of std:call_once in mirclient causes TLS collisions with some 1633 + android devices (LP: #1599867) 1634 + 1635 + -- Alberto Aguirre Thu, 07 Jul 2016 17:07:38 +0000 1636 + 1637 +mir (0.23.2) UNRELEASED; urgency=medium 1638 + 1639 + * New upstream release 0.23.2 (https://launchpad.net/mir/+milestone/0.23.2) 1640 + - ABI summary: 1641 + . No ABI changes in any libraries. Bugfix release only. 1642 + - Bugs fixed: 1643 + . Refine Android display format selection LP: #1584657 1644 + 1645 + -- Cemil Azizoglu Fri, 24 Jun 2016 19:56:05 +0000 1646 + 1647 +mir (0.23.1) UNRELEASED; urgency=medium 1648 + 1649 + [ Kevin DuBois ] 1650 + * New upstream release 0.23.1 (https://launchpad.net/mir/+milestone/0.23.1) 1651 + - ABI summary: 1652 + . No ABI changes in any libraries. Bugfix release only. 1653 + - Bugs fixed: 1654 + . Turn off NBS as workaround to LP: #1590765 1655 + 1656 + [ Daniel van Vugt, Kevin DuBois ] 1657 + * Mir 0.23.1 bugfix release. Fix flickering issue seen with onscreen 1658 + keyboard (LP: 1590765) 1659 + 1660 + -- Kevin DuBois Fri, 10 Jun 2016 22:40:55 +0000 1661 + 1662 +mir (0.23.0) UNRELEASED; urgency=medium 1663 + 1664 + [ Kevin DuBois ] 1665 + * New upstream release 0.23.0 (https://launchpad.net/mir/+milestone/0.23.0) 1666 + - ABI summary: 1667 + . mirclient ABI unchanged at 9 1668 + . mirserver ABI bumped to 40 1669 + . mircommon ABI bumped at 6 1670 + . mirplatform ABI unchanged at 11 1671 + . mirprotobuf ABI unchanged at 3 1672 + . mirplatformgraphics ABI unchanged at 9 1673 + . mirclientplatform ABI unchanged at 5 1674 + . mirinputplatform ABI unchanged at 5 1675 + - Enhancements: 1676 + . Enable internal usage of more flexible graphics buffer submission, 1677 + precursing client API additions. 1678 + - Bug fixes: 1679 + . Potential NBS performance loss after resize (LP: #1579076) 1680 + . Performance loss with NBS and overlays on (LP: #1578159) 1681 + . Mir crashes with useless backtrace when mg::Platform methods throw 1682 + (LP: #1553549) 1683 + . Virtual output is not removed when screencast client disappears 1684 + (LP: #1573572) 1685 + . Can't VT switch from mir_demo_server (any more) (LP: #1576260) 1686 + . mir_demo_server(_minimal): Window movement/resizing stops responding 1687 + when the cursor leaves the surface, and can lead to windows 1px wide 1688 + and unrecoverable. (LP: #1447886) 1689 + . Virtual display output configuration is set to LVDS (LP: #1573782) 1690 + . Mir-on-X11 doesn't pass Alt+primary button drag to Mir (LP: #1575765) 1691 + . Mir-on-X11 breaks mir_proving_server resize logic (LP: #1575192) 1692 + . Resizing can crash mir_demo_server (LP: #1575211) 1693 + . [regression] Cursor stops at phantom edge on M10 and N7 (LP: #1580774) 1694 + . [regression] MIR_CLIENT_PERF_REPORT is showing bogus render times and 1695 + buffer lag (LP: #1581368) 1696 + . Test failures in ClientLogging.reports_performance due to the above 1697 + fix. (LP: #1583970, LP: #1584603, LP: #1584605) 1698 + . Do not throw when creating some objects under HWC 1.5 (LP: #1583086) 1699 + . Correct black frame issue under Xmir (LP: #1584784) 1700 + 1701 + [ Tarmac, Kevin DuBois , Daniel van Vugt , Andreas Pokorny , Alberto Aguirre ] 1702 + * 0.23.0 Mir release 1703 + 1704 + -- Kevin DuBois Thu, 02 Jun 2016 13:18:03 +0000 1705 + 1706 +mir (0.22.1+16.04.20160516.2-0ubuntu1) xenial; urgency=medium 1707 + 1708 + [ Andreas Pokorny ] 1709 + * New upstream release 0.22.1 (https://launchpad.net/mir/+milestone/0.22.1) 1710 + - ABI summary: 1711 + . No ABI changes in any libraries. Bugfix release only. 1712 + - Bugs fixed: 1713 + . [regression] Cursor stops at phantom edge on M10 and N7 (LP: 1580774) 1714 + 1715 + [ CI Train Bot ] 1716 + * No-change rebuild. 1717 + 1718 + -- Michał Sawicz Mon, 16 May 2016 15:36:50 +0000 1719 + 1720 +mir (0.22.0+16.04.20160422.2-0ubuntu1) xenial; urgency=medium 1721 + 1722 + [ Alberto Aguirre ] 1723 + * New upstream release 0.22.0 (https://launchpad.net/mir/+milestone/0.22.0) 1724 + - ABI summary: Only servers need rebuilding 1725 + . mirclient ABI unchanged at 9 1726 + . mirserver ABI bumped to 39 1727 + . mircommon ABI unchanged at 5 1728 + . mirplatform ABI unchanged at 11 1729 + . mirprotobuf ABI unchanged at 3 1730 + . mirplatformgraphics ABI bumped to 9 1731 + . mirclientplatform ABI unchanged at 5 1732 + . mirinputplatform ABI unchanged at 5 1733 + - Enhancements: 1734 + . New screencast creation API which allows a client to specify 1735 + number of capture buffers and mirroring mode 1736 + . HWC 1.5 support for android based platforms 1737 + - Bug fixes: 1738 + . [regression] Black screen: Mir hangs and then crashes on startup/login 1739 + due to reading from /dev/random (LP: #1536662) 1740 + . CI test failures on xenial amd64 due to valgrind errors following system 1741 + upgrade to ld-2.23 (LP: #1560415) 1742 + . [regression] failure in CI on ThreadedDispatcherSignalTest.keeps_ 1743 + dispatching_after_signal_interruption under Valgrind (LP: #1499229) 1744 + . [regression] Cursor mostly does not move at all in response to slow 1745 + mouse movement, but then sometimes jumps (LP: #1528109) 1746 + . Sometimes devices don't suspend - display turns back on immediately 1747 + (LP: #1549701) 1748 + . CI failure in NestedServer.display_orientation_changes_are_forwarded_to_ 1749 + host (LP: #1555074) 1750 + . NBS fullscreen overlay benchmark performance is much lower than 1751 + BufferQueue (LP: #1557962) 1752 + . server crashes when shutting down in smoke tests (LP: #1560900) 1753 + . [regression] [OTA-10] Spread animation stutters badly with only a few 1754 + apps opened (LP: #1563287) 1755 + . nested mir_demo_server crashes on startup (LP: #1570362) 1756 + . mir_acceptance_tests & mir_unit_tests dump core files (even when 1757 + everything passes) (LP: #1342092) 1758 + . [regression] Tests fail with: std::exception::what: Failed to read from 1759 + device: /dev/random after: 30 seconds (LP: #1541188) 1760 + . [testsfail] ClientLatency.throttled_input_rate_yields_lower_latency 1761 + (LP: #1554572) 1762 + . NBS causes sudden loss of performance after un-fullscreening a swap 1763 + interval zero client (LP: #1557442) 1764 + . surface creation with non-default buffer streams is ignored by server 1765 + (LP: #1563278) 1766 + . [regression] mir_integration_tests take significantly longer (27x 1767 + longer) when running with ctest (LP: #1568966) 1768 + . CI failure in TestClientInput.receives_one_touch_event_per_frame 1769 + (LP: #1570698) 1770 + . Racy shutdown in mir_demo_client_scroll causes SEGFAULT (LP: #1560943) 1771 + . mir_demo_client_target does not quit after SIGTERM/SIGINT (LP: #1562340) 1772 + . ClientLogging.reports_performance fails under moderate load, is badly 1773 + named (LP: #1563148) 1774 + . nested mir_demo_server crashes on mouse move when --print-input-events 1775 + active (LP: #1570357) 1776 + . Virtual output is not removed when screencast client disappears 1777 + (LP: #1573572) 1778 + . Virtual display output configuration is set to LVDS (LP: #1573782) 1779 + 1780 + [ CI Train Bot ] 1781 + * No-change rebuild. 1782 + 1783 + -- Alberto Aguirre Fri, 22 Apr 2016 22:38:16 +0000 1784 + 1785 mir (0.21.0+16.04.20160330-0ubuntu1) xenial; urgency=medium 1786 1787 [ Alberto Aguirre ] 1788 1789 === modified file 'debian/control' 1790 --- debian/control 2016-03-18 19:40:56 +0000 1791 +++ debian/control 2017-06-05 10:46:31 +0000 1792 @@ -4,7 +4,6 @@ 1793 Maintainer: Ubuntu Developers 1794 XSBC-Original-Maintainer: Thomas Voß 1795 Build-Depends: cmake, 1796 - cmake-data, 1797 pkg-config, 1798 debhelper (>= 9), 1799 doxygen, 1800 @@ -19,23 +18,24 @@ 1801 libdrm-dev, 1802 libegl1-mesa-dev, 1803 libgles2-mesa-dev, 1804 + libgl1-mesa-dev [amd64 i386], 1805 libgbm-dev, 1806 libglm-dev, 1807 libprotobuf-dev, 1808 pkg-config, 1809 - android-headers (>=4.4.2) [i386 amd64 armhf], 1810 + android-headers-23, 1811 libhardware-dev [i386 amd64 armhf], 1812 libandroid-properties-dev [i386 amd64 armhf], 1813 libgoogle-glog-dev, 1814 liblttng-ust-dev, 1815 - libxkbcommon-dev, 1816 + libxkbcommon-dev (>= 0.5), 1817 libumockdev-dev (>= 0.6), 1818 umockdev (>= 0.8.7), 1819 libudev-dev, 1820 libgtest-dev, 1821 google-mock (>= 1.6.0+svn437), 1822 # only enable valgrind once it's been tested to work on each architecture: 1823 - valgrind [amd64 i386 armhf], 1824 + valgrind [amd64 i386 armhf arm64], 1825 libglib2.0-dev, 1826 libfreetype6-dev, 1827 abi-compliance-checker, 1828 @@ -45,6 +45,9 @@ 1829 python3:any, 1830 dh-python, 1831 nettle-dev, 1832 + libcapnp-dev, 1833 + capnproto, 1834 + libepoxy-dev, 1835 Standards-Version: 3.9.4 1836 Homepage: https://launchpad.net/mir 1837 # If you aren't a member of ~mir-team but need to upload packaging changes, 1838 @@ -67,7 +70,7 @@ 1839 1840 #TODO: Packaging infrastructure for better dependency generation, 1841 # ala pkg-xorg's xviddriver:Provides and ABI detection. 1842 -Package: libmirserver38 1843 +Package: libmirserver43 1844 Section: libs 1845 Architecture: linux-any 1846 Multi-Arch: same 1847 @@ -80,7 +83,7 @@ 1848 . 1849 Contains the shared library needed by server applications for Mir. 1850 1851 -Package: libmirplatform11 1852 +Package: libmirplatform15 1853 Section: libs 1854 Architecture: linux-any 1855 Multi-Arch: same 1856 @@ -94,12 +97,25 @@ 1857 Contains the shared libraries required for the Mir server to interact with 1858 the underlying hardware platform. 1859 1860 +Package: libmircore-dev 1861 +Section: libdevel 1862 +Architecture: linux-any 1863 +Multi-Arch: same 1864 +Pre-Depends: ${misc:Pre-Depends} 1865 +Depends:${misc:Depends}, 1866 +Description: Display server for Ubuntu - development headers 1867 + Mir is a display server running on linux systems, with a focus on efficiency, 1868 + robust operation and a well-defined driver model. 1869 + . 1870 + Contains header files required for server and/or client development. 1871 + 1872 Package: libmircommon-dev 1873 Section: libdevel 1874 Architecture: linux-any 1875 Multi-Arch: same 1876 Pre-Depends: ${misc:Pre-Depends} 1877 -Depends: libmircommon5 (=${binary:Version}), 1878 +Depends: libmircommon7 (= ${binary:Version}), 1879 + libmircore-dev (=${binary:Version}), 1880 libprotobuf-dev (>= 2.4.1), 1881 libxkbcommon-dev, 1882 ${misc:Depends}, 1883 @@ -116,8 +132,8 @@ 1884 Architecture: linux-any 1885 Multi-Arch: same 1886 Pre-Depends:${misc:Pre-Depends} 1887 -Depends: libmirplatform11 (= ${binary:Version}), 1888 - libmircommon-dev, 1889 +Depends: libmirplatform15 (=${binary:Version}), 1890 + libmircommon-dev (= ${binary:Version}), 1891 libboost-program-options-dev, 1892${misc:Depends}, 1893 Breaks: libmirplatform (<< 0.6) 1894 @@ -133,10 +149,11 @@ 1895 Architecture: linux-any 1896 Multi-Arch: same 1897 Pre-Depends: ${misc:Pre-Depends} 1898 -Depends: libmirserver38 (=${binary:Version}), 1899 +Depends: libmirserver43 (= ${binary:Version}), 1900 libmirplatform-dev (=${binary:Version}), 1901 libmircommon-dev (= ${binary:Version}), 1902 libglm-dev, 1903 + uuid-dev, 1904${misc:Depends}, 1905 Description: Display server for Ubuntu - development headers 1906 Mir is a display server running on linux systems, with a focus on efficiency, 1907 @@ -152,6 +169,9 @@ 1908 Depends: libmircommon-dev (= ${binary:Version}), 1909 libmirplatform-dev (=${binary:Version}), 1910 libmirserver-dev (= ${binary:Version}), 1911 + mir-renderer-gl-dev (=${binary:Version}), 1912 + libboost-filesystem-dev, 1913 + libboost-system-dev, 1914 ${misc:Depends}, 1915 Description: Display server for Ubuntu - test development headers and library 1916 Mir is a display server running on linux systems, with a focus on efficiency, 1917 @@ -287,7 +307,20 @@ 1918 . 1919 Contains a tool for checking the graphics components of android devices. 1920 1921 -Package: libmircommon5 1922 +Package: libmircore1 1923 +Section: libs 1924 +Architecture: linux-any 1925 +Multi-Arch: same 1926 +Pre-Depends:${misc:Pre-Depends} 1927 +Depends: ${misc:Depends}, 1928 +${shlibs:Depends}, 1929 +Description: Display server for Ubuntu - shared library 1930 + Mir is a display server running on linux systems, with a focus on efficiency, 1931 + robust operation and a well-defined driver model. 1932 + . 1933 + Contains the shared libraries required for the Mir server and client. 1934 + 1935 +Package: libmircommon7 1936 Section: libs 1937 Architecture: linux-any 1938 Multi-Arch: same 1939 @@ -301,7 +334,9 @@ 1940 Contains the shared libraries required for the Mir server and client. 1941 1942 # Longer-term these drivers should move out-of-tree 1943 -Package: mir-platform-graphics-mesa-x8 1944 +# Yes, this really should be x12. An unfortunate side-effect of our package 1945 +# naming scheme... 1946 +Package: mir-platform-graphics-mesa-x12 1947 Section: libs 1948 Architecture: linux-any 1949 Multi-Arch: same 1950 @@ -315,7 +350,7 @@ 1951 Contains the shared libraries required for the Mir server to interact with 1952 the X11 platform using the Mesa drivers. 1953 1954 -Package: mir-platform-graphics-mesa-kms8 1955 +Package: mir-platform-graphics-mesa-kms12 1956 Section: libs 1957 Architecture: linux-any 1958 Multi-Arch: same 1959 @@ -329,7 +364,7 @@ 1960 Contains the shared libraries required for the Mir server to interact with 1961 the hardware platform using the Mesa drivers. 1962 1963 -Package: mir-platform-graphics-android8 1964 +Package: mir-platform-graphics-android12 1965 Section: libs 1966 Architecture: i386 amd64 armhf 1967 Multi-Arch: same 1968 @@ -343,7 +378,7 @@ 1969 Contains the shared libraries required for the Mir server to interact with 1970 the hardware platform using the Android drivers. 1971 1972 -Package: mir-platform-input-evdev5 1973 +Package: mir-platform-input-evdev6 1974 Section: libs 1975 Architecture: linux-any 1976 Multi-Arch: same 1977 @@ -376,7 +411,7 @@ 1978 Architecture: linux-any 1979 Multi-Arch: same 1980 Pre-Depends: ${misc:Pre-Depends} 1981 -Depends: libmirclient-dev, 1982 +Depends: libmirclient-dev (=${binary:Version}), 1983 ${misc:Depends}, 1984 Description: Display server for Ubuntu - client platform library for Mesa development files 1985 Mir is a display server running on linux systems, with a focus on efficiency, 1986 @@ -405,10 +440,10 @@ 1987 Multi-Arch: same 1988 Pre-Depends:${misc:Pre-Depends} 1989 Depends: ${misc:Depends}, 1990 - mir-platform-graphics-mesa-kms8, 1991 - mir-platform-graphics-mesa-x8, 1992 + mir-platform-graphics-mesa-kms12, 1993 + mir-platform-graphics-mesa-x12, 1994 mir-client-platform-mesa5, 1995 - mir-platform-input-evdev5, 1996 + mir-platform-input-evdev6, 1997 Description: Display server for Ubuntu - desktop driver metapackage 1998 Mir is a display server running on linux systems, with a focus on efficiency, 1999 robust operation and a well-defined driver model. 2000 @@ -422,9 +457,9 @@ 2001 Multi-Arch: same 2002 Pre-Depends:${misc:Pre-Depends} 2003 Depends: ${misc:Depends}, 2004 - mir-platform-graphics-android8, 2005 + mir-platform-graphics-android12, 2006 mir-client-platform-android5, 2007 - mir-platform-input-evdev5, 2008 + mir-platform-input-evdev6, 2009 Description: Display server for Ubuntu - android driver metapackage 2010 Mir is a display server running on linux systems, with a focus on efficiency, 2011 robust operation and a well-defined driver model. 2012 @@ -477,6 +512,20 @@ 2013 tests for Mir. It also contains a few interesting performance tests written 2014 using the framework. 2015 2016 +Package: libmirrenderer-dev 2017 +Section: libdevel 2018 +Architecture: linux-any 2019 +Multi-Arch: same 2020 +Pre-Depends:${misc:Pre-Depends} 2021 +Depends: ${misc:Depends}, 2022 + libmircommon-dev (=${binary:Version}), 2023 + libmirplatform-dev (= ${binary:Version}) 2024 +Description: Display server for Ubuntu - Renderer development files 2025 + Mir is a display server running on linux systems, with a focus on efficiency, 2026 + robust operation and a well-defined driver model. 2027 + . 2028 + Contains header files required for renderer development. 2029 + 2030 Package: mir-renderer-gl-dev 2031 Section: libdevel 2032 Architecture: linux-any 2033 2034 === modified file 'debian/copyright' 2035 --- debian/copyright 2016-01-25 17:28:12 +0000 2036 +++ debian/copyright 2017-06-05 10:46:31 +0000 2037 @@ -1,4 +1,4 @@ 2038 -Format: http://dep.debian.net/deps/dep5/ 2039 +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2040 Upstream-Name: Mir 2041 Upstream-Contact: Thomas Voß 2042 Source: http://launchpad.net/mir 2043 2044 === modified file 'debian/libmirclient-dev.install' 2045 --- debian/libmirclient-dev.install 2015-06-17 05:20:42 +0000 2046 +++ debian/libmirclient-dev.install 2017-06-05 10:46:31 +0000 2047 @@ -1,6 +1,8 @@ 2048 usr/include/mirclient/mir_toolkit/*.h 2049 +usr/include/mirclient/mir_toolkit/extensions/*.h 2050 usr/include/mirclient/mir/events/*.h 2051 usr/include/mirclient/mir/event_printer.h 2052 usr/include/mirclient/mir_toolkit/events 2053 +usr/include/mirclient/mir_toolkit/rs/mir_render_surface.h 2054 usr/lib/*/pkgconfig/mirclient.pc 2055 usr/lib/*/libmirclient.so 2056 2057 === renamed file 'debian/libmircommon5.install' => 'debian/libmircommon7.install' 2058 --- debian/libmircommon5.install 2015-06-17 05:20:42 +0000 2059 +++ debian/libmircommon7.install 2017-06-05 10:46:31 +0000 2060 @@ -1,1 +1,1 @@ 2061 -usr/lib/*/libmircommon.so.5 2062 +usr/lib/*/libmircommon.so.7 2063 2064 === added file 'debian/libmircore-dev.install' 2065 --- debian/libmircore-dev.install 1970-01-01 00:00:00 +0000 2066 +++ debian/libmircore-dev.install 2017-06-05 10:46:31 +0000 2067 @@ -0,0 +1,3 @@ 2068 +usr/include/mircore 2069 +usr/lib/*/libmircore.so 2070 +usr/lib/*/pkgconfig/mircore.pc 2071 2072 === added file 'debian/libmircore1.install' 2073 --- debian/libmircore1.install 1970-01-01 00:00:00 +0000 2074 +++ debian/libmircore1.install 2017-06-05 10:46:31 +0000 2075 @@ -0,0 +1,1 @@ 2076 +usr/lib/*/libmircore.so.1 2077 2078 === renamed file 'debian/libmirplatform11.install' => 'debian/libmirplatform15.install' 2079 --- debian/libmirplatform11.install 2016-01-29 08:18:22 +0000 2080 +++ debian/libmirplatform15.install 2017-06-05 10:46:31 +0000 2081 @@ -1,1 +1,1 @@ 2082 -usr/lib/*/libmirplatform.so.11 2083 +usr/lib/*/libmirplatform.so.15 2084 2085 === added file 'debian/libmirrenderer-dev.install' 2086 --- debian/libmirrenderer-dev.install 1970-01-01 00:00:00 +0000 2087 +++ debian/libmirrenderer-dev.install 2017-06-05 10:46:31 +0000 2088 @@ -0,0 +1,2 @@ 2089 +usr/include/mirrenderer/mir/renderer/*.h 2090 +usr/lib/*/pkgconfig/mirrenderer.pc 2091 2092 === renamed file 'debian/libmirserver38.install' => 'debian/libmirserver43.install' 2093 --- debian/libmirserver38.install 2016-03-16 06:59:01 +0000 2094 +++ debian/libmirserver43.install 2017-06-05 10:46:31 +0000 2095 @@ -1,1 +1,1 @@ 2096 -usr/lib/*/libmirserver.so.38 2097 +usr/lib/*/libmirserver.so.43 2098 2099 === renamed file 'debian/mir-platform-graphics-android8.install' => 'debian/mir-platform-graphics-android12.install' 2100 --- debian/mir-platform-graphics-android8.install 2016-02-02 16:03:37 +0000 2101 +++ debian/mir-platform-graphics-android12.install 2017-06-05 10:46:31 +0000 2102 @@ -1,1 +1,1 @@ 2103 -usr/lib/*/mir/server-platform/graphics-android.so.8 2104 +usr/lib/*/mir/server-platform/graphics-android.so.12 2105 2106 === renamed file 'debian/mir-platform-graphics-mesa-kms8.install' => 'debian/mir-platform-graphics-mesa-kms12.install' 2107 --- debian/mir-platform-graphics-mesa-kms8.install 2016-02-02 16:03:37 +0000 2108 +++ debian/mir-platform-graphics-mesa-kms12.install 2017-06-05 10:46:31 +0000 2109 @@ -1,1 +1,1 @@ 2110 -usr/lib/*/mir/server-platform/graphics-mesa-kms.so.8 2111 +usr/lib/*/mir/server-platform/graphics-mesa-kms.so.12 2112 2113 === renamed file 'debian/mir-platform-graphics-mesa-x8.install' => 'debian/mir-platform-graphics-mesa-x12.install' 2114 --- debian/mir-platform-graphics-mesa-x8.install 2016-02-02 16:03:37 +0000 2115 +++ debian/mir-platform-graphics-mesa-x12.install 2017-06-05 10:46:31 +0000 2116 @@ -1,1 +1,1 @@ 2117 -usr/lib/*/mir/server-platform/server-mesa-x11.so.8 2118 +usr/lib/*/mir/server-platform/server-mesa-x11.so.12 2119 2120 === renamed file 'debian/mir-platform-input-evdev5.install' => 'debian/mir-platform-input-evdev6.install' 2121 --- debian/mir-platform-input-evdev5.install 2016-01-29 08:18:22 +0000 2122 +++ debian/mir-platform-input-evdev6.install 2017-06-05 10:46:31 +0000 2123 @@ -1,1 +1,1 @@ 2124 -usr/lib/*/mir/server-platform/input-evdev.so.5 2125 +usr/lib/*/mir/server-platform/input-evdev.so.6 2126 2127 === modified file 'debian/mir-test-tools.install' 2128 --- debian/mir-test-tools.install 2016-03-16 06:59:01 +0000 2129 +++ debian/mir-test-tools.install 2017-06-05 10:46:31 +0000 2130 @@ -5,8 +5,12 @@ 2131 usr/bin/mir_umock_acceptance_tests 2132 usr/bin/mir_integration_tests* 2133 usr/bin/mir_performance_tests 2134 +usr/bin/mir_glmark2_performance_test 2135 +usr/bin/mir_compositor_performance_test 2136 +usr/bin/mir_client_startup_performance_test 2137 usr/bin/mir_privileged_tests 2138 usr/bin/mir_test_reload_protobuf 2139 +usr/bin/mir_test_client_* 2140 usr/lib/*/mir/tools/libmirclientlttng.so 2141 usr/lib/*/mir/tools/libmirserverlttng.so 2142 usr/lib/*/mir/server-platform/graphics-dummy.so 2143 2144 === modified file 'debian/mir-utils.install' 2145 --- debian/mir-utils.install 2016-03-14 10:13:49 +0000 2146 +++ debian/mir-utils.install 2017-06-05 10:46:31 +0000 2147 @@ -1,5 +1,6 @@ 2148 -usr/bin/mirping 2149 +usr/bin/mirvanity 2150 usr/bin/mirout 2151 usr/bin/mirin 2152 usr/bin/mirscreencast 2153 usr/bin/mirbacklight 2154 +usr/bin/mirrun 2155 2156 === modified file 'debian/rules' 2157 --- debian/rules 2016-03-16 06:59:01 +0000 2158 +++ debian/rules 2017-06-05 10:46:31 +0000 2159 @@ -28,8 +28,13 @@ 2160 COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=ON 2161 endif 2162 2163 +# Disable LTO on s390x, due to failing to build 2164 +ifeq ($(DEB_HOST_ARCH),s390x) 2165 + COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=OFF 2166 +endif 2167 + 2168 override_dh_auto_configure: 2169 -ifeq ($(DEB_HOST_ARCH),armhf) 2170 +ifneq ($(filter armhf,$(DEB_HOST_ARCH)),) 2171 dh_auto_configure -- \ 2172$(COMMON_CONFIGURE_OPTIONS) \ 2173 -DMIR_RUN_ACCEPTANCE_TESTS=OFF \ 2174 2175 === modified file 'doc/Doxyfile.in' 2176 --- doc/Doxyfile.in 2015-02-22 07:46:25 +0000 2177 +++ doc/Doxyfile.in 2017-06-05 10:46:31 +0000 2178 @@ -1,106 +1,122 @@ 2179 -# Doxyfile 1.8.4 2180 +# Doxyfile 1.8.11 2181 2182 # This file describes the settings to be used by the documentation system 2183 # doxygen (www.doxygen.org) for a project. 2184 # 2185 -# All text after a double hash (##) is considered a comment and is placed 2186 -# in front of the TAG it is preceding . 2187 -# All text after a hash (#) is considered a comment and will be ignored. 2188 +# All text after a double hash (##) is considered a comment and is placed in 2189 +# front of the TAG it is preceding. 2190 +# 2191 +# All text after a single hash (#) is considered a comment and will be ignored. 2192 # The format is: 2193 -# TAG = value [value, ...] 2194 -# For lists items can also be appended using: 2195 -# TAG += value [value, ...] 2196 -# Values that contain spaces should be placed between quotes (" "). 2197 +# TAG = value [value, ...] 2198 +# For lists, items can also be appended using: 2199 +# TAG += value [value, ...] 2200 +# Values that contain spaces should be placed between quotes (\" \"). 2201 2202 #--------------------------------------------------------------------------- 2203 # Project related configuration options 2204 #--------------------------------------------------------------------------- 2205 2206 # This tag specifies the encoding used for all characters in the config file 2207 -# that follow. The default is UTF-8 which is also the encoding used for all 2208 -# text before the first occurrence of this tag. Doxygen uses libiconv (or the 2209 -# iconv built into libc) for the transcoding. See 2210 -# http://www.gnu.org/software/libiconv for the list of possible encodings. 2211 +# that follow. The default is UTF-8 which is also the encoding used for all text 2212 +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv 2213 +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv 2214 +# for the list of possible encodings. 2215 +# The default value is: UTF-8. 2216 2217 DOXYFILE_ENCODING = UTF-8 2218 2219 -# The PROJECT_NAME tag is a single word (or sequence of words) that should 2220 -# identify the project. Note that if you do not use Doxywizard you need 2221 -# to put quotes around the project name if it contains spaces. 2222 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by 2223 +# double-quotes, unless you are using Doxywizard) that should identify the 2224 +# project for which the documentation is generated. This name is used in the 2225 +# title of most generated pages and in a few other places. 2226 +# The default value is: My Project. 2227 2228 PROJECT_NAME = Mir 2229 2230 -# The PROJECT_NUMBER tag can be used to enter a project or revision number. 2231 -# This could be handy for archiving the generated documentation or 2232 -# if some version control system is used. 2233 +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This 2234 +# could be handy for archiving the generated documentation or if some version 2235 +# control system is used. 2236 2237 PROJECT_NUMBER = 2238 2239 # Using the PROJECT_BRIEF tag one can provide an optional one line description 2240 -# for a project that appears at the top of each page and should give viewer 2241 -# a quick idea about the purpose of the project. Keep the description short. 2242 +# for a project that appears at the top of each page and should give viewer a 2243 +# quick idea about the purpose of the project. Keep the description short. 2244 2245 PROJECT_BRIEF = 2246 2247 -# With the PROJECT_LOGO tag one can specify an logo or icon that is 2248 -# included in the documentation. The maximum height of the logo should not 2249 -# exceed 55 pixels and the maximum width should not exceed 200 pixels. 2250 -# Doxygen will copy the logo to the output directory. 2251 +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included 2252 +# in the documentation. The maximum height of the logo should not exceed 55 2253 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy 2254 +# the logo to the output directory. 2255 2256 PROJECT_LOGO = 2257 2258 -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 2259 -# base path where the generated documentation will be put. 2260 -# If a relative path is entered, it will be relative to the location 2261 -# where doxygen was started. If left blank the current directory will be used. 2262 +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path 2263 +# into which the generated documentation will be written. If a relative path is 2264 +# entered, it will be relative to the location where doxygen was started. If 2265 +# left blank the current directory will be used. 2266 2267 OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/doc 2268 2269 -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 2270 -# 4096 sub-directories (in 2 levels) under the output directory of each output 2271 -# format and will distribute the generated files over these directories. 2272 -# Enabling this option can be useful when feeding doxygen a huge amount of 2273 -# source files, where putting all generated files in the same directory would 2274 -# otherwise cause performance problems for the file system. 2275 +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- 2276 +# directories (in 2 levels) under the output directory of each output format and 2277 +# will distribute the generated files over these directories. Enabling this 2278 +# option can be useful when feeding doxygen a huge amount of source files, where 2279 +# putting all generated files in the same directory would otherwise causes 2280 +# performance problems for the file system. 2281 +# The default value is: NO. 2282 2283 CREATE_SUBDIRS = NO 2284 2285 +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII 2286 +# characters to appear in the names of generated files. If set to NO, non-ASCII 2287 +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode 2288 +# U+3044. 2289 +# The default value is: NO. 2290 + 2291 +ALLOW_UNICODE_NAMES = NO 2292 + 2293 # The OUTPUT_LANGUAGE tag is used to specify the language in which all 2294 # documentation generated by doxygen is written. Doxygen will use this 2295 # information to generate all constant output in the proper language. 2296 -# The default language is English, other supported languages are: 2297 -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 2298 -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 2299 -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 2300 -# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, 2301 -# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, 2302 -# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. 2303 +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, 2304 +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), 2305 +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, 2306 +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), 2307 +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, 2308 +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, 2309 +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, 2310 +# Ukrainian and Vietnamese. 2311 +# The default value is: English. 2312 2313 OUTPUT_LANGUAGE = English 2314 2315 -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 2316 -# include brief member descriptions after the members that are listed in 2317 -# the file and class documentation (similar to JavaDoc). 2318 -# Set to NO to disable this. 2319 +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member 2320 +# descriptions after the members that are listed in the file and class 2321 +# documentation (similar to Javadoc). Set to NO to disable this. 2322 +# The default value is: YES. 2323 2324 BRIEF_MEMBER_DESC = YES 2325 2326 -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 2327 -# the brief description of a member or function before the detailed description. 2328 -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 2329 +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief 2330 +# description of a member or function before the detailed description 2331 +# 2332 +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 2333 # brief descriptions will be completely suppressed. 2334 +# The default value is: YES. 2335 2336 REPEAT_BRIEF = YES 2337 2338 -# This tag implements a quasi-intelligent brief description abbreviator 2339 -# that is used to form the text in various listings. Each string 2340 -# in this list, if found as the leading text of the brief description, will be 2341 -# stripped from the text and the result after processing the whole list, is 2342 -# used as the annotated text. Otherwise, the brief description is used as-is. 2343 -# If left blank, the following values are used ("$name" is automatically 2344 -# replaced with the name of the entity): "The$name class" "The $name widget" 2345 -# "The$name file" "is" "provides" "specifies" "contains" 2346 -# "represents" "a" "an" "the" 2347 +# This tag implements a quasi-intelligent brief description abbreviator that is 2348 +# used to form the text in various listings. Each string in this list, if found 2349 +# as the leading text of the brief description, will be stripped from the text 2350 +# and the result, after processing the whole list, is used as the annotated 2351 +# text. Otherwise, the brief description is used as-is. If left blank, the 2352 +# following values are used ($name is automatically replaced with the name of 2353 +# the entity):The$name class, The $name widget, The$name file, is, provides, 2354 +# specifies, contains, represents, a, an and the. 2355 2356 ABBREVIATE_BRIEF = "The $name class" \ 2357 "The$name widget" \ 2358 @@ -115,8 +131,9 @@ 2359 the 2360 2361 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 2362 -# Doxygen will generate a detailed section even if there is only a brief 2363 +# doxygen will generate a detailed section even if there is only a brief 2364 # description. 2365 +# The default value is: NO. 2366 2367 ALWAYS_DETAILED_SEC = NO 2368 2369 @@ -124,231 +141,276 @@ 2370 # inherited members of a class in the documentation of that class as if those 2371 # members were ordinary class members. Constructors, destructors and assignment 2372 # operators of the base classes will not be shown. 2373 +# The default value is: NO. 2374 2375 INLINE_INHERITED_MEMB = NO 2376 2377 -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 2378 -# path before files name in the file list and in the header files. If set 2379 -# to NO the shortest path that makes the file name unique will be used. 2380 +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path 2381 +# before files name in the file list and in the header files. If set to NO the 2382 +# shortest path that makes the file name unique will be used 2383 +# The default value is: YES. 2384 2385 FULL_PATH_NAMES = YES 2386 2387 -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 2388 -# can be used to strip a user-defined part of the path. Stripping is 2389 -# only done if one of the specified strings matches the left-hand part of 2390 -# the path. The tag can be used to show relative paths in the file list. 2391 -# If left blank the directory from which doxygen is run is used as the 2392 -# path to strip. Note that you specify absolute paths here, but also 2393 -# relative paths, which will be relative from the directory where doxygen is 2394 -# started. 2395 +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. 2396 +# Stripping is only done if one of the specified strings matches the left-hand 2397 +# part of the path. The tag can be used to show relative paths in the file list. 2398 +# If left blank the directory from which doxygen is run is used as the path to 2399 +# strip. 2400 +# 2401 +# Note that you can specify absolute paths here, but also relative paths, which 2402 +# will be relative from the directory where doxygen is started. 2403 +# This tag requires that the tag FULL_PATH_NAMES is set to YES. 2404 2405 STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@ 2406 2407 -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 2408 -# the path mentioned in the documentation of a class, which tells 2409 -# the reader which header file to include in order to use a class. 2410 -# If left blank only the name of the header file containing the class 2411 -# definition is used. Otherwise one should specify the include paths that 2412 -# are normally passed to the compiler using the -I flag. 2413 +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the 2414 +# path mentioned in the documentation of a class, which tells the reader which 2415 +# header file to include in order to use a class. If left blank only the name of 2416 +# the header file containing the class definition is used. Otherwise one should 2417 +# specify the list of include paths that are normally passed to the compiler 2418 +# using the -I flag. 2419 2420 STRIP_FROM_INC_PATH = 2421 2422 -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 2423 -# (but less readable) file names. This can be useful if your file system 2424 -# doesn't support long names like on DOS, Mac, or CD-ROM. 2425 +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but 2426 +# less readable) file names. This can be useful is your file systems doesn't 2427 +# support long names like on DOS, Mac, or CD-ROM. 2428 +# The default value is: NO. 2429 2430 SHORT_NAMES = NO 2431 2432 -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 2433 -# will interpret the first line (until the first dot) of a JavaDoc-style 2434 -# comment as the brief description. If set to NO, the JavaDoc 2435 -# comments will behave just like regular Qt-style comments 2436 -# (thus requiring an explicit @brief command for a brief description.) 2437 +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the 2438 +# first line (until the first dot) of a Javadoc-style comment as the brief 2439 +# description. If set to NO, the Javadoc-style will behave just like regular Qt- 2440 +# style comments (thus requiring an explicit @brief command for a brief 2441 +# description.) 2442 +# The default value is: NO. 2443 2444 JAVADOC_AUTOBRIEF = YES 2445 2446 -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 2447 -# interpret the first line (until the first dot) of a Qt-style 2448 -# comment as the brief description. If set to NO, the comments 2449 -# will behave just like regular Qt-style comments (thus requiring 2450 -# an explicit \brief command for a brief description.) 2451 +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first 2452 +# line (until the first dot) of a Qt-style comment as the brief description. If 2453 +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus 2454 +# requiring an explicit \brief command for a brief description.) 2455 +# The default value is: NO. 2456 2457 QT_AUTOBRIEF = NO 2458 2459 -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 2460 -# treat a multi-line C++ special comment block (i.e. a block of //! or /// 2461 -# comments) as a brief description. This used to be the default behaviour. 2462 -# The new default is to treat a multi-line C++ comment block as a detailed 2463 -# description. Set this tag to YES if you prefer the old behaviour instead. 2464 +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a 2465 +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as 2466 +# a brief description. This used to be the default behavior. The new default is 2467 +# to treat a multi-line C++ comment block as a detailed description. Set this 2468 +# tag to YES if you prefer the old behavior instead. 2469 +# 2470 +# Note that setting this tag to YES also means that rational rose comments are 2471 +# not recognized any more. 2472 +# The default value is: NO. 2473 2474 MULTILINE_CPP_IS_BRIEF = YES 2475 2476 -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 2477 -# member inherits the documentation from any documented member that it 2478 -# re-implements. 2479 +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the 2480 +# documentation from any documented member that it re-implements. 2481 +# The default value is: YES. 2482 2483 INHERIT_DOCS = YES 2484 2485 -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 2486 -# a new page for each member. If set to NO, the documentation of a member will 2487 -# be part of the file/class/namespace that contains it. 2488 +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new 2489 +# page for each member. If set to NO, the documentation of a member will be part 2490 +# of the file/class/namespace that contains it. 2491 +# The default value is: NO. 2492 2493 SEPARATE_MEMBER_PAGES = NO 2494 2495 -# The TAB_SIZE tag can be used to set the number of spaces in a tab. 2496 -# Doxygen uses this value to replace tabs by spaces in code fragments. 2497 +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen 2498 +# uses this value to replace tabs by spaces in code fragments. 2499 +# Minimum value: 1, maximum value: 16, default value: 4. 2500 2501 TAB_SIZE = 4 2502 2503 -# This tag can be used to specify a number of aliases that acts 2504 -# as commands in the documentation. An alias has the form "name=value". 2505 -# For example adding "sideeffect=\par Side Effects:\n" will allow you to 2506 -# put the command \sideeffect (or @sideeffect) in the documentation, which 2507 -# will result in a user-defined paragraph with heading "Side Effects:". 2508 -# You can put \n's in the value part of an alias to insert newlines. 2509 +# This tag can be used to specify a number of aliases that act as commands in 2510 +# the documentation. An alias has the form: 2511 +# name=value 2512 +# For example adding 2513 +# "sideeffect=@par Side Effects:\n" 2514 +# will allow you to put the command \sideeffect (or @sideeffect) in the 2515 +# documentation, which will result in a user-defined paragraph with heading 2516 +# "Side Effects:". You can put \n's in the value part of an alias to insert 2517 +# newlines. 2518 2519 ALIASES = 2520 2521 # This tag can be used to specify a number of word-keyword mappings (TCL only). 2522 -# A mapping has the form "name=value". For example adding 2523 -# "class=itcl::class" will allow you to use the command class in the 2524 -# itcl::class meaning. 2525 +# A mapping has the form "name=value". For example adding "class=itcl::class" 2526 +# will allow you to use the command class in the itcl::class meaning. 2527 2528 TCL_SUBST = 2529 2530 -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 2531 -# sources only. Doxygen will then generate output that is more tailored for C. 2532 -# For instance, some of the names that are used will be different. The list 2533 -# of all members will be omitted, etc. 2534 +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 2535 +# only. Doxygen will then generate output that is more tailored for C. For 2536 +# instance, some of the names that are used will be different. The list of all 2537 +# members will be omitted, etc. 2538 +# The default value is: NO. 2539 2540 OPTIMIZE_OUTPUT_FOR_C = NO 2541 2542 -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 2543 -# sources only. Doxygen will then generate output that is more tailored for 2544 -# Java. For instance, namespaces will be presented as packages, qualified 2545 -# scopes will look different, etc. 2546 +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or 2547 +# Python sources only. Doxygen will then generate output that is more tailored 2548 +# for that language. For instance, namespaces will be presented as packages, 2549 +# qualified scopes will look different, etc. 2550 +# The default value is: NO. 2551 2552 OPTIMIZE_OUTPUT_JAVA = NO 2553 2554 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 2555 -# sources only. Doxygen will then generate output that is more tailored for 2556 -# Fortran. 2557 +# sources. Doxygen will then generate output that is tailored for Fortran. 2558 +# The default value is: NO. 2559 2560 OPTIMIZE_FOR_FORTRAN = NO 2561 2562 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 2563 -# sources. Doxygen will then generate output that is tailored for 2564 -# VHDL. 2565 +# sources. Doxygen will then generate output that is tailored for VHDL. 2566 +# The default value is: NO. 2567 2568 OPTIMIZE_OUTPUT_VHDL = NO 2569 2570 # Doxygen selects the parser to use depending on the extension of the files it 2571 # parses. With this tag you can assign which parser to use for a given 2572 # extension. Doxygen has a built-in mapping, but you can override or extend it 2573 -# using this tag. The format is ext=language, where ext is a file extension, 2574 -# and language is one of the parsers supported by doxygen: IDL, Java, 2575 -# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, 2576 -# C++. For instance to make doxygen treat .inc files as Fortran files (default 2577 -# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note 2578 -# that for custom extensions you also need to set FILE_PATTERNS otherwise the 2579 -# files are not read by doxygen. 2580 +# using this tag. The format is ext=language, where ext is a file extension, and 2581 +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, 2582 +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: 2583 +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: 2584 +# Fortran. In the later case the parser tries to guess whether the code is fixed 2585 +# or free formatted code, this is the default for Fortran type files), VHDL. For 2586 +# instance to make doxygen treat .inc files as Fortran files (default is PHP), 2587 +# and .f files as C (default is Fortran), use: inc=Fortran f=C. 2588 +# 2589 +# Note: For files without extension you can use no_extension as a placeholder. 2590 +# 2591 +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise 2592 +# the files are not read by doxygen. 2593 2594 EXTENSION_MAPPING = 2595 2596 -# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all 2597 -# comments according to the Markdown format, which allows for more readable 2598 +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments 2599 +# according to the Markdown format, which allows for more readable 2600 # documentation. See http://daringfireball.net/projects/markdown/ for details. 2601 -# The output of markdown processing is further processed by doxygen, so you 2602 -# can mix doxygen, HTML, and XML commands with Markdown formatting. 2603 -# Disable only in case of backward compatibilities issues. 2604 +# The output of markdown processing is further processed by doxygen, so you can 2605 +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in 2606 +# case of backward compatibilities issues. 2607 +# The default value is: YES. 2608 2609 MARKDOWN_SUPPORT = YES 2610 2611 # When enabled doxygen tries to link words that correspond to documented 2612 # classes, or namespaces to their corresponding documentation. Such a link can 2613 -# be prevented in individual cases by by putting a % sign in front of the word 2614 -# or globally by setting AUTOLINK_SUPPORT to NO. 2615 +# be prevented in individual cases by putting a % sign in front of the word or 2616 +# globally by setting AUTOLINK_SUPPORT to NO. 2617 +# The default value is: YES. 2618 2619 AUTOLINK_SUPPORT = YES 2620 2621 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 2622 -# to include (a tag file for) the STL sources as input, then you should 2623 -# set this tag to YES in order to let doxygen match functions declarations and 2624 -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 2625 -# func(std::string) {}). This also makes the inheritance and collaboration 2626 +# to include (a tag file for) the STL sources as input, then you should set this 2627 +# tag to YES in order to let doxygen match functions declarations and 2628 +# definitions whose arguments contain STL classes (e.g. func(std::string); 2629 +# versus func(std::string) {}). This also make the inheritance and collaboration 2630 # diagrams that involve STL classes more complete and accurate. 2631 +# The default value is: NO. 2632 2633 BUILTIN_STL_SUPPORT = YES 2634 2635 # If you use Microsoft's C++/CLI language, you should set this option to YES to 2636 # enable parsing support. 2637 +# The default value is: NO. 2638 2639 CPP_CLI_SUPPORT = NO 2640 2641 -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 2642 -# Doxygen will parse them like normal C++ but will assume all classes use public 2643 -# instead of private inheritance when no explicit protection keyword is present. 2644 +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: 2645 +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen 2646 +# will parse them like normal C++ but will assume all classes use public instead 2647 +# of private inheritance when no explicit protection keyword is present. 2648 +# The default value is: NO. 2649 2650 SIP_SUPPORT = NO 2651 2652 # For Microsoft's IDL there are propget and propput attributes to indicate 2653 -# getter and setter methods for a property. Setting this option to YES (the 2654 -# default) will make doxygen replace the get and set methods by a property in 2655 -# the documentation. This will only work if the methods are indeed getting or 2656 -# setting a simple type. If this is not the case, or you want to show the 2657 -# methods anyway, you should set this option to NO. 2658 +# getter and setter methods for a property. Setting this option to YES will make 2659 +# doxygen to replace the get and set methods by a property in the documentation. 2660 +# This will only work if the methods are indeed getting or setting a simple 2661 +# type. If this is not the case, or you want to show the methods anyway, you 2662 +# should set this option to NO. 2663 +# The default value is: YES. 2664 2665 IDL_PROPERTY_SUPPORT = YES 2666 2667 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 2668 -# tag is set to YES, then doxygen will reuse the documentation of the first 2669 +# tag is set to YES then doxygen will reuse the documentation of the first 2670 # member in the group (if any) for the other members of the group. By default 2671 # all members of a group must be documented explicitly. 2672 +# The default value is: NO. 2673 2674 DISTRIBUTE_GROUP_DOC = NO 2675 2676 -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 2677 -# the same type (for instance a group of public functions) to be put as a 2678 -# subgroup of that type (e.g. under the Public Functions section). Set it to 2679 -# NO to prevent subgrouping. Alternatively, this can be done per class using 2680 -# the \nosubgrouping command. 2681 +# If one adds a struct or class to a group and this option is enabled, then also 2682 +# any nested class or struct is added to the same group. By default this option 2683 +# is disabled and one has to add nested compounds explicitly via \ingroup. 2684 +# The default value is: NO. 2685 + 2686 +GROUP_NESTED_COMPOUNDS = NO 2687 + 2688 +# Set the SUBGROUPING tag to YES to allow class member groups of the same type 2689 +# (for instance a group of public functions) to be put as a subgroup of that 2690 +# type (e.g. under the Public Functions section). Set it to NO to prevent 2691 +# subgrouping. Alternatively, this can be done per class using the 2692 +# \nosubgrouping command. 2693 +# The default value is: YES. 2694 2695 SUBGROUPING = YES 2696 2697 -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and 2698 -# unions are shown inside the group in which they are included (e.g. using 2699 -# @ingroup) instead of on a separate page (for HTML and Man pages) or 2700 -# section (for LaTeX and RTF). 2701 +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions 2702 +# are shown inside the group in which they are included (e.g. using \ingroup) 2703 +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX 2704 +# and RTF). 2705 +# 2706 +# Note that this feature does not work in combination with 2707 +# SEPARATE_MEMBER_PAGES. 2708 +# The default value is: NO. 2709 2710 INLINE_GROUPED_CLASSES = NO 2711 2712 -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and 2713 -# unions with only public data fields or simple typedef fields will be shown 2714 -# inline in the documentation of the scope in which they are defined (i.e. file, 2715 +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions 2716 +# with only public data fields or simple typedef fields will be shown inline in 2717 +# the documentation of the scope in which they are defined (i.e. file, 2718 # namespace, or group documentation), provided this scope is documented. If set 2719 -# to NO (the default), structs, classes, and unions are shown on a separate 2720 -# page (for HTML and Man pages) or section (for LaTeX and RTF). 2721 +# to NO, structs, classes, and unions are shown on a separate page (for HTML and 2722 +# Man pages) or section (for LaTeX and RTF). 2723 +# The default value is: NO. 2724 2725 INLINE_SIMPLE_STRUCTS = NO 2726 2727 -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 2728 -# is documented as struct, union, or enum with the name of the typedef. So 2729 +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or 2730 +# enum is documented as struct, union, or enum with the name of the typedef. So 2731 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct 2732 # with name TypeT. When disabled the typedef will appear as a member of a file, 2733 -# namespace, or class. And the struct will be named TypeS. This can typically 2734 -# be useful for C code in case the coding convention dictates that all compound 2735 +# namespace, or class. And the struct will be named TypeS. This can typically be 2736 +# useful for C code in case the coding convention dictates that all compound 2737 # types are typedef'ed and only the typedef is referenced, never the tag name. 2738 +# The default value is: NO. 2739 2740 TYPEDEF_HIDES_STRUCT = NO 2741 2742 # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This 2743 -# cache is used to resolve symbols given their name and scope. Since this can 2744 -# be an expensive process and often the same symbol appear multiple times in 2745 -# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too 2746 -# small doxygen will become slower. If the cache is too large, memory is wasted. 2747 -# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid 2748 -# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 2749 -# symbols. 2750 +# cache is used to resolve symbols given their name and scope. Since this can be 2751 +# an expensive process and often the same symbol appears multiple times in the 2752 +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small 2753 +# doxygen will become slower. If the cache is too large, memory is wasted. The 2754 +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range 2755 +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 2756 +# symbols. At the end of a run doxygen will report the cache usage and suggest 2757 +# the optimal cache size from a speed point of view. 2758 +# Minimum value: 0, maximum value: 9, default value: 0. 2759 2760 LOOKUP_CACHE_SIZE = 0 2761 2762 @@ -356,337 +418,398 @@ 2763 # Build related configuration options 2764 #--------------------------------------------------------------------------- 2765 2766 -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 2767 -# documentation are documented, even if no documentation was available. 2768 -# Private class members and static file members will be hidden unless 2769 -# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES 2770 +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in 2771 +# documentation are documented, even if no documentation was available. Private 2772 +# class members and static file members will be hidden unless the 2773 +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. 2774 +# Note: This will also disable the warnings about undocumented members that are 2775 +# normally produced when WARNINGS is set to YES. 2776 +# The default value is: NO. 2777 2778 EXTRACT_ALL = YES 2779 2780 -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 2781 -# will be included in the documentation. 2782 +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will 2783 +# be included in the documentation. 2784 +# The default value is: NO. 2785 2786 EXTRACT_PRIVATE = NO 2787 2788 -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal 2789 +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal 2790 # scope will be included in the documentation. 2791 +# The default value is: NO. 2792 2793 EXTRACT_PACKAGE = NO 2794 2795 -# If the EXTRACT_STATIC tag is set to YES all static members of a file 2796 -# will be included in the documentation. 2797 +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be 2798 +# included in the documentation. 2799 +# The default value is: NO. 2800 2801 EXTRACT_STATIC = NO 2802 2803 -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 2804 -# defined locally in source files will be included in the documentation. 2805 -# If set to NO only classes defined in header files are included. 2806 +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined 2807 +# locally in source files will be included in the documentation. If set to NO, 2808 +# only classes defined in header files are included. Does not have any effect 2809 +# for Java sources. 2810 +# The default value is: YES. 2811 2812 EXTRACT_LOCAL_CLASSES = NO 2813 2814 -# This flag is only useful for Objective-C code. When set to YES local 2815 -# methods, which are defined in the implementation section but not in 2816 -# the interface are included in the documentation. 2817 -# If set to NO (the default) only methods in the interface are included. 2818 +# This flag is only useful for Objective-C code. If set to YES, local methods, 2819 +# which are defined in the implementation section but not in the interface are 2820 +# included in the documentation. If set to NO, only methods in the interface are 2821 +# included. 2822 +# The default value is: NO. 2823 2824 EXTRACT_LOCAL_METHODS = NO 2825 2826 # If this flag is set to YES, the members of anonymous namespaces will be 2827 # extracted and appear in the documentation as a namespace called 2828 -# 'anonymous_namespace{file}', where file will be replaced with the base 2829 -# name of the file that contains the anonymous namespace. By default 2830 -# anonymous namespaces are hidden. 2831 +# 'anonymous_namespace{file}', where file will be replaced with the base name of 2832 +# the file that contains the anonymous namespace. By default anonymous namespace 2833 +# are hidden. 2834 +# The default value is: NO. 2835 2836 EXTRACT_ANON_NSPACES = NO 2837 2838 -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 2839 -# undocumented members of documented classes, files or namespaces. 2840 -# If set to NO (the default) these members will be included in the 2841 -# various overviews, but no documentation section is generated. 2842 -# This option has no effect if EXTRACT_ALL is enabled. 2843 +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all 2844 +# undocumented members inside documented classes or files. If set to NO these 2845 +# members will be included in the various overviews, but no documentation 2846 +# section is generated. This option has no effect if EXTRACT_ALL is enabled. 2847 +# The default value is: NO. 2848 2849 HIDE_UNDOC_MEMBERS = NO 2850 2851 -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 2852 -# undocumented classes that are normally visible in the class hierarchy. 2853 -# If set to NO (the default) these classes will be included in the various 2854 -# overviews. This option has no effect if EXTRACT_ALL is enabled. 2855 +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all 2856 +# undocumented classes that are normally visible in the class hierarchy. If set 2857 +# to NO, these classes will be included in the various overviews. This option 2858 +# has no effect if EXTRACT_ALL is enabled. 2859 +# The default value is: NO. 2860 2861 HIDE_UNDOC_CLASSES = NO 2862 2863 -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 2864 -# friend (class|struct|union) declarations. 2865 -# If set to NO (the default) these declarations will be included in the 2866 -# documentation. 2867 +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend 2868 +# (class|struct|union) declarations. If set to NO, these declarations will be 2869 +# included in the documentation. 2870 +# The default value is: NO. 2871 2872 HIDE_FRIEND_COMPOUNDS = NO 2873 2874 -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 2875 -# documentation blocks found inside the body of a function. 2876 -# If set to NO (the default) these blocks will be appended to the 2877 -# function's detailed documentation block. 2878 +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any 2879 +# documentation blocks found inside the body of a function. If set to NO, these 2880 +# blocks will be appended to the function's detailed documentation block. 2881 +# The default value is: NO. 2882 2883 HIDE_IN_BODY_DOCS = NO 2884 2885 -# The INTERNAL_DOCS tag determines if documentation 2886 -# that is typed after a \internal command is included. If the tag is set 2887 -# to NO (the default) then the documentation will be excluded. 2888 -# Set it to YES to include the internal documentation. 2889 +# The INTERNAL_DOCS tag determines if documentation that is typed after a 2890 +# \internal command is included. If the tag is set to NO then the documentation 2891 +# will be excluded. Set it to YES to include the internal documentation. 2892 +# The default value is: NO. 2893 2894 INTERNAL_DOCS = NO 2895 2896 -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 2897 -# file names in lower-case letters. If set to YES upper-case letters are also 2898 +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file 2899 +# names in lower-case letters. If set to YES, upper-case letters are also 2900 # allowed. This is useful if you have classes or files whose names only differ 2901 # in case and if your file system supports case sensitive file names. Windows 2902 # and Mac users are advised to set this option to NO. 2903 +# The default value is: system dependent. 2904 2905 CASE_SENSE_NAMES = NO 2906 2907 -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 2908 -# will show members with their full class and namespace scopes in the 2909 -# documentation. If set to YES the scope will be hidden. 2910 +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with 2911 +# their full class and namespace scopes in the documentation. If set to YES, the 2912 +# scope will be hidden. 2913 +# The default value is: NO. 2914 2915 HIDE_SCOPE_NAMES = NO 2916 2917 -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 2918 -# will put a list of the files that are included by a file in the documentation 2919 -# of that file. 2920 +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will 2921 +# append additional text to a page's title, such as Class Reference. If set to 2922 +# YES the compound reference will be hidden. 2923 +# The default value is: NO. 2924 + 2925 +HIDE_COMPOUND_REFERENCE= NO 2926 + 2927 +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of 2928 +# the files that are included by a file in the documentation of that file. 2929 +# The default value is: YES. 2930 2931 SHOW_INCLUDE_FILES = YES 2932 2933 -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen 2934 -# will list include files with double quotes in the documentation 2935 -# rather than with sharp brackets. 2936 +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each 2937 +# grouped member an include statement to the documentation, telling the reader 2938 +# which file to include in order to use the member. 2939 +# The default value is: NO. 2940 + 2941 +SHOW_GROUPED_MEMB_INC = NO 2942 + 2943 +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include 2944 +# files with double quotes in the documentation rather than with sharp brackets. 2945 +# The default value is: NO. 2946 2947 FORCE_LOCAL_INCLUDES = NO 2948 2949 -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 2950 -# is inserted in the documentation for inline members. 2951 +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the 2952 +# documentation for inline members. 2953 +# The default value is: YES. 2954 2955 INLINE_INFO = YES 2956 2957 -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 2958 -# will sort the (detailed) documentation of file and class members 2959 -# alphabetically by member name. If set to NO the members will appear in 2960 -# declaration order. 2961 +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the 2962 +# (detailed) documentation of file and class members alphabetically by member 2963 +# name. If set to NO, the members will appear in declaration order. 2964 +# The default value is: YES. 2965 2966 SORT_MEMBER_DOCS = YES 2967 2968 -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 2969 -# brief documentation of file, namespace and class members alphabetically 2970 -# by member name. If set to NO (the default) the members will appear in 2971 -# declaration order. 2972 +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief 2973 +# descriptions of file, namespace and class members alphabetically by member 2974 +# name. If set to NO, the members will appear in declaration order. Note that 2975 +# this will also influence the order of the classes in the class list. 2976 +# The default value is: NO. 2977 2978 SORT_BRIEF_DOCS = NO 2979 2980 -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen 2981 -# will sort the (brief and detailed) documentation of class members so that 2982 -# constructors and destructors are listed first. If set to NO (the default) 2983 -# the constructors will appear in the respective orders defined by 2984 -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. 2985 -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO 2986 -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. 2987 +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the 2988 +# (brief and detailed) documentation of class members so that constructors and 2989 +# destructors are listed first. If set to NO the constructors will appear in the 2990 +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. 2991 +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief 2992 +# member documentation. 2993 +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting 2994 +# detailed member documentation. 2995 +# The default value is: NO. 2996 2997 SORT_MEMBERS_CTORS_1ST = NO 2998 2999 -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 3000 -# hierarchy of group names into alphabetical order. If set to NO (the default) 3001 -# the group names will appear in their defined order. 3002 +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy 3003 +# of group names into alphabetical order. If set to NO the group names will 3004 +# appear in their defined order. 3005 +# The default value is: NO. 3006 3007 SORT_GROUP_NAMES = NO 3008 3009 -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 3010 -# sorted by fully-qualified names, including namespaces. If set to 3011 -# NO (the default), the class list will be sorted only by class name, 3012 -# not including the namespace part. 3013 +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by 3014 +# fully-qualified names, including namespaces. If set to NO, the class list will 3015 +# be sorted only by class name, not including the namespace part. 3016 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 3017 -# Note: This option applies only to the class list, not to the 3018 -# alphabetical list. 3019 +# Note: This option applies only to the class list, not to the alphabetical 3020 +# list. 3021 +# The default value is: NO. 3022 3023 SORT_BY_SCOPE_NAME = NO 3024 3025 -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to 3026 -# do proper type resolution of all parameters of a function it will reject a 3027 -# match between the prototype and the implementation of a member function even 3028 -# if there is only one candidate or it is obvious which candidate to choose 3029 -# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen 3030 -# will still accept a match between prototype and implementation in such cases. 3031 +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper 3032 +# type resolution of all parameters of a function it will reject a match between 3033 +# the prototype and the implementation of a member function even if there is 3034 +# only one candidate or it is obvious which candidate to choose by doing a 3035 +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still 3036 +# accept a match between prototype and implementation in such cases. 3037 +# The default value is: NO. 3038 3039 STRICT_PROTO_MATCHING = NO 3040 3041 -# The GENERATE_TODOLIST tag can be used to enable (YES) or 3042 -# disable (NO) the todo list. This list is created by putting \todo 3043 -# commands in the documentation. 3044 +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo 3045 +# list. This list is created by putting \todo commands in the documentation. 3046 +# The default value is: YES. 3047 3048 GENERATE_TODOLIST = YES 3049 3050 -# The GENERATE_TESTLIST tag can be used to enable (YES) or 3051 -# disable (NO) the test list. This list is created by putting \test 3052 -# commands in the documentation. 3053 +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test 3054 +# list. This list is created by putting \test commands in the documentation. 3055 +# The default value is: YES. 3056 3057 GENERATE_TESTLIST = YES 3058 3059 -# The GENERATE_BUGLIST tag can be used to enable (YES) or 3060 -# disable (NO) the bug list. This list is created by putting \bug 3061 -# commands in the documentation. 3062 +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug 3063 +# list. This list is created by putting \bug commands in the documentation. 3064 +# The default value is: YES. 3065 3066 GENERATE_BUGLIST = YES 3067 3068 -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 3069 -# disable (NO) the deprecated list. This list is created by putting 3070 -# \deprecated commands in the documentation. 3071 +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) 3072 +# the deprecated list. This list is created by putting \deprecated commands in 3073 +# the documentation. 3074 +# The default value is: YES. 3075 3076 GENERATE_DEPRECATEDLIST= YES 3077 3078 -# The ENABLED_SECTIONS tag can be used to enable conditional 3079 -# documentation sections, marked by \if section-label ... \endif 3080 -# and \cond section-label ... \endcond blocks. 3081 +# The ENABLED_SECTIONS tag can be used to enable conditional documentation 3082 +# sections, marked by \if ... \endif and \cond 3083 +# ... \endcond blocks. 3084 3085 ENABLED_SECTIONS = 3086 3087 -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 3088 -# the initial value of a variable or macro consists of for it to appear in 3089 -# the documentation. If the initializer consists of more lines than specified 3090 -# here it will be hidden. Use a value of 0 to hide initializers completely. 3091 -# The appearance of the initializer of individual variables and macros in the 3092 -# documentation can be controlled using \showinitializer or \hideinitializer 3093 -# command in the documentation regardless of this setting. 3094 +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the 3095 +# initial value of a variable or macro / define can have for it to appear in the 3096 +# documentation. If the initializer consists of more lines than specified here 3097 +# it will be hidden. Use a value of 0 to hide initializers completely. The 3098 +# appearance of the value of individual variables and macros / defines can be 3099 +# controlled using \showinitializer or \hideinitializer command in the 3100 +# documentation regardless of this setting. 3101 +# Minimum value: 0, maximum value: 10000, default value: 30. 3102 3103 MAX_INITIALIZER_LINES = 30 3104 3105 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 3106 -# at the bottom of the documentation of classes and structs. If set to YES the 3107 +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at 3108 +# the bottom of the documentation of classes and structs. If set to YES, the 3109 # list will mention the files that were used to generate the documentation. 3110 +# The default value is: YES. 3111 3112 SHOW_USED_FILES = YES 3113 3114 -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 3115 -# This will remove the Files entry from the Quick Index and from the 3116 -# Folder Tree View (if specified). The default is YES. 3117 +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This 3118 +# will remove the Files entry from the Quick Index and from the Folder Tree View 3119 +# (if specified). 3120 +# The default value is: YES. 3121 3122 SHOW_FILES = YES 3123 3124 -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 3125 -# Namespaces page. 3126 -# This will remove the Namespaces entry from the Quick Index 3127 -# and from the Folder Tree View (if specified). The default is YES. 3128 +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces 3129 +# page. This will remove the Namespaces entry from the Quick Index and from the 3130 +# Folder Tree View (if specified). 3131 +# The default value is: YES. 3132 3133 SHOW_NAMESPACES = YES 3134 3135 # The FILE_VERSION_FILTER tag can be used to specify a program or script that 3136 # doxygen should invoke to get the current version for each file (typically from 3137 # the version control system). Doxygen will invoke the program by executing (via 3138 -# popen()) the command , where is the value of 3139 -# the FILE_VERSION_FILTER tag, and is the name of an input file 3140 -# provided by doxygen. Whatever the program writes to standard output 3141 -# is used as the file version. See the manual for examples. 3142 +# popen()) the command command input-file, where command is the value of the 3143 +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided 3144 +# by doxygen. Whatever the program writes to standard output is used as the file 3145 +# version. For an example see the documentation. 3146 3147 FILE_VERSION_FILTER = 3148 3149 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed 3150 # by doxygen. The layout file controls the global structure of the generated 3151 # output files in an output format independent way. To create the layout file 3152 -# that represents doxygen's defaults, run doxygen with the -l option. 3153 -# You can optionally specify a file name after the option, if omitted 3154 -# DoxygenLayout.xml will be used as the name of the layout file. 3155 +# that represents doxygen's defaults, run doxygen with the -l option. You can 3156 +# optionally specify a file name after the option, if omitted DoxygenLayout.xml 3157 +# will be used as the name of the layout file. 3158 +# 3159 +# Note that if you run doxygen from a directory containing a file called 3160 +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE 3161 +# tag is left empty. 3162 3163 LAYOUT_FILE = 3164 3165 -# The CITE_BIB_FILES tag can be used to specify one or more bib files 3166 -# containing the references data. This must be a list of .bib files. The 3167 -# .bib extension is automatically appended if omitted. Using this command 3168 -# requires the bibtex tool to be installed. See also 3169 -# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style 3170 -# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this 3171 -# feature you need bibtex and perl available in the search path. Do not use 3172 -# file names with spaces, bibtex cannot handle them. 3173 +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing 3174 +# the reference definitions. This must be a list of .bib files. The .bib 3175 +# extension is automatically appended if omitted. This requires the bibtex tool 3176 +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. 3177 +# For LaTeX the style of the bibliography can be controlled using 3178 +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the 3179 +# search path. See also \cite for info how to create references. 3180 3181 CITE_BIB_FILES = 3182 3183 #--------------------------------------------------------------------------- 3184 -# configuration options related to warning and progress messages 3185 +# Configuration options related to warning and progress messages 3186 #--------------------------------------------------------------------------- 3187 3188 -# The QUIET tag can be used to turn on/off the messages that are generated 3189 -# by doxygen. Possible values are YES and NO. If left blank NO is used. 3190 +# The QUIET tag can be used to turn on/off the messages that are generated to 3191 +# standard output by doxygen. If QUIET is set to YES this implies that the 3192 +# messages are off. 3193 +# The default value is: NO. 3194 3195 QUIET = NO 3196 3197 # The WARNINGS tag can be used to turn on/off the warning messages that are 3198 -# generated by doxygen. Possible values are YES and NO. If left blank 3199 -# NO is used. 3200 +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES 3201 +# this implies that the warnings are on. 3202 +# 3203 +# Tip: Turn warnings on while writing the documentation. 3204 +# The default value is: YES. 3205 3206 WARNINGS = YES 3207 3208 -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 3209 -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 3210 -# automatically be disabled. 3211 +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate 3212 +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag 3213 +# will automatically be disabled. 3214 +# The default value is: YES. 3215 3216 WARN_IF_UNDOCUMENTED = YES 3217 3218 -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 3219 -# potential errors in the documentation, such as not documenting some 3220 -# parameters in a documented function, or documenting parameters that 3221 -# don't exist or using markup commands wrongly. 3222 +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for 3223 +# potential errors in the documentation, such as not documenting some parameters 3224 +# in a documented function, or documenting parameters that don't exist or using 3225 +# markup commands wrongly. 3226 +# The default value is: YES. 3227 3228 WARN_IF_DOC_ERROR = YES 3229 3230 -# The WARN_NO_PARAMDOC option can be enabled to get warnings for 3231 -# functions that are documented, but have no documentation for their parameters 3232 -# or return value. If set to NO (the default) doxygen will only warn about 3233 -# wrong or incomplete parameter documentation, but not about the absence of 3234 -# documentation. 3235 +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that 3236 +# are documented, but have no documentation for their parameters or return 3237 +# value. If set to NO, doxygen will only warn about wrong or incomplete 3238 +# parameter documentation, but not about the absence of documentation. 3239 +# The default value is: NO. 3240 3241 WARN_NO_PARAMDOC = NO 3242 3243 -# The WARN_FORMAT tag determines the format of the warning messages that 3244 -# doxygen can produce. The string should contain the $file,$line, and $text 3245 -# tags, which will be replaced by the file and line number from which the 3246 -# warning originated and the warning text. Optionally the format may contain 3247 -#$version, which will be replaced by the version of the file (if it could 3248 -# be obtained via FILE_VERSION_FILTER) 3249 +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when 3250 +# a warning is encountered. 3251 +# The default value is: NO. 3252 + 3253 +WARN_AS_ERROR = NO 3254 + 3255 +# The WARN_FORMAT tag determines the format of the warning messages that doxygen 3256 +# can produce. The string should contain the $file,$line, and $text tags, which 3257 +# will be replaced by the file and line number from which the warning originated 3258 +# and the warning text. Optionally the format may contain$version, which will 3259 +# be replaced by the version of the file (if it could be obtained via 3260 +# FILE_VERSION_FILTER) 3261 +# The default value is: $file:$line: $text. 3262 3263 WARN_FORMAT = "$file:$line:$text" 3264 3265 -# The WARN_LOGFILE tag can be used to specify a file to which warning 3266 -# and error messages should be written. If left blank the output is written 3267 -# to stderr. 3268 +# The WARN_LOGFILE tag can be used to specify a file to which warning and error 3269 +# messages should be written. If left blank the output is written to standard 3270 +# error (stderr). 3271 3272 WARN_LOGFILE = 3273 3274 #--------------------------------------------------------------------------- 3275 -# configuration options related to the input files 3276 +# Configuration options related to the input files 3277 #--------------------------------------------------------------------------- 3278 3279 -# The INPUT tag can be used to specify the files and/or directories that contain 3280 -# documented source files. You may enter file names like "myfile.cpp" or 3281 -# directories like "/usr/src/myproject". Separate the files or directories 3282 -# with spaces. 3283 +# The INPUT tag is used to specify the files and/or directories that contain 3284 +# documented source files. You may enter file names like myfile.cpp or 3285 +# directories like /usr/src/myproject. Separate the files or directories with 3286 +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING 3287 +# Note: If this tag is empty the current directory is searched. 3288 3289 INPUT = @CMAKE_CURRENT_SOURCE_DIR@/README.md \ 3290 @CMAKE_CURRENT_SOURCE_DIR@/HACKING.md \ 3291 @CMAKE_CURRENT_SOURCE_DIR@/doc \ 3292 - @CMAKE_CURRENT_SOURCE_DIR@/src \ 3293 @CMAKE_CURRENT_SOURCE_DIR@/examples \ 3294 @CMAKE_CURRENT_SOURCE_DIR@/include \ 3295 @MIR_GENERATED_INCLUDE_DIRECTORIES@ 3296 3297 # This tag can be used to specify the character encoding of the source files 3298 -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 3299 -# also the default input encoding. Doxygen uses libiconv (or the iconv built 3300 -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 3301 -# the list of possible encodings. 3302 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses 3303 +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv 3304 +# documentation (see: http://www.gnu.org/software/libiconv) for the list of 3305 +# possible encodings. 3306 +# The default value is: UTF-8. 3307 3308 INPUT_ENCODING = UTF-8 3309 3310 # If the value of the INPUT tag contains directories, you can use the 3311 -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 3312 -# and *.h) to filter out the source-files in the directories. If left 3313 -# blank the following patterns are tested: 3314 -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh 3315 -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py 3316 -# *.f90 *.f *.for *.vhd *.vhdl 3317 +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and 3318 +# *.h) to filter out the source-files in the directories. 3319 +# 3320 +# Note that for custom extensions or not directly supported extensions you also 3321 +# need to set EXTENSION_MAPPING for the extension otherwise the files are not 3322 +# read by doxygen. 3323 +# 3324 +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, 3325 +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, 3326 +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, 3327 +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, 3328 +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. 3329 3330 FILE_PATTERNS = *.c \ 3331 *.cc \ 3332 @@ -723,15 +846,16 @@ 3333 *.vhd \ 3334 *.vhdl 3335 3336 -# The RECURSIVE tag can be used to turn specify whether or not subdirectories 3337 -# should be searched for input files as well. Possible values are YES and NO. 3338 -# If left blank NO is used. 3339 +# The RECURSIVE tag can be used to specify whether or not subdirectories should 3340 +# be searched for input files as well. 3341 +# The default value is: NO. 3342 3343 RECURSIVE = YES 3344 3345 # The EXCLUDE tag can be used to specify files and/or directories that should be 3346 # excluded from the INPUT source files. This way you can easily exclude a 3347 # subdirectory from a directory tree whose root is specified with the INPUT tag. 3348 +# 3349 # Note that relative paths are relative to the directory from which doxygen is 3350 # run. 3351 3352 @@ -740,234 +864,323 @@ 3353 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or 3354 # directories that are symbolic links (a Unix file system feature) are excluded 3355 # from the input. 3356 +# The default value is: NO. 3357 3358 EXCLUDE_SYMLINKS = NO 3359 3360 # If the value of the INPUT tag contains directories, you can use the 3361 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 3362 -# certain files from those directories. Note that the wildcards are matched 3363 -# against the file with absolute path, so to exclude all test directories 3364 -# for example use the pattern */test/* 3365 +# certain files from those directories. 3366 +# 3367 +# Note that the wildcards are matched against the file with absolute path, so to 3368 +# exclude all test directories for example use the pattern */test/* 3369 3370 -EXCLUDE_PATTERNS = */include/test/* */3rd_party/* 3371 +EXCLUDE_PATTERNS = */include/test/* \ 3372 + */3rd_party/* 3373 3374 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 3375 # (namespaces, classes, functions, etc.) that should be excluded from the 3376 # output. The symbol name can be a fully qualified name, a word, or if the 3377 # wildcard * is used, a substring. Examples: ANamespace, AClass, 3378 # AClass::ANamespace, ANamespace::*Test 3379 +# 3380 +# Note that the wildcards are matched against the file with absolute path, so to 3381 +# exclude all test directories use the pattern */test/* 3382 3383 EXCLUDE_SYMBOLS = google \ 3384 mfd \ 3385 mgg \ 3386 mp 3387 3388 -# The EXAMPLE_PATH tag can be used to specify one or more files or 3389 -# directories that contain example code fragments that are included (see 3390 -# the \include command). 3391 +# The EXAMPLE_PATH tag can be used to specify one or more files or directories 3392 +# that contain example code fragments that are included (see the \include 3393 +# command). 3394 3395 EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/examples 3396 3397 # If the value of the EXAMPLE_PATH tag contains directories, you can use the 3398 -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 3399 -# and *.h) to filter out the source-files in the directories. If left 3400 -# blank all files are included. 3401 +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and 3402 +# *.h) to filter out the source-files in the directories. If left blank all 3403 +# files are included. 3404 3405 EXAMPLE_PATTERNS = * 3406 3407 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 3408 -# searched for input files to be used with the \include or \dontinclude 3409 -# commands irrespective of the value of the RECURSIVE tag. 3410 -# Possible values are YES and NO. If left blank NO is used. 3411 +# searched for input files to be used with the \include or \dontinclude commands 3412 +# irrespective of the value of the RECURSIVE tag. 3413 +# The default value is: NO. 3414 3415 EXAMPLE_RECURSIVE = NO 3416 3417 -# The IMAGE_PATH tag can be used to specify one or more files or 3418 -# directories that contain image that are included in the documentation (see 3419 -# the \image command). 3420 +# The IMAGE_PATH tag can be used to specify one or more files or directories 3421 +# that contain images that are to be included in the documentation (see the 3422 +# \image command). 3423 3424 IMAGE_PATH = 3425 3426 # The INPUT_FILTER tag can be used to specify a program that doxygen should 3427 # invoke to filter for each input file. Doxygen will invoke the filter program 3428 -# by executing (via popen()) the command , where 3429 -# is the value of the INPUT_FILTER tag, and is the name of an 3430 -# input file. Doxygen will then use the output that the filter program writes 3431 -# to standard output. 3432 -# If FILTER_PATTERNS is specified, this tag will be ignored. 3433 +# by executing (via popen()) the command: 3434 +# 3435 +# 3436 +# 3437 +# where is the value of the INPUT_FILTER tag, and is the 3438 +# name of an input file. Doxygen will then use the output that the filter 3439 +# program writes to standard output. If FILTER_PATTERNS is specified, this tag 3440 +# will be ignored. 3441 +# 3442 # Note that the filter must not add or remove lines; it is applied before the 3443 # code is scanned, but not when the output code is generated. If lines are added 3444 # or removed, the anchors will not be placed correctly. 3445 +# 3446 +# Note that for custom extensions or not directly supported extensions you also 3447 +# need to set EXTENSION_MAPPING for the extension otherwise the files are not 3448 +# properly processed by doxygen. 3449 3450 INPUT_FILTER = 3451 3452 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 3453 -# basis. 3454 -# Doxygen will compare the file name with each pattern and apply the 3455 -# filter if there is a match. 3456 -# The filters are a list of the form: 3457 -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 3458 -# info on how filters are used. If FILTER_PATTERNS is empty or if 3459 -# non of the patterns match the file name, INPUT_FILTER is applied. 3460 +# basis. Doxygen will compare the file name with each pattern and apply the 3461 +# filter if there is a match. The filters are a list of the form: pattern=filter 3462 +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how 3463 +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the 3464 +# patterns match the file name, INPUT_FILTER is applied. 3465 +# 3466 +# Note that for custom extensions or not directly supported extensions you also 3467 +# need to set EXTENSION_MAPPING for the extension otherwise the files are not 3468 +# properly processed by doxygen. 3469 3470 FILTER_PATTERNS = 3471 3472 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 3473 -# INPUT_FILTER) will be used to filter the input files when producing source 3474 -# files to browse (i.e. when SOURCE_BROWSER is set to YES). 3475 +# INPUT_FILTER) will also be used to filter the input files that are used for 3476 +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). 3477 +# The default value is: NO. 3478 3479 FILTER_SOURCE_FILES = NO 3480 3481 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file 3482 -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) 3483 -# and it is also possible to disable source filtering for a specific pattern 3484 -# using *.ext= (so without naming a filter). This option only has effect when 3485 -# FILTER_SOURCE_FILES is enabled. 3486 +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and 3487 +# it is also possible to disable source filtering for a specific pattern using 3488 +# *.ext= (so without naming a filter). 3489 +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. 3490 3491 FILTER_SOURCE_PATTERNS = 3492 3493 -# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that 3494 +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that 3495 # is part of the input, its contents will be placed on the main page 3496 # (index.html). This can be useful if you have a project on for instance GitHub 3497 -# and want reuse the introduction page also for the doxygen output. 3498 +# and want to reuse the introduction page also for the doxygen output. 3499 3500 USE_MDFILE_AS_MAINPAGE = 3501 3502 #--------------------------------------------------------------------------- 3503 -# configuration options related to source browsing 3504 +# Configuration options related to source browsing 3505 #--------------------------------------------------------------------------- 3506 3507 -# If the SOURCE_BROWSER tag is set to YES then a list of source files will 3508 -# be generated. Documented entities will be cross-referenced with these sources. 3509 -# Note: To get rid of all source code in the generated output, make sure also 3510 -# VERBATIM_HEADERS is set to NO. 3511 +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be 3512 +# generated. Documented entities will be cross-referenced with these sources. 3513 +# 3514 +# Note: To get rid of all source code in the generated output, make sure that 3515 +# also VERBATIM_HEADERS is set to NO. 3516 +# The default value is: NO. 3517 3518 SOURCE_BROWSER = NO 3519 3520 -# Setting the INLINE_SOURCES tag to YES will include the body 3521 -# of functions and classes directly in the documentation. 3522 +# Setting the INLINE_SOURCES tag to YES will include the body of functions, 3523 +# classes and enums directly into the documentation. 3524 +# The default value is: NO. 3525 3526 INLINE_SOURCES = NO 3527 3528 -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 3529 -# doxygen to hide any special comment blocks from generated source code 3530 -# fragments. Normal C, C++ and Fortran comments will always remain visible. 3531 +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any 3532 +# special comment blocks from generated source code fragments. Normal C, C++ and 3533 +# Fortran comments will always remain visible. 3534 +# The default value is: YES. 3535 3536 STRIP_CODE_COMMENTS = YES 3537 3538 -# If the REFERENCED_BY_RELATION tag is set to YES 3539 -# then for each documented function all documented 3540 -# functions referencing it will be listed. 3541 +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented 3542 +# function all documented functions referencing it will be listed. 3543 +# The default value is: NO. 3544 3545 REFERENCED_BY_RELATION = NO 3546 3547 -# If the REFERENCES_RELATION tag is set to YES 3548 -# then for each documented function all documented entities 3549 -# called/used by that function will be listed. 3550 +# If the REFERENCES_RELATION tag is set to YES then for each documented function 3551 +# all documented entities called/used by that function will be listed. 3552 +# The default value is: NO. 3553 3554 REFERENCES_RELATION = NO 3555 3556 -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 3557 -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 3558 -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 3559 -# link to the source code. 3560 -# Otherwise they will link to the documentation. 3561 +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set 3562 +# to YES then the hyperlinks from functions in REFERENCES_RELATION and 3563 +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will 3564 +# link to the documentation. 3565 +# The default value is: YES. 3566 3567 REFERENCES_LINK_SOURCE = YES 3568 3569 -# If the USE_HTAGS tag is set to YES then the references to source code 3570 -# will point to the HTML generated by the htags(1) tool instead of doxygen 3571 -# built-in source browser. The htags tool is part of GNU's global source 3572 -# tagging system (see http://www.gnu.org/software/global/global.html). You 3573 -# will need version 4.8.6 or higher. 3574 +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the 3575 +# source code will show a tooltip with additional information such as prototype, 3576 +# brief description and links to the definition and documentation. Since this 3577 +# will make the HTML file larger and loading of large files a bit slower, you 3578 +# can opt to disable this feature. 3579 +# The default value is: YES. 3580 +# This tag requires that the tag SOURCE_BROWSER is set to YES. 3581 + 3582 +SOURCE_TOOLTIPS = YES 3583 + 3584 +# If the USE_HTAGS tag is set to YES then the references to source code will 3585 +# point to the HTML generated by the htags(1) tool instead of doxygen built-in 3586 +# source browser. The htags tool is part of GNU's global source tagging system 3587 +# (see http://www.gnu.org/software/global/global.html). You will need version 3588 +# 4.8.6 or higher. 3589 +# 3590 +# To use it do the following: 3591 +# - Install the latest version of global 3592 +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file 3593 +# - Make sure the INPUT points to the root of the source tree 3594 +# - Run doxygen as normal 3595 +# 3596 +# Doxygen will invoke htags (and that will in turn invoke gtags), so these 3597 +# tools must be available from the command line (i.e. in the search path). 3598 +# 3599 +# The result: instead of the source browser generated by doxygen, the links to 3600 +# source code will now point to the output of htags. 3601 +# The default value is: NO. 3602 +# This tag requires that the tag SOURCE_BROWSER is set to YES. 3603 3604 USE_HTAGS = NO 3605 3606 -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 3607 -# will generate a verbatim copy of the header file for each class for 3608 -# which an include is specified. Set to NO to disable this. 3609 +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a 3610 +# verbatim copy of the header file for each class for which an include is 3611 +# specified. Set to NO to disable this. 3612 +# See also: Section \class. 3613 +# The default value is: YES. 3614 3615 VERBATIM_HEADERS = YES 3616 3617 -#--------------------------------------------------------------------------- 3618 -# configuration options related to the alphabetical class index 3619 -#--------------------------------------------------------------------------- 3620 - 3621 -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 3622 -# of all compounds will be generated. Enable this if the project 3623 -# contains a lot of classes, structs, unions or interfaces. 3624 +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the 3625 +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the 3626 +# cost of reduced performance. This can be particularly helpful with template 3627 +# rich C++ code for which doxygen's built-in parser lacks the necessary type 3628 +# information. 3629 +# Note: The availability of this option depends on whether or not doxygen was 3630 +# generated with the -Duse-libclang=ON option for CMake. 3631 +# The default value is: NO. 3632 + 3633 +CLANG_ASSISTED_PARSING = NO 3634 + 3635 +# If clang assisted parsing is enabled you can provide the compiler with command 3636 +# line options that you would normally use when invoking the compiler. Note that 3637 +# the include paths will already be set by doxygen for the files and directories 3638 +# specified with INPUT and INCLUDE_PATH. 3639 +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. 3640 + 3641 +CLANG_OPTIONS = 3642 + 3643 +#--------------------------------------------------------------------------- 3644 +# Configuration options related to the alphabetical class index 3645 +#--------------------------------------------------------------------------- 3646 + 3647 +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all 3648 +# compounds will be generated. Enable this if the project contains a lot of 3649 +# classes, structs, unions or interfaces. 3650 +# The default value is: YES. 3651 3652 ALPHABETICAL_INDEX = YES 3653 3654 -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 3655 -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 3656 -# in which this list will be split (can be a number in the range [1..20]) 3657 +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in 3658 +# which the alphabetical index list will be split. 3659 +# Minimum value: 1, maximum value: 20, default value: 5. 3660 +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. 3661 3662 COLS_IN_ALPHA_INDEX = 5 3663 3664 -# In case all classes in a project start with a common prefix, all 3665 -# classes will be put under the same header in the alphabetical index. 3666 -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 3667 -# should be ignored while generating the index headers. 3668 +# In case all classes in a project start with a common prefix, all classes will 3669 +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag 3670 +# can be used to specify a prefix (or a list of prefixes) that should be ignored 3671 +# while generating the index headers. 3672 +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. 3673 3674 IGNORE_PREFIX = 3675 3676 #--------------------------------------------------------------------------- 3677 -# configuration options related to the HTML output 3678 +# Configuration options related to the HTML output 3679 #--------------------------------------------------------------------------- 3680 3681 -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 3682 -# generate HTML output. 3683 +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output 3684 +# The default value is: YES. 3685 3686 GENERATE_HTML = YES 3687 3688 -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 3689 -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 3690 -# put in front of it. If left blank `html' will be used as the default path. 3691 +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a 3692 +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of 3693 +# it. 3694 +# The default directory is: html. 3695 +# This tag requires that the tag GENERATE_HTML is set to YES. 3696 3697 HTML_OUTPUT = html 3698 3699 -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 3700 -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 3701 -# doxygen will generate files with .html extension. 3702 +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each 3703 +# generated HTML page (for example: .htm, .php, .asp). 3704 +# The default value is: .html. 3705 +# This tag requires that the tag GENERATE_HTML is set to YES. 3706 3707 HTML_FILE_EXTENSION = .html 3708 3709 -# The HTML_HEADER tag can be used to specify a personal HTML header for 3710 -# each generated HTML page. If it is left blank doxygen will generate a 3711 -# standard header. Note that when using a custom header you are responsible 3712 -# for the proper inclusion of any scripts and style sheets that doxygen 3713 -# needs, which is dependent on the configuration options used. 3714 -# It is advised to generate a default header using "doxygen -w html 3715 -# header.html footer.html stylesheet.css YourConfigFile" and then modify 3716 -# that header. Note that the header is subject to change so you typically 3717 -# have to redo this when upgrading to a newer version of doxygen or when 3718 -# changing the value of configuration settings such as GENERATE_TREEVIEW! 3719 +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for 3720 +# each generated HTML page. If the tag is left blank doxygen will generate a 3721 +# standard header. 3722 +# 3723 +# To get valid HTML the header file that includes any scripts and style sheets 3724 +# that doxygen needs, which is dependent on the configuration options used (e.g. 3725 +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a 3726 +# default header using 3727 +# doxygen -w html new_header.html new_footer.html new_stylesheet.css 3728 +# YourConfigFile 3729 +# and then modify the file new_header.html. See also section "Doxygen usage" 3730 +# for information on how to generate the default header that doxygen normally 3731 +# uses. 3732 +# Note: The header is subject to change so you typically have to regenerate the 3733 +# default header when upgrading to a newer version of doxygen. For a description 3734 +# of the possible markers and block names see the documentation. 3735 +# This tag requires that the tag GENERATE_HTML is set to YES. 3736 3737 HTML_HEADER = 3738 3739 -# The HTML_FOOTER tag can be used to specify a personal HTML footer for 3740 -# each generated HTML page. If it is left blank doxygen will generate a 3741 -# standard footer. 3742 +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each 3743 +# generated HTML page. If the tag is left blank doxygen will generate a standard 3744 +# footer. See HTML_HEADER for more information on how to generate a default 3745 +# footer and what special commands can be used inside the footer. See also 3746 +# section "Doxygen usage" for information on how to generate the default footer 3747 +# that doxygen normally uses. 3748 +# This tag requires that the tag GENERATE_HTML is set to YES. 3749 3750 HTML_FOOTER = @CMAKE_BINARY_DIR@/doc/footer.html 3751 3752 -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 3753 -# style sheet that is used by each HTML page. It can be used to 3754 -# fine-tune the look of the HTML output. If left blank doxygen will 3755 -# generate a default style sheet. Note that it is recommended to use 3756 -# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this 3757 -# tag will in the future become obsolete. 3758 +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style 3759 +# sheet that is used by each HTML page. It can be used to fine-tune the look of 3760 +# the HTML output. If left blank doxygen will generate a default style sheet. 3761 +# See also section "Doxygen usage" for information on how to generate the style 3762 +# sheet that doxygen normally uses. 3763 +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as 3764 +# it is more robust and this tag (HTML_STYLESHEET) will in the future become 3765 +# obsolete. 3766 +# This tag requires that the tag GENERATE_HTML is set to YES. 3767 3768 HTML_STYLESHEET = 3769 3770 -# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional 3771 -# user-defined cascading style sheet that is included after the standard 3772 -# style sheets created by doxygen. Using this option one can overrule 3773 -# certain style aspects. This is preferred over using HTML_STYLESHEET 3774 -# since it does not replace the standard style sheet and is therefor more 3775 -# robust against future updates. Doxygen will copy the style sheet file to 3776 -# the output directory. 3777 +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined 3778 +# cascading style sheets that are included after the standard style sheets 3779 +# created by doxygen. Using this option one can overrule certain style aspects. 3780 +# This is preferred over using HTML_STYLESHEET since it does not replace the 3781 +# standard style sheet and is therefore more robust against future updates. 3782 +# Doxygen will copy the style sheet files to the output directory. 3783 +# Note: The order of the extra style sheet files is of importance (e.g. the last 3784 +# style sheet in the list overrules the setting of the previous ones in the 3785 +# list). For an example see the documentation. 3786 +# This tag requires that the tag GENERATE_HTML is set to YES. 3787 3788 HTML_EXTRA_STYLESHEET = @CMAKE_BINARY_DIR@/doc/extra.css 3789 3790 @@ -975,632 +1188,847 @@ 3791 # other source files which should be copied to the HTML output directory. Note 3792 # that these files will be copied to the base HTML output directory. Use the 3793 # \$relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these 3794 -# files. In the HTML_STYLESHEET file, use the file name only. Also note that 3795 -# the files will be copied as-is; there are no commands or markers available. 3796 +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the 3797 +# files will be copied as-is; there are no commands or markers available. 3798 +# This tag requires that the tag GENERATE_HTML is set to YES. 3799 3800 HTML_EXTRA_FILES = 3801 3802 -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. 3803 -# Doxygen will adjust the colors in the style sheet and background images 3804 -# according to this color. Hue is specified as an angle on a colorwheel, 3805 -# see http://en.wikipedia.org/wiki/Hue for more information. 3806 -# For instance the value 0 represents red, 60 is yellow, 120 is green, 3807 -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. 3808 -# The allowed range is 0 to 359. 3809 +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen 3810 +# will adjust the colors in the style sheet and background images according to 3811 +# this color. Hue is specified as an angle on a colorwheel, see 3812 +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value 3813 +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 3814 +# purple, and 360 is red again. 3815 +# Minimum value: 0, maximum value: 359, default value: 220. 3816 +# This tag requires that the tag GENERATE_HTML is set to YES. 3817 3818 HTML_COLORSTYLE_HUE = 16 3819 3820 -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of 3821 -# the colors in the HTML output. For a value of 0 the output will use 3822 -# grayscales only. A value of 255 will produce the most vivid colors. 3823 +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors 3824 +# in the HTML output. For a value of 0 the output will use grayscales only. A 3825 +# value of 255 will produce the most vivid colors. 3826 +# Minimum value: 0, maximum value: 255, default value: 100. 3827 +# This tag requires that the tag GENERATE_HTML is set to YES. 3828 3829 HTML_COLORSTYLE_SAT = 240 3830 3831 -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to 3832 -# the luminance component of the colors in the HTML output. Values below 3833 -# 100 gradually make the output lighter, whereas values above 100 make 3834 -# the output darker. The value divided by 100 is the actual gamma applied, 3835 -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, 3836 -# and 100 does not change the gamma. 3837 +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the 3838 +# luminance component of the colors in the HTML output. Values below 100 3839 +# gradually make the output lighter, whereas values above 100 make the output 3840 +# darker. The value divided by 100 is the actual gamma applied, so 80 represents 3841 +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not 3842 +# change the gamma. 3843 +# Minimum value: 40, maximum value: 240, default value: 80. 3844 +# This tag requires that the tag GENERATE_HTML is set to YES. 3845 3846 HTML_COLORSTYLE_GAMMA = 80 3847 3848 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML 3849 -# page will contain the date and time when the page was generated. Setting 3850 -# this to NO can help when comparing the output of multiple runs. 3851 +# page will contain the date and time when the page was generated. Setting this 3852 +# to YES can help to show when doxygen was last run and thus if the 3853 +# documentation is up to date. 3854 +# The default value is: NO. 3855 +# This tag requires that the tag GENERATE_HTML is set to YES. 3856 3857 HTML_TIMESTAMP = YES 3858 3859 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 3860 # documentation will contain sections that can be hidden and shown after the 3861 # page has loaded. 3862 +# The default value is: NO. 3863 +# This tag requires that the tag GENERATE_HTML is set to YES. 3864 3865 HTML_DYNAMIC_SECTIONS = NO 3866 3867 -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of 3868 -# entries shown in the various tree structured indices initially; the user 3869 -# can expand and collapse entries dynamically later on. Doxygen will expand 3870 -# the tree to such a level that at most the specified number of entries are 3871 -# visible (unless a fully collapsed tree already exceeds this amount). 3872 -# So setting the number of entries 1 will produce a full collapsed tree by 3873 -# default. 0 is a special value representing an infinite number of entries 3874 -# and will result in a full expanded tree by default. 3875 +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries 3876 +# shown in the various tree structured indices initially; the user can expand 3877 +# and collapse entries dynamically later on. Doxygen will expand the tree to 3878 +# such a level that at most the specified number of entries are visible (unless 3879 +# a fully collapsed tree already exceeds this amount). So setting the number of 3880 +# entries 1 will produce a full collapsed tree by default. 0 is a special value 3881 +# representing an infinite number of entries and will result in a full expanded 3882 +# tree by default. 3883 +# Minimum value: 0, maximum value: 9999, default value: 100. 3884 +# This tag requires that the tag GENERATE_HTML is set to YES. 3885 3886 HTML_INDEX_NUM_ENTRIES = 100 3887 3888 -# If the GENERATE_DOCSET tag is set to YES, additional index files 3889 -# will be generated that can be used as input for Apple's Xcode 3 3890 -# integrated development environment, introduced with OSX 10.5 (Leopard). 3891 -# To create a documentation set, doxygen will generate a Makefile in the 3892 -# HTML output directory. Running make will produce the docset in that 3893 -# directory and running "make install" will install the docset in 3894 -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 3895 -# it at startup. 3896 -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html 3897 +# If the GENERATE_DOCSET tag is set to YES, additional index files will be 3898 +# generated that can be used as input for Apple's Xcode 3 integrated development 3899 +# environment (see: http://developer.apple.com/tools/xcode/), introduced with 3900 +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a 3901 +# Makefile in the HTML output directory. Running make will produce the docset in 3902 +# that directory and running make install will install the docset in 3903 +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at 3904 +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html 3905 # for more information. 3906 +# The default value is: NO. 3907 +# This tag requires that the tag GENERATE_HTML is set to YES. 3908 3909 GENERATE_DOCSET = NO 3910 3911 -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 3912 -# feed. A documentation feed provides an umbrella under which multiple 3913 -# documentation sets from a single provider (such as a company or product suite) 3914 -# can be grouped. 3915 +# This tag determines the name of the docset feed. A documentation feed provides 3916 +# an umbrella under which multiple documentation sets from a single provider 3917 +# (such as a company or product suite) can be grouped. 3918 +# The default value is: Doxygen generated docs. 3919 +# This tag requires that the tag GENERATE_DOCSET is set to YES. 3920 3921 DOCSET_FEEDNAME = "Doxygen generated docs" 3922 3923 -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 3924 -# should uniquely identify the documentation set bundle. This should be a 3925 -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 3926 -# will append .docset to the name. 3927 +# This tag specifies a string that should uniquely identify the documentation 3928 +# set bundle. This should be a reverse domain-name style string, e.g. 3929 +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. 3930 +# The default value is: org.doxygen.Project. 3931 +# This tag requires that the tag GENERATE_DOCSET is set to YES. 3932 3933 DOCSET_BUNDLE_ID = org.doxygen.Project 3934 3935 -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely 3936 -# identify the documentation publisher. This should be a reverse domain-name 3937 -# style string, e.g. com.mycompany.MyDocSet.documentation. 3938 +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify 3939 +# the documentation publisher. This should be a reverse domain-name style 3940 +# string, e.g. com.mycompany.MyDocSet.documentation. 3941 +# The default value is: org.doxygen.Publisher. 3942 +# This tag requires that the tag GENERATE_DOCSET is set to YES. 3943 3944 DOCSET_PUBLISHER_ID = org.doxygen.Publisher 3945 3946 -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. 3947 +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. 3948 +# The default value is: Publisher. 3949 +# This tag requires that the tag GENERATE_DOCSET is set to YES. 3950 3951 DOCSET_PUBLISHER_NAME = Publisher 3952 3953 -# If the GENERATE_HTMLHELP tag is set to YES, additional index files 3954 -# will be generated that can be used as input for tools like the 3955 -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 3956 -# of the generated HTML documentation. 3957 +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three 3958 +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The 3959 +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop 3960 +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on 3961 +# Windows. 3962 +# 3963 +# The HTML Help Workshop contains a compiler that can convert all HTML output 3964 +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML 3965 +# files are now used as the Windows 98 help format, and will replace the old 3966 +# Windows help format (.hlp) on all Windows platforms in the future. Compressed 3967 +# HTML files also contain an index, a table of contents, and you can search for 3968 +# words in the documentation. The HTML workshop also contains a viewer for 3969 +# compressed HTML files. 3970 +# The default value is: NO. 3971 +# This tag requires that the tag GENERATE_HTML is set to YES. 3972 3973 GENERATE_HTMLHELP = NO 3974 3975 -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 3976 -# be used to specify the file name of the resulting .chm file. You 3977 -# can add a path in front of the file if the result should not be 3978 +# The CHM_FILE tag can be used to specify the file name of the resulting .chm 3979 +# file. You can add a path in front of the file if the result should not be 3980 # written to the html output directory. 3981 +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. 3982 3983 CHM_FILE = 3984 3985 -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 3986 -# be used to specify the location (absolute path including file name) of 3987 -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 3988 -# the HTML help compiler on the generated index.hhp. 3989 +# The HHC_LOCATION tag can be used to specify the location (absolute path 3990 +# including file name) of the HTML help compiler (hhc.exe). If non-empty, 3991 +# doxygen will try to run the HTML help compiler on the generated index.hhp. 3992 +# The file has to be specified with full path. 3993 +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. 3994 3995 HHC_LOCATION = 3996 3997 -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 3998 -# controls if a separate .chi index file is generated (YES) or that 3999 -# it should be included in the master .chm file (NO). 4000 +# The GENERATE_CHI flag controls if a separate .chi index file is generated 4001 +# (YES) or that it should be included in the master .chm file (NO). 4002 +# The default value is: NO. 4003 +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. 4004 4005 GENERATE_CHI = NO 4006 4007 -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 4008 -# is used to encode HtmlHelp index (hhk), content (hhc) and project file 4009 -# content. 4010 +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) 4011 +# and project file content. 4012 +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. 4013 4014 CHM_INDEX_ENCODING = 4015 4016 -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 4017 -# controls whether a binary table of contents is generated (YES) or a 4018 -# normal table of contents (NO) in the .chm file. 4019 +# The BINARY_TOC flag controls whether a binary table of contents is generated 4020 +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it 4021 +# enables the Previous and Next buttons. 4022 +# The default value is: NO. 4023 +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. 4024 4025 BINARY_TOC = NO 4026 4027 -# The TOC_EXPAND flag can be set to YES to add extra items for group members 4028 -# to the contents of the HTML help documentation and to the tree view. 4029 +# The TOC_EXPAND flag can be set to YES to add extra items for group members to 4030 +# the table of contents of the HTML help documentation and to the tree view. 4031 +# The default value is: NO. 4032 +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. 4033 4034 TOC_EXPAND = NO 4035 4036 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and 4037 -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated 4038 -# that can be used as input for Qt's qhelpgenerator to generate a 4039 -# Qt Compressed Help (.qch) of the generated HTML documentation. 4040 +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that 4041 +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help 4042 +# (.qch) of the generated HTML documentation. 4043 +# The default value is: NO. 4044 +# This tag requires that the tag GENERATE_HTML is set to YES. 4045 4046 GENERATE_QHP = NO 4047 4048 -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 4049 -# be used to specify the file name of the resulting .qch file. 4050 -# The path specified is relative to the HTML output folder. 4051 +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify 4052 +# the file name of the resulting .qch file. The path specified is relative to 4053 +# the HTML output folder. 4054 +# This tag requires that the tag GENERATE_QHP is set to YES. 4055 4056 QCH_FILE = 4057 4058 -# The QHP_NAMESPACE tag specifies the namespace to use when generating 4059 -# Qt Help Project output. For more information please see 4060 -# http://doc.trolltech.com/qthelpproject.html#namespace 4061 +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help 4062 +# Project output. For more information please see Qt Help Project / Namespace 4063 +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). 4064 +# The default value is: org.doxygen.Project. 4065 +# This tag requires that the tag GENERATE_QHP is set to YES. 4066 4067 QHP_NAMESPACE = org.doxygen.Project 4068 4069 -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 4070 -# Qt Help Project output. For more information please see 4071 -# http://doc.trolltech.com/qthelpproject.html#virtual-folders 4072 +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt 4073 +# Help Project output. For more information please see Qt Help Project / Virtual 4074 +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- 4075 +# folders). 4076 +# The default value is: doc. 4077 +# This tag requires that the tag GENERATE_QHP is set to YES. 4078 4079 QHP_VIRTUAL_FOLDER = doc 4080 4081 -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to 4082 -# add. For more information please see 4083 -# http://doc.trolltech.com/qthelpproject.html#custom-filters 4084 +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom 4085 +# filter to add. For more information please see Qt Help Project / Custom 4086 +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 4087 +# filters). 4088 +# This tag requires that the tag GENERATE_QHP is set to YES. 4089 4090 QHP_CUST_FILTER_NAME = 4091 4092 -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the 4093 -# custom filter to add. For more information please see 4094 -# 4095 -# Qt Help Project / Custom Filters. 4096 +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the 4097 +# custom filter to add. For more information please see Qt Help Project / Custom 4098 +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 4099 +# filters). 4100 +# This tag requires that the tag GENERATE_QHP is set to YES. 4101 4102 QHP_CUST_FILTER_ATTRS = 4103 4104 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 4105 -# project's 4106 -# filter section matches. 4107 -# 4108 -# Qt Help Project / Filter Attributes. 4109 +# project's filter section matches. Qt Help Project / Filter Attributes (see: 4110 +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). 4111 +# This tag requires that the tag GENERATE_QHP is set to YES. 4112 4113 QHP_SECT_FILTER_ATTRS = 4114 4115 -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 4116 -# be used to specify the location of Qt's qhelpgenerator. 4117 -# If non-empty doxygen will try to run qhelpgenerator on the generated 4118 -# .qhp file. 4119 +# The QHG_LOCATION tag can be used to specify the location of Qt's 4120 +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the 4121 +# generated .qhp file. 4122 +# This tag requires that the tag GENERATE_QHP is set to YES. 4123 4124 QHG_LOCATION = 4125 4126 -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files 4127 -# will be generated, which together with the HTML files, form an Eclipse help 4128 -# plugin. To install this plugin and make it available under the help contents 4129 -# menu in Eclipse, the contents of the directory containing the HTML and XML 4130 -# files needs to be copied into the plugins directory of eclipse. The name of 4131 -# the directory within the plugins directory should be the same as 4132 -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before 4133 -# the help appears. 4134 +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be 4135 +# generated, together with the HTML files, they form an Eclipse help plugin. To 4136 +# install this plugin and make it available under the help contents menu in 4137 +# Eclipse, the contents of the directory containing the HTML and XML files needs 4138 +# to be copied into the plugins directory of eclipse. The name of the directory 4139 +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. 4140 +# After copying Eclipse needs to be restarted before the help appears. 4141 +# The default value is: NO. 4142 +# This tag requires that the tag GENERATE_HTML is set to YES. 4143 4144 GENERATE_ECLIPSEHELP = NO 4145 4146 -# A unique identifier for the eclipse help plugin. When installing the plugin 4147 -# the directory name containing the HTML and XML files should also have 4148 -# this name. 4149 +# A unique identifier for the Eclipse help plugin. When installing the plugin 4150 +# the directory name containing the HTML and XML files should also have this 4151 +# name. Each documentation set should have its own identifier. 4152 +# The default value is: org.doxygen.Project. 4153 +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. 4154 4155 ECLIPSE_DOC_ID = org.doxygen.Project 4156 4157 -# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) 4158 -# at top of each HTML page. The value NO (the default) enables the index and 4159 -# the value YES disables it. Since the tabs have the same information as the 4160 -# navigation tree you can set this option to NO if you already set 4161 -# GENERATE_TREEVIEW to YES. 4162 +# If you want full control over the layout of the generated HTML pages it might 4163 +# be necessary to disable the index and replace it with your own. The 4164 +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top 4165 +# of each HTML page. A value of NO enables the index and the value YES disables 4166 +# it. Since the tabs in the index contain the same information as the navigation 4167 +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. 4168 +# The default value is: NO. 4169 +# This tag requires that the tag GENERATE_HTML is set to YES. 4170 4171 DISABLE_INDEX = NO 4172 4173 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 4174 -# structure should be generated to display hierarchical information. 4175 -# If the tag value is set to YES, a side panel will be generated 4176 -# containing a tree-like index structure (just like the one that 4177 -# is generated for HTML Help). For this to work a browser that supports 4178 -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). 4179 -# Windows users are probably better off using the HTML help feature. 4180 -# Since the tree basically has the same information as the tab index you 4181 -# could consider to set DISABLE_INDEX to NO when enabling this option. 4182 +# structure should be generated to display hierarchical information. If the tag 4183 +# value is set to YES, a side panel will be generated containing a tree-like 4184 +# index structure (just like the one that is generated for HTML Help). For this 4185 +# to work a browser that supports JavaScript, DHTML, CSS and frames is required 4186 +# (i.e. any modern browser). Windows users are probably better off using the 4187 +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can 4188 +# further fine-tune the look of the index. As an example, the default style 4189 +# sheet generated by doxygen has an example that shows how to put an image at 4190 +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has 4191 +# the same information as the tab index, you could consider setting 4192 +# DISABLE_INDEX to YES when enabling this option. 4193 +# The default value is: NO. 4194 +# This tag requires that the tag GENERATE_HTML is set to YES. 4195 4196 GENERATE_TREEVIEW = NO 4197 4198 -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values 4199 -# (range [0,1..20]) that doxygen will group on one line in the generated HTML 4200 -# documentation. Note that a value of 0 will completely suppress the enum 4201 -# values from appearing in the overview section. 4202 +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that 4203 +# doxygen will group on one line in the generated HTML documentation. 4204 +# 4205 +# Note that a value of 0 will completely suppress the enum values from appearing 4206 +# in the overview section. 4207 +# Minimum value: 0, maximum value: 20, default value: 4. 4208 +# This tag requires that the tag GENERATE_HTML is set to YES. 4209 4210 ENUM_VALUES_PER_LINE = 4 4211 4212 -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 4213 -# used to set the initial width (in pixels) of the frame in which the tree 4214 -# is shown. 4215 +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used 4216 +# to set the initial width (in pixels) of the frame in which the tree is shown. 4217 +# Minimum value: 0, maximum value: 1500, default value: 250. 4218 +# This tag requires that the tag GENERATE_HTML is set to YES. 4219 4220 TREEVIEW_WIDTH = 250 4221 4222 -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open 4223 -# links to external symbols imported via tag files in a separate window. 4224 +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to 4225 +# external symbols imported via tag files in a separate window. 4226 +# The default value is: NO. 4227 +# This tag requires that the tag GENERATE_HTML is set to YES. 4228 4229 EXT_LINKS_IN_WINDOW = NO 4230 4231 -# Use this tag to change the font size of Latex formulas included 4232 -# as images in the HTML documentation. The default is 10. Note that 4233 -# when you change the font size after a successful doxygen run you need 4234 -# to manually remove any form_*.png images from the HTML output directory 4235 -# to force them to be regenerated. 4236 +# Use this tag to change the font size of LaTeX formulas included as images in 4237 +# the HTML documentation. When you change the font size after a successful 4238 +# doxygen run you need to manually remove any form_*.png images from the HTML 4239 +# output directory to force them to be regenerated. 4240 +# Minimum value: 8, maximum value: 50, default value: 10. 4241 +# This tag requires that the tag GENERATE_HTML is set to YES. 4242 4243 FORMULA_FONTSIZE = 10 4244 4245 # Use the FORMULA_TRANPARENT tag to determine whether or not the images 4246 -# generated for formulas are transparent PNGs. Transparent PNGs are 4247 -# not supported properly for IE 6.0, but are supported on all modern browsers. 4248 -# Note that when changing this option you need to delete any form_*.png files 4249 -# in the HTML output before the changes have effect. 4250 +# generated for formulas are transparent PNGs. Transparent PNGs are not 4251 +# supported properly for IE 6.0, but are supported on all modern browsers. 4252 +# 4253 +# Note that when changing this option you need to delete any form_*.png files in 4254 +# the HTML output directory before the changes have effect. 4255 +# The default value is: YES. 4256 +# This tag requires that the tag GENERATE_HTML is set to YES. 4257 4258 FORMULA_TRANSPARENT = YES 4259 4260 -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax 4261 -# (see http://www.mathjax.org) which uses client side Javascript for the 4262 -# rendering instead of using prerendered bitmaps. Use this if you do not 4263 -# have LaTeX installed or if you want to formulas look prettier in the HTML 4264 -# output. When enabled you may also need to install MathJax separately and 4265 -# configure the path to it using the MATHJAX_RELPATH option. 4266 +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see 4267 +# http://www.mathjax.org) which uses client side Javascript for the rendering 4268 +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX 4269 +# installed or if you want to formulas look prettier in the HTML output. When 4270 +# enabled you may also need to install MathJax separately and configure the path 4271 +# to it using the MATHJAX_RELPATH option. 4272 +# The default value is: NO. 4273 +# This tag requires that the tag GENERATE_HTML is set to YES. 4274 4275 USE_MATHJAX = NO 4276 4277 # When MathJax is enabled you can set the default output format to be used for 4278 -# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and 4279 -# SVG. The default value is HTML-CSS, which is slower, but has the best 4280 -# compatibility. 4281 +# the MathJax output. See the MathJax site (see: 4282 +# http://docs.mathjax.org/en/latest/output.html) for more details. 4283 +# Possible values are: HTML-CSS (which is slower, but has the best 4284 +# compatibility), NativeMML (i.e. MathML) and SVG. 4285 +# The default value is: HTML-CSS. 4286 +# This tag requires that the tag USE_MATHJAX is set to YES. 4287 4288 MATHJAX_FORMAT = HTML-CSS 4289 4290 -# When MathJax is enabled you need to specify the location relative to the 4291 -# HTML output directory using the MATHJAX_RELPATH option. The destination 4292 -# directory should contain the MathJax.js script. For instance, if the mathjax 4293 -# directory is located at the same level as the HTML output directory, then 4294 -# MATHJAX_RELPATH should be ../mathjax. The default value points to 4295 -# the MathJax Content Delivery Network so you can quickly see the result without 4296 -# installing MathJax. 4297 -# However, it is strongly recommended to install a local 4298 -# copy of MathJax from http://www.mathjax.org before deployment. 4299 +# When MathJax is enabled you need to specify the location relative to the HTML 4300 +# output directory using the MATHJAX_RELPATH option. The destination directory 4301 +# should contain the MathJax.js script. For instance, if the mathjax directory 4302 +# is located at the same level as the HTML output directory, then 4303 +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax 4304 +# Content Delivery Network so you can quickly see the result without installing 4305 +# MathJax. However, it is strongly recommended to install a local copy of 4306 +# MathJax from http://www.mathjax.org before deployment. 4307 +# The default value is: http://cdn.mathjax.org/mathjax/latest. 4308 +# This tag requires that the tag USE_MATHJAX is set to YES. 4309 4310 MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest 4311 4312 -# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension 4313 -# names that should be enabled during MathJax rendering. 4314 +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax 4315 +# extension names that should be enabled during MathJax rendering. For example 4316 +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols 4317 +# This tag requires that the tag USE_MATHJAX is set to YES. 4318 4319 MATHJAX_EXTENSIONS = 4320 4321 -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript 4322 -# pieces of code that will be used on startup of the MathJax code. 4323 +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces 4324 +# of code that will be used on startup of the MathJax code. See the MathJax site 4325 +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an 4326 +# example see the documentation. 4327 +# This tag requires that the tag USE_MATHJAX is set to YES. 4328 4329 MATHJAX_CODEFILE = 4330 4331 -# When the SEARCHENGINE tag is enabled doxygen will generate a search box 4332 -# for the HTML output. The underlying search engine uses javascript 4333 -# and DHTML and should work on any modern browser. Note that when using 4334 -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets 4335 -# (GENERATE_DOCSET) there is already a search function so this one should 4336 -# typically be disabled. For large projects the javascript based search engine 4337 -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. 4338 +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for 4339 +# the HTML output. The underlying search engine uses javascript and DHTML and 4340 +# should work on any modern browser. Note that when using HTML help 4341 +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) 4342 +# there is already a search function so this one should typically be disabled. 4343 +# For large projects the javascript based search engine can be slow, then 4344 +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to 4345 +# search using the keyboard; to jump to the search box use + S 4346 +# (what the is depends on the OS and browser, but it is typically 4347 +# , /
The diff has been truncated for viewing.

## Subscribers

People subscribed via source and target branches

to all changes: