You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@etch.apache.org by ve...@apache.org on 2012/08/02 16:40:14 UTC
svn commit: r1368491 [2/8] - in /incubator/etch/trunk: ./
binding-cpp/runtime/ binding-cpp/runtime/include/common/
binding-cpp/runtime/include/serialization/
binding-cpp/runtime/include/transport/ binding-cpp/runtime/lib/capu/
binding-cpp/runtime/lib/c...
Modified: incubator/etch/trunk/binding-cpp/runtime/include/transport/EtchTcpListener.h
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/include/transport/EtchTcpListener.h?rev=1368491&r1=1368490&r2=1368491&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/include/transport/EtchTcpListener.h (original)
+++ incubator/etch/trunk/binding-cpp/runtime/include/transport/EtchTcpListener.h Thu Aug 2 14:40:08 2012
@@ -1,129 +1,130 @@
-/* $Id$
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version
- * 2.0 (the "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef __ETCHTCPLISTENER_H__
-#define __ETCHTCPLISTENER_H__
-#include "common/EtchError.h"
-#include "common/EtchObject.h"
-#include "capu/util/SmartPointer.h"
-#include "transport/EtchTransport.h"
-#include "transport/EtchSessionListener.h"
-#include "common/EtchSocket.h"
-#include "transport/EtchConnection.h"
-#include "capu/os/ServerSocket.h"
-#include "capu/os/Socket.h"
-#include "common/EtchServerSocket.h"
-#include "util/EtchURL.h"
-#include "util/EtchResources.h"
-
-/**
- * Implementation of a connection which handles a socket listener.
- */
-class EtchTcpListener
-: public EtchConnection<EtchSessionListener<EtchSocket> >,
-public virtual EtchTransport<EtchSessionListener<EtchSocket> > {
-public:
-
- /**
- * Default Constructor
- */
- EtchTcpListener(EtchURL *url);
-
- /**
- * Destructor
- */
- ~EtchTcpListener();
-
- virtual capu::bool_t isStarted();
-
- virtual status_t close();
-
- /**
- * @see TransportData
- */
- virtual status_t transportControl(capu::SmartPointer<EtchObject> control, capu::SmartPointer<EtchObject> value);
-
- /**
- * @see TransportData
- */
- virtual status_t transportNotify(capu::SmartPointer<EtchObject> event);
-
- /**
- * @see TransportData
- */
- virtual status_t transportQuery(capu::SmartPointer<EtchObject> query, capu::SmartPointer<EtchObject> &result);
-
- /**
- * @return Session
- */
- virtual EtchSessionListener<EtchSocket>* getSession();
-
- /**
- * Sets session
- */
- virtual void setSession(EtchSessionListener<EtchSocket>* session);
-
- virtual void operator()(void * param);
-
- /**
- * @see EtchConnection
- */
- virtual status_t setupSocket();
-
-protected:
-
- /**
- * @see EtchConnection
- */
- virtual status_t openSocket(capu::bool_t reconnect);
-
- /**
- * @see EtchConnection
- */
- virtual status_t readSocket();
-
-private:
- /**
- * The session for the connection.
- */
- EtchSessionListener<EtchSocket>* mSession;
-
- EtchServerSocket* mSocket;
-
- capu::uint16_t mPort;
-
- capu::uint8_t mBackLog;
-
-
-public:
- /**
- * Query term for URI to specify backlog value to ServerSocket. The value
- * is "TcpListener.backlog". The backlog must be >= 0 and somewhat
- * reasonable. The value 0 specifies the system default, the same as if you
- * leave the term off altogether.
- *
- * Example: tcp://host:port?TcpListener.backlog=250
- *
- * @see #TcpListener(String, Resources)
- */
- const static EtchString BACKLOG;
-};
-
-#endif /* ETCHTCPLISTENER_H */
-
+/* $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version
+ * 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __ETCHTCPLISTENER_H__
+#define __ETCHTCPLISTENER_H__
+#include "common/EtchError.h"
+#include "common/EtchObject.h"
+#include "capu/util/SmartPointer.h"
+#include "transport/EtchTransport.h"
+#include "transport/EtchSessionListener.h"
+#include "common/EtchSocket.h"
+#include "transport/EtchConnection.h"
+#include "capu/os/ServerSocket.h"
+#include "capu/os/Socket.h"
+#include "common/EtchServerSocket.h"
+#include "util/EtchURL.h"
+#include "util/EtchResources.h"
+#include "capu/util/Runnable.h"
+
+/**
+ * Implementation of a connection which handles a socket listener.
+ */
+class EtchTcpListener
+: public EtchConnection<EtchSessionListener<EtchSocket> >,
+public virtual EtchTransport<EtchSessionListener<EtchSocket> >, public capu::Runnable {
+public:
+
+ /**
+ * Default Constructor
+ */
+ EtchTcpListener(EtchURL *url);
+
+ /**
+ * Destructor
+ */
+ ~EtchTcpListener();
+
+ virtual capu::bool_t isStarted();
+
+ virtual status_t close();
+
+ /**
+ * @see TransportData
+ */
+ virtual status_t transportControl(capu::SmartPointer<EtchObject> control, capu::SmartPointer<EtchObject> value);
+
+ /**
+ * @see TransportData
+ */
+ virtual status_t transportNotify(capu::SmartPointer<EtchObject> event);
+
+ /**
+ * @see TransportData
+ */
+ virtual status_t transportQuery(capu::SmartPointer<EtchObject> query, capu::SmartPointer<EtchObject> &result);
+
+ /**
+ * @return Session
+ */
+ virtual EtchSessionListener<EtchSocket>* getSession();
+
+ /**
+ * Sets session
+ */
+ virtual void setSession(EtchSessionListener<EtchSocket>* session);
+
+ virtual void operator()(void * param);
+
+ /**
+ * @see EtchConnection
+ */
+ virtual status_t setupSocket();
+
+protected:
+
+ /**
+ * @see EtchConnection
+ */
+ virtual status_t openSocket(capu::bool_t reconnect);
+
+ /**
+ * @see EtchConnection
+ */
+ virtual status_t readSocket();
+
+private:
+ /**
+ * The session for the connection.
+ */
+ EtchSessionListener<EtchSocket>* mSession;
+
+ EtchServerSocket* mSocket;
+
+ capu::uint16_t mPort;
+
+ capu::uint8_t mBackLog;
+
+
+public:
+ /**
+ * Query term for URI to specify backlog value to ServerSocket. The value
+ * is "TcpListener.backlog". The backlog must be >= 0 and somewhat
+ * reasonable. The value 0 specifies the system default, the same as if you
+ * leave the term off altogether.
+ *
+ * Example: tcp://host:port?TcpListener.backlog=250
+ *
+ * @see #TcpListener(String, Resources)
+ */
+ const static EtchString BACKLOG;
+};
+
+#endif /* ETCHTCPLISTENER_H */
+
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/.gitignore
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/.gitignore?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/.gitignore (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/.gitignore Thu Aug 2 14:40:08 2012
@@ -0,0 +1,3 @@
+3psw
+build
+deliverable
Modified: incubator/etch/trunk/binding-cpp/runtime/lib/capu/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/CMakeLists.txt?rev=1368491&r1=1368490&r2=1368491&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/CMakeLists.txt (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/CMakeLists.txt Thu Aug 2 14:40:08 2012
@@ -1,27 +1,26 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to you under the Apache License, Version
-# 2.0 (the "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8) # Must be first line
-
-PROJECT(capu) # Must be second line
-
-INCLUDE(cmake/acme.cmake) # Must be third line
-
-ADD_SUBDIRECTORY(modules)
-
-BUILD_UNIT_TESTS()
-REPORT()
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8) # Must be first line
+
+PROJECT(capu) # Must be second line
+
+INCLUDE(cmake/acme/acme.cmake) # Must be third line
+
+ADD_SUBDIRECTORY(modules)
+
+FINALIZE()
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/acme.cmake
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/acme.cmake?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/acme.cmake (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/acme.cmake Thu Aug 2 14:40:08 2012
@@ -0,0 +1,152 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+#--------------------------------------------------------------------------
+# if a toolchain was provided and the toolchain file exists make sure,
+# all variables are set as early as possible
+#--------------------------------------------------------------------------
+IF (NOT "${CMAKE_TOOLCHAIN_FILE}" STREQUAL "" )
+ IF (EXISTS "${CMAKE_TOOLCHAIN_FILE}")
+ INCLUDE(${CMAKE_TOOLCHAIN_FILE})
+ MESSAGE(STATUS "Using toolchain file: " ${CMAKE_TOOLCHAIN_FILE})
+ ELSE()
+ MESSAGE(STATUS "WARNING: toolchain file not found: " ${CMAKE_TOOLCHAIN_FILE})
+ ENDIF()
+ENDIF()
+
+
+
+#--------------------------------------------------------------------------
+# store current path to acme build system
+# there the macro CMAKE_CURRENT_LIST_DIR, but it requires Cmake 2.8.3 or higher.
+# this solution works on CMake 2.6 as well.
+#--------------------------------------------------------------------------
+get_filename_component(ACME_PATH ${CMAKE_CURRENT_LIST_FILE} PATH)
+MESSAGE(STATUS "using ACME base directory: ${ACME_PATH}")
+
+#--------------------------------------------------------------------------
+# include internal implementation, configuration and plugins
+#--------------------------------------------------------------------------
+INCLUDE(${ACME_PATH}/internal/config.cmake)
+INCLUDE(${ACME_PATH}/internal/macros.cmake)
+
+MACRO(ADD_CMAKE_PROJECT aap_project_name)
+ INTERNAL_ADD_CMAKE_PROJECT("${aap_project_name}" "${ARGN}")
+ENDMACRO(ADD_CMAKE_PROJECT)
+
+MACRO(ADD_EXTERNAL_LIBRARY ael_library_name)
+ INTERNAL_ADD_EXTERNAL_LIBRARY("${ael_library_name}" "${ARGN}")
+ENDMACRO(ADD_EXTERNAL_LIBRARY)
+
+INCLUDE(${ACME_PATH}/internal/plugins.cmake)
+
+MACRO(ADD_MODULE ad_module_name ad_type)
+ INTERNAL_ADD_MODULE("${ad_module_name}" "${ad_type}")
+ENDMACRO(ADD_MODULE)
+
+MACRO(ADD_OPTIONAL_MODULE aom_module_name aom_type)
+ INTERNAL_ADD_OPTIONAL_MODULE("${aom_module_name}" "${aom_type}")
+ENDMACRO(ADD_OPTIONAL_MODULE)
+
+MACRO(REQUIRED_PACKAGE pkg_name)
+ INTERNAL_REQUIRED_PACKAGE("${pkg_name}")
+ENDMACRO(REQUIRED_PACKAGE)
+
+MACRO(OPTIONAL_PACKAGE pkg_name)
+ INTERNAL_OPTIONAL_PACKAGE("${pkg_name}")
+ENDMACRO(OPTIONAL_PACKAGE)
+
+MACRO(ADD_DEPENDENCY ad_name)
+ INTERNAL_ADD_DEPENDENCY("${ad_name}")
+ENDMACRO(ADD_DEPENDENCY)
+
+MACRO(ADD_COMPILER_FLAG ad_compiler_flag)
+ INTERNAL_ADD_COMPILER_FLAG("${ad_compiler_flag}")
+ENDMACRO(ADD_COMPILER_FLAG)
+
+MACRO(ADD_DEBUG_COMPILER_FLAG adcf_compiler_flag)
+ INTERNAL_ADD_DEBUG_COMPILER_FLAG("${adcf_compiler_flag}")
+ENDMACRO(ADD_DEBUG_COMPILER_FLAG)
+
+MACRO(ADD_RELEASE_COMPILER_FLAG arcf_compiler_flag)
+ INTERNAL_ADD_RELEASE_COMPILER_FLAG("${arcf_compiler_flag}")
+ENDMACRO(ADD_RELEASE_COMPILER_FLAG)
+
+MACRO(ADD_DEFINITION ad_definition)
+ INTERNAL_ADD_DEFINITION("${ad_definition}")
+ENDMACRO(ADD_DEFINITION)
+
+MACRO(ADD_DEBUG_DEFINITION add_definition)
+ INTERNAL_ADD_DEBUG_DEFINITION("${add_definition}")
+ENDMACRO(ADD_DEBUG_DEFINITION)
+
+MACRO(ADD_RELEASE_DEFINITION ard_definition)
+ INTERNAL_ADD_RELEASE_DEFINITION("${ard_definition}")
+ENDMACRO(ADD_RELEASE_DEFINITION)
+
+MACRO(ADD_LINKER_FLAG alf_linker_flag)
+ INTERNAL_ADD_LINKER_FLAG("${alf_linker_flag}")
+ENDMACRO(ADD_LINKER_FLAG)
+
+MACRO(ADD_DEBUG_LINKER_FLAG adlf_linker_flag)
+ INTERNAL_ADD_DEBUG_LINKER_FLAG("${adlf_linker_flag}")
+ENDMACRO(ADD_DEBUG_LINKER_FLAG)
+
+MACRO(ADD_RELEASE_LINKER_FLAG arlf_linker_flag)
+ INTERNAL_ADD_RELEASE_LINKER_FLAG("${arlf_linker_flag}")
+ENDMACRO(ADD_RELEASE_LINKER_FLAG)
+
+MACRO(ADD_FILE)
+ INTERNAL_ADD_FILE(${ARGN})
+ENDMACRO(ADD_FILE)
+
+MACRO(ADD_OPTIONAL_FILE aoc_name)
+ INTERNAL_ADD_OPTIONAL_FILE("${aoc_name}" "${ARGN}")
+ENDMACRO(ADD_OPTIONAL_FILE)
+
+MACRO(LINK_LIBRARY ll_name)
+ INTERNAL_LINK_LIBRARY("${ll_name}" ${ARGN})
+ENDMACRO(LINK_LIBRARY ll_name)
+
+MACRO(LINK_LIBRARY_GROUP llg_name)
+ INTERNAL_LINK_LIBRARY_GROUP("${llg_name}" ${ARGN})
+ENDMACRO(LINK_LIBRARY_GROUP)
+
+MACRO(ADD_INSTALL_FILE)
+ INTERNAL_ADD_INSTALL_FILE("${ARGN}")
+ENDMACRO(ADD_INSTALL_FILE)
+
+MACRO(JUST_DOIT)
+ INTERNAL_JUST_DOIT()
+ENDMACRO(JUST_DOIT)
+
+MACRO(INSTALL_MODULE)
+ INTERNAL_INSTALL_MODULE("${ARGN}")
+ENDMACRO(INSTALL_MODULE)
+
+MACRO(INSTALL_RESOURCES)
+ INTERNAL_INSTALL_RESOURCES("${ARGN}")
+ENDMACRO(INSTALL_RESOURCES)
+
+MACRO(FINALIZE)
+ INTERNAL_FINALIZE()
+ENDMACRO()
+
+MACRO(REPORT)
+ INTERNAL_REPORT()
+ENDMACRO(REPORT)
+
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/config.cmake
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/config.cmake?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/config.cmake (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/config.cmake Thu Aug 2 14:40:08 2012
@@ -0,0 +1,61 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+SET(HEADER_FILE_EXTENSIONS "h;hpp;inc" CACHE STRING "file extension of header files.")
+SET(SOURCE_FILE_EXTENSIONS "cpp;c" CACHE STRING "file extension of source files.")
+
+SET(BUILD_UNITTESTS 1 CACHE BOOL "Building Unit-Tests")
+IF(NOT DEFINED THIRD_PARTY_DIR)
+ SET(THIRD_PARTY_DIR ${PROJECT_SOURCE_DIR}/3psw)
+ENDIF()
+
+IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ SET(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/deliverable/${CMAKE_PROJECT_NAME}" CACHE PATH "Install prefix" FORCE )
+ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+
+SET(CMAKE_CMAKE_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/cmake" CACHE INTERNAL "Path to store information for external use of the project.")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/lib/${TARGET_OS}_${TARGET_ARCH}" CACHE INTERNAL "Path to store library files.")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/lib/${TARGET_OS}_${TARGET_ARCH}" CACHE INTERNAL "Path to store archive files.")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/bin/${TARGET_OS}_${TARGET_ARCH}" CACHE INTERNAL "Path to store executable files.")
+SET(CMAKE_HEADER_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/include" CACHE INTERNAL "Path to store public header files.")
+SET(CMAKE_RESOURCE_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/res" CACHE INTERNAL "Path to store resource files.")
+SET(CMAKE_DOC_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/doc" CACHE INTERNAL "Path to store documentation files.")
+
+
+SET(GLOBAL_EXTERN_INCLUDE_DIRS "" CACHE INTERNAL "collect extern include dirs")
+SET(BUILD_GLOBAL_TEST_EXECUTABLE 0 CACHE BOOL "Enable building of one test executable")
+SET(GLOBAL_TEST_LIBS "" CACHE INTERNAL "collect test libs")
+SET(GLOBAL_TEST_SOURCE "" CACHE INTERNAL "collect test source")
+SET(GLOBAL_TEST_INCLUDE_DIRECTORIES "" CACHE INTERNAL "collect test include directories")
+
+SET(GLOBAL_TEST_DEBUG_COMPILER_FLAGS "" CACHE INTERNAL "collect test compiler flags")
+SET(GLOBAL_TEST_DEBUG_LINKER_FLAGS "" CACHE INTERNAL "collect test linker flags")
+SET(GLOBAL_TEST_DEBUG_DEFINITIONS "" CACHE INTERNAL "collect test defintions")
+SET(GLOBAL_TEST_RELEASE_COMPILER_FLAGS "" CACHE INTERNAL "collect test compiler flags")
+SET(GLOBAL_TEST_RELEASE_LINKER_FLAGS "" CACHE INTERNAL "collect test linker flags")
+SET(GLOBAL_TEST_RELEASE_DEFINITIONS "" CACHE INTERNAL "collect test defintions")
+
+SET(GLOBAL_TEST_LINKER_DIRECTORIES "" CACHE INTERNAL "collect test linker directories")
+#SET(GLOBAL_INCLUDE_DIRECTORIES "" CACHE INTERNAL "collect include directories")
+SET(GLOBAL_LIB_DIRECTORIES "" CACHE INTERNAL "collect lib directories")
+SET(GLOBAL_LIBRARIES "" CACHE INTERNAL "collect all linkable libraries")
+
+SET(UTILS_MODULES_STATIC "" CACHE INTERNAL "")
+SET(UTILS_MODULES_DYNAMIC "" CACHE INTERNAL "")
+SET(UTILS_MODULES_EXE "" CACHE INTERNAL "")
+SET(UTILS_MODULES_TESTS "" CACHE INTERNAL "")
+
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/macros.cmake
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/macros.cmake?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/macros.cmake (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/macros.cmake Thu Aug 2 14:40:08 2012
@@ -0,0 +1,1060 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Split arguments passed to a function into several lists separated by
+# specified identifiers that do not have an associated list e.g.:
+#
+# SET(arguments
+# hello world
+# LIST3 foo bar
+# LIST1 fuz baz
+# )
+# ARGUMENT_SPLITTER("${arguments}" "LIST1 LIST2 LIST3" ARG)
+#
+# results in 8 distinct variables:
+# * ARG_DEFAULT_FOUND: 1
+# * ARG_DEFAULT: hello;world
+# * ARG_LIST1_FOUND: 1
+# * ARG_LIST1: fuz;baz
+# * ARG_LIST2_FOUND: 0
+# * ARG_LIST2:
+# * ARG_LIST3_FOUND: 1
+# * ARG_LIST3: foo;bar
+
+MACRO(INTERNAL_ARGUMENT_SPLITTER argInput argKeywordList argPrefix)
+
+ SET(inputTokenList "DEFAULT" "${argInput}")
+ SET(keywordList "DEFAULT ${argKeywordList}")
+ SET(prefix ${argPrefix})
+
+ # convert provided inputTokenList to list
+ #SEPARATE_ARGUMENTS(inputTokenList)
+ SEPARATE_ARGUMENTS(keywordList)
+
+ # initialize all out variables to default values
+ FOREACH(keyword ${keywordList})
+ SET(${prefix}_${keyword}_FOUND 0)
+ SET(${prefix}_${keyword} "")
+ ENDFOREACH(keyword)
+
+ # iterate all tokens of provided input
+ FOREACH(token ${inputTokenList})
+ # check if current token is a keyword
+ SET(tokenIsKeyword 0)
+ FOREACH(keyword ${keywordList})
+ IF ("${keyword}" STREQUAL "${token}")
+ SET(tokenIsKeyword 1)
+ SET(lastKeyword ${keyword})
+ ENDIF ("${keyword}" STREQUAL "${token}")
+ ENDFOREACH(keyword)
+
+ IF (${tokenIsKeyword})
+ # if current token is keyword, set found variable to true
+ SET(${prefix}_${token}_FOUND 1)
+ ELSE (${tokenIsKeyword})
+ # if current token is not keyword, append token to variable of last found keyword
+ SET(${prefix}_${lastKeyword} ${${prefix}_${lastKeyword}} ${token})
+ ENDIF (${tokenIsKeyword})
+
+
+ ENDFOREACH(token)
+ENDMACRO(INTERNAL_ARGUMENT_SPLITTER)
+
+#MACRO(INTERNAL_ADD_OS_SUPPORT os)
+# SET(SUPPORTED_OS ${os} ${ARGN})
+# SET(TARGET_OS ${os} CACHE STRINGS "Select target OS")
+# SET_PROPERTY(CACHE TARGET_OS PROPERTY STRINGS ${SUPPORTED_OS})
+#ENDMACRO(INTERNAL_ADD_OS_SUPPORT)
+
+MACRO(INTERNAL_ADD_PREFIX var prefix)
+ SET(${var})
+ IF(NOT "${ARGN}" STREQUAL "")
+ FOREACH(item ${ARGN})
+ SET(${var} ${${var}} ${prefix}${item})
+ ENDFOREACH(item)
+ ENDIF(NOT "${ARGN}" STREQUAL "")
+ENDMACRO(INTERNAL_ADD_PREFIX)
+
+
+MACRO(INTERNAL_SPLIT_PATH_AND_FILE file_with_path path filename)
+ GET_FILENAME_COMPONENT(${path} ${file_with_path} PATH)
+ IF(NOT "${${path}}" STREQUAL "")
+ SET(${path} "${${path}}/")
+ ENDIF()
+ GET_FILENAME_COMPONENT(${filename} ${file_with_path} NAME)
+ENDMACRO(INTERNAL_SPLIT_PATH_AND_FILE)
+
+
+MACRO(INTERNAL_GET_MODULE_NAME var)
+ GET_FILENAME_COMPONENT(${var} ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+ENDMACRO(INTERNAL_GET_MODULE_NAME)
+
+
+MACRO(INTERNAL_GET_PUBLIC_INCLUDE_PATH var)
+ INTERNAL_GET_MODULE_NAME(gpip_module_name)
+ INTERNAL_GET_INTERN_INCLUDE_PATH(gpip_include_path)
+ SET(${var} "${gpip_include_path}/${gpip_module_name}")
+ENDMACRO(INTERNAL_GET_PUBLIC_INCLUDE_PATH)
+
+
+MACRO(INTERNAL_GET_INTERN_INCLUDE_PATH var)
+ SET(${var} ${CMAKE_CURRENT_SOURCE_DIR}/include)
+ENDMACRO(INTERNAL_GET_INTERN_INCLUDE_PATH)
+
+
+MACRO(INTERNAL_GET_PLATFORM_INCLUDE_PATH var gpi_classname)
+ INTERNAL_SPLIT_PATH_AND_FILE(${gpi_classname} gpi_path gpi_filename)
+ INTERNAL_GET_INTERN_INCLUDE_PATH(gpi_include_path)
+ #IF(NOT "${gpi_path}" STREQUAL "")
+ SET(${var} "${gpi_include_path}/${CURRENT_MODULE_NAME}/${gpi_path}arch")
+ #ELSE()
+ # SET(${var} "${gpi_include_path}/${CURRENT_MODULE_NAME}/arch")
+ #ENDIF()
+
+ENDMACRO(INTERNAL_GET_PLATFORM_INCLUDE_PATH)
+
+
+MACRO(INTERNAL_GET_SOURCE_PATH var)
+ SET(${var} ${CMAKE_CURRENT_SOURCE_DIR}/src)
+ENDMACRO(INTERNAL_GET_SOURCE_PATH)
+
+
+MACRO(INTERNAL_GET_PLATFORM_SOURCE_PATH var gps_classname)
+# INTERNAL_GET_SOURCE_PATH(gps_source_path)
+# SET(${var} "${gps_source_path}/arch")
+
+ INTERNAL_SPLIT_PATH_AND_FILE(${gps_classname} gps_path gps_filename)
+ INTERNAL_GET_SOURCE_PATH(gps_source_path)
+ SET(${var} "${gps_source_path}/${gps_path}arch")
+ENDMACRO(INTERNAL_GET_PLATFORM_SOURCE_PATH)
+
+
+MACRO(INTERNAL_GET_TEST_PATH var)
+ SET(${var} ${CMAKE_CURRENT_SOURCE_DIR}/test)
+ENDMACRO(INTERNAL_GET_TEST_PATH)
+
+
+MACRO(INTERNAL_GET_PATH_TO_FILES gsp_class)
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "PREFIX" GSP)
+ INTERNAL_SPLIT_PATH_AND_FILE(${gsp_class} GSP_PATH_TO_FILE GSP_FILENAME)
+
+ STRING(TOUPPER ${GSP_FILENAME} gsp_varname)
+ IF(NOT "${GSP_PREFIX}" STREQUAL "")
+ SET(gsp_varname ${GSP_PREFIX})
+ #ELSEIF(NOT "${GSP_PLATFORM}" STREQUAL "")
+ # STRING(TOUPPER ${GSP_PLATFORM} gsp_platform_varname)
+ # SET(gsp_varname ${gsp_platform_varname}${gsp_varname})
+
+ ENDIF()
+
+ SET(gsp_all_classes ${gsp_class} ${GSP_DEFAULT_ARGS})
+
+ SET(${gsp_varname}_PUBLIC_HEADER)
+ SET(${gsp_varname}_INTERN_HEADER)
+ SET(${gsp_varname}_SOURCE_FILES)
+
+ FOREACH(gsp_current_class ${gsp_all_classes})
+
+ INTERNAL_GET_PUBLIC_INCLUDE_PATH( gsp_public_include_path )
+
+ FOREACH(gsp_current_header_type ${HEADER_FILE_EXTENSIONS})
+ SET(gsp_public_include_file "${gsp_public_include_path}/${gsp_current_class}.${gsp_current_header_type}" )
+
+ IF(EXISTS ${gsp_public_include_file})
+ SET(${gsp_varname}_PUBLIC_HEADER ${${gsp_varname}_PUBLIC_HEADER} ${gsp_public_include_file})
+ ENDIF()
+
+ INTERNAL_GET_PLATFORM_INCLUDE_PATH( gsp_platform_include_path "${gsp_current_class}" )
+ SET(gsp_generic_include_file "${gsp_platform_include_path}/${GSP_FILENAME}.${gsp_current_header_type}" )
+
+ IF(EXISTS ${gsp_generic_include_file})
+ SET(${gsp_varname}_PUBLIC_HEADER ${${gsp_varname}_PUBLIC_HEADER} ${gsp_generic_include_file})
+ ENDIF()
+
+ INTERNAL_GET_INTERN_INCLUDE_PATH( gsp_intern_include_path )
+ SET(gsp_intern_include_file "${gsp_intern_include_path}/${gsp_current_class}.${gsp_current_header_type}" )
+ IF(EXISTS ${gsp_intern_include_file})
+ SET(${gsp_varname}_INTERN_HEADER ${${gsp_varname}_INTERN_HEADER} ${gsp_intern_include_file})
+ ELSE()
+ SET(gsp_intern_include_files "${gsp_platform_include_path}/${TARGET_OS}/${GSP_FILENAME}.${gsp_current_header_type}" "${gsp_platform_include_path}/${TARGET_OS}_${TARGET_ARCH}/${GSP_FILENAME}.${gsp_current_header_type}")
+ FOREACH(gsp_intern_include_file ${gsp_intern_include_files})
+ IF(EXISTS ${gsp_intern_include_file})
+ SET(${gsp_varname}_INTERN_HEADER ${${gsp_varname}_INTERN_HEADER} ${gsp_intern_include_file})
+ ENDIF()
+ ENDFOREACH()
+ ENDIF()
+ ENDFOREACH()
+
+ FOREACH(gsp_current_source_type ${SOURCE_FILE_EXTENSIONS})
+ INTERNAL_GET_SOURCE_PATH(gsp_source_path)
+ SET(gsp_source_file "${gsp_source_path}/${gsp_current_class}.${gsp_current_source_type}" )
+ IF(EXISTS ${gsp_source_file})
+ SET(${gsp_varname}_SOURCE_FILES ${${gsp_varname}_SOURCE_FILES} ${gsp_source_file})
+ ELSE()
+ INTERNAL_GET_PLATFORM_SOURCE_PATH(gsp_platform_source_path "${gsp_current_class}")
+ SET(gsp_source_files "${gsp_platform_source_path}/${TARGET_OS}/${GSP_FILENAME}.${gsp_current_source_type}" "${gsp_platform_source_path}/${TARGET_OS}_${TARGET_ARCH}/${GSP_FILENAME}.${gsp_current_source_type}")
+ FOREACH(gsp_source_file ${gsp_source_files})
+ IF(EXISTS ${gsp_source_file})
+ SET(${gsp_varname}_SOURCE_FILES ${${gsp_varname}_SOURCE_FILES} ${gsp_source_file})
+ ENDIF()
+ ENDFOREACH()
+ ENDIF()
+ ENDFOREACH()
+
+ INTERNAL_GET_TEST_PATH( gsp_test_path )
+ SET(gsp_test_header "${gsp_test_path}/${gsp_current_class}Test.h")
+ SET(gsp_test_source "${gsp_test_path}/${gsp_current_class}Test.cpp")
+
+ IF(EXISTS ${gsp_test_header})
+ SET(${gsp_varname}_TEST_FILES ${${gsp_varname}_TEST_FILES} ${gsp_test_header})
+ ENDIF()
+
+ IF(EXISTS ${gsp_test_source})
+ SET(${gsp_varname}_TEST_FILES ${${gsp_varname}_TEST_FILES} ${gsp_test_source})
+ ENDIF()
+
+ ENDFOREACH()
+
+ENDMACRO(INTERNAL_GET_PATH_TO_FILES)
+
+
+MACRO(INTERNAL_ADD_FILE ac_name)
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "SOURCE_VAR TEST_VAR SOURCE_GROUP PREFIX CONDITIONS" AC)
+
+ SET(ADD_FILE_CONDITIONS_MET 1)
+ FOREACH(CONDITION ${AC_CONDITIONS})
+ IF (NOT ${CONDITION})
+ MESSAGE(STATUS "Excluded class ${ac_name}, condition ${CONDITION} failed")
+ SET(ADD_FILE_CONDITIONS_MET 0)
+ ENDIF()
+ ENDFOREACH()
+
+ IF(${ADD_FILE_CONDITIONS_MET})
+
+ SET(ac_all_classes ${ac_name} ${AC_DEFAULT_ARGS})
+
+ IF("${AC_PREFIX}" STREQUAL "")
+ INTERNAL_SPLIT_PATH_AND_FILE(${ac_name} ac_path ac_filename)
+
+ STRING(TOUPPER ${ac_filename} ac_varname)
+ SET(AC_PREFIX ${ac_varname})
+ ENDIF()
+
+ INTERNAL_GET_PATH_TO_FILES(${ac_all_classes} PREFIX ${AC_PREFIX})
+ IF(NOT "${${AC_PREFIX}_SOURCE_FILES}" STREQUAL "")
+ SET(${CURRENT_MODULE_NAME}_HAS_SOURCE_FILES 1 CACHE INTERNAL "")
+ ENDIF()
+
+ IF(NOT "${AC_SOURCE_GROUP}" STREQUAL "")
+ SET(${AC_SOURCE_GROUP} ${${AC_SOURCE_GROUP}} ${${AC_PREFIX}_INTERN_HEADER} ${${AC_PREFIX}_SOURCE_FILES})
+ ENDIF()
+
+ IF(NOT "${AC_SOURCE_VAR}" STREQUAL "")
+ SET(${AC_SOURCE_VAR} ${${AC_SOURCE_VAR}} ${${AC_PREFIX}_PUBLIC_HEADER} ${${AC_PREFIX}_INTERN_HEADER} ${${AC_PREFIX}_SOURCE_FILES})
+ ELSE()
+ SET(${CURRENT_UPPER_MODULE_NAME}_MODULE_SOURCE_FILES ${${CURRENT_UPPER_MODULE_NAME}_MODULE_SOURCE_FILES} ${${AC_PREFIX}_PUBLIC_HEADER} ${${AC_PREFIX}_INTERN_HEADER} ${${AC_PREFIX}_SOURCE_FILES})
+ ENDIF()
+
+ IF(NOT "${AC_TEST_VAR}" STREQUAL "")
+ SET(${AC_TEST_VAR} ${${AC_TEST_VAR}} ${${AC_PREFIX}_TEST_FILES})
+ ELSE()
+ SET(${CURRENT_MODULE_NAME}_TEST_FILES ${${CURRENT_MODULE_NAME}_TEST_FILES} ${${AC_PREFIX}_TEST_FILES})
+ ENDIF()
+
+ ENDIF()
+
+ENDMACRO(INTERNAL_ADD_FILE)
+
+
+MACRO(INTERNAL_ADD_OPTIONAL_FILE aoc_name)
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "SOURCE_VAR SOURCE_GROUP PREFIX CONDITIONS" AOC)
+ IF("${AOC_PREFIX}" STREQUAL "")
+ INTERNAL_SPLIT_PATH_AND_FILE(${aoc_name} aoc_path aoc_filename)
+ STRING(TOUPPER ${aoc_filename} aoc_varname)
+ SET(AOC_PREFIX ${aoc_varname})
+ ENDIF()
+
+ SET(aoc_temp_files)
+ set(aoc_temp_test)
+
+ INTERNAL_ADD_FILE(${aoc_name} ${AOC_DEFAULT_ARGS} SOURCE_VAR aoc_temp_files TEST_VAR aoc_temp_test SOURCE_GROUP ${AOC_SOURCE_GROUP} PREFIX ${AOC_PREFIX} CONDITIONS ${AOC_CONDITIONS})
+ INTERNAL_ADD_OPTIONAL_FILES(${CURRENT_UPPER_MODULE_NAME}_${AOC_PREFIX} SOURCE_FILES ${aoc_temp_files} TEST_FILES ${aoc_temp_test})
+
+ SET(${CURRENT_UPPER_MODULE_NAME}_SOURCE_FILES ${${CURRENT_UPPER_MODULE_NAME}_MODULE_SOURCE_FILES} ${${CURRENT_UPPER_MODULE_NAME}_${AOC_PREFIX}_SOURCE_FILES})
+ SET(${CURRENT_MODULE_NAME}_TEST_FILES ${${CURRENT_MODULE_NAME}_TEST_FILES} ${${CURRENT_UPPER_MODULE_NAME}_${AOC_PREFIX}_TEST_FILES})
+ENDMACRO(INTERNAL_ADD_OPTIONAL_FILE)
+
+
+MACRO(INTERNAL_ADD_SOURCE_FILES destination)
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "PUBLIC_HEADER INTERN_HEADER SOURCE_FILES" ARG)
+ SET(${destination} ${${destination}} ${ARG_PUBLIC_HEADER} ${ARG_INTERN_HEADER} ${ARG_SOURCE_FILES})
+ENDMACRO(INTERNAL_ADD_SOURCE_FILES)
+
+
+MACRO(INTERNAL_ADD_OPTIONAL_FILES prefix)
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "SOURCE_FILES TEST_FILES" AOF)
+
+ SET(${prefix}_ENABLE "on" CACHE BOOL "Enable ${prefix}" )
+ SET(${prefix}_SOURCE_FILES)
+ SET(${prefix}_TEST_FILES)
+
+ IF(${WITH_${CURRENT_UPPER_MODULE_NAME}})
+ IF(${${prefix}_ENABLE})
+ SET(${prefix}_SOURCE_FILES ${AOF_SOURCE_FILES})
+ SET(${prefix}_TEST_FILES ${AOF_TEST_FILES})
+ ENDIF()
+ ELSE()
+ INTERNAL_REMOVE_OPTIONAL_FILES(${prefix})
+ ENDIF()
+ENDMACRO(INTERNAL_ADD_OPTIONAL_FILES)
+
+
+MACRO(INTERNAL_ADD_DEPENDENCY ad_name)
+
+ IF("${ad_name}_FOUND")
+
+ SET(${CURRENT_MODULE_NAME}_DEPENDENCIES ${${CURRENT_MODULE_NAME}_DEPENDENCIES} ${ad_name} ${${ad_name}_DEPENDENCIES} CACHE INTERNAL "")
+
+ FOREACH(iad_dependency ${${ad_name}_DEPENDENCIES})
+ INTERNAL_ADD_DEFINITION("${${iad_dependency}_DEPENDENT_DEFINITIONS}")
+ INTERNAL_ADD_DEBUG_DEFINITION("${${iad_dependency}_DEPENDENT_DEBUG_DEFINITIONS}")
+ INTERNAL_ADD_RELEASE_DEFINITION("${${iad_dependency}_DEPENDENT_RELEASE_DEFINITIONS}")
+ ENDFOREACH()
+
+ INTERNAL_ADD_DEFINITION("${${ad_name}_DEPENDENT_DEFINITIONS}")
+ INTERNAL_ADD_DEBUG_DEFINITION("${${ad_name}_DEPENDENT_DEBUG_DEFINITIONS}")
+ INTERNAL_ADD_RELEASE_DEFINITION("${${ad_name}_DEPENDENT_RELEASE_DEFINITIONS}")
+
+ ELSE()
+ MESSAGE(STATUS "WARNING: Required package '${ad_name}' was not found.")
+ MESSAGE(STATUS "WARNING: Build of '${CURRENT_MODULE_NAME}' was disabled.")
+ MESSAGE(STATUS "WARNING: Install package '${ad_name}' to enable build of '${CURRENT_MODULE_NAME}'.")
+ SET(${CURRENT_MODULE_NAME}_BUILD_ENABLED 0)
+ ENDIF()
+
+
+ #SET(${CURRENT_MODULE_NAME}_DEPENDENCIES ${${CURRENT_MODULE_NAME}_DEPENDENCIES} ${ad_name})
+ENDMACRO(INTERNAL_ADD_DEPENDENCY)
+
+MACRO(INTERNAL_LINK_LIBRARY ill_library)
+
+ #LIST(FIND GLOBAL_LIBRARIES ${ill_library} FOUND_LIBRARY)
+
+ #IF(${FOUND_LIBRARY} EQUAL -1)
+ # MESSAGE(FATAL_ERROR "You tried to link against the unknown lib ${ill_library}")
+ #ENDIF()
+ SET(${CURRENT_MODULE_NAME}_LIBRARIES ${${CURRENT_MODULE_NAME}_LIBRARIES} ${ill_library} ${ARGN} "" CACHE INTERNAL "")
+ENDMACRO(INTERNAL_LINK_LIBRARY)
+
+MACRO(INTERNAL_LINK_LIBRARY_GROUP illg_library)
+ SET(${CURRENT_MODULE_NAME}_LIBRARIES ${${CURRENT_MODULE_NAME}_LIBRARIES} ${illg_library} ${ARGN})
+
+ INTERNAL_GROUP_LINK(${CURRENT_MODULE_NAME}_LIBRARIES ${${CURRENT_MODULE_NAME}_LIBRARIES})
+
+ENDMACRO(INTERNAL_LINK_LIBRARY_GROUP)
+
+MACRO(INTERNAL_GROUP_LINK igl_libs)
+ IF("${TARGET_COMPILER}" STREQUAL "GCC")
+ SET(${igl_libs} "-Wl,--start-group" ${ARGN} "-Wl,--end-group")
+ ENDIF()
+ENDMACRO(INTERNAL_GROUP_LINK)
+
+
+MACRO(INTERNAL_JUST_DOIT)
+ IF(${WITH_${CURRENT_UPPER_MODULE_NAME}} AND ${${CURRENT_MODULE_NAME}_BUILD_ENABLED})
+
+ INTERNAL_GET_INTERN_INCLUDE_PATH(asl_intern_include_path)
+
+ INCLUDE_DIRECTORIES(${asl_intern_include_path})
+
+ SET(jd_collected_dependencies "${${CURRENT_MODULE_NAME}_PACKAGE_LIBS}" "${${CURRENT_MODULE_NAME}_LIBRARIES}")
+
+ SET(jdi_include_dirs "")
+ FOREACH(dependency ${${CURRENT_MODULE_NAME}_DEPENDENCIES})
+ IF(EXISTS "${PROJECT_SOURCE_DIR}/modules/${dependency}/include")
+ SET(jdi_include_dirs ${jdi_include_dirs} "${PROJECT_SOURCE_DIR}/modules/${dependency}/include")
+ ELSEIF(DEFINED ${dependency}_INCLUDE_DIR)
+ SET(jdi_include_dirs ${jdi_include_dirs} "${${dependency}_INCLUDE_DIR}")
+ SET(GLOBAL_EXTERN_INCLUDE_DIRS ${GLOBAL_EXTERN_INCLUDE_DIRS} "${${dependency}_INCLUDE_DIR}" CACHE INTERNAL "collect extern include dirs")
+ ELSE()
+ MESSAGE(FATAL_ERROR "Added unknown dependency ${dependency}")
+ ENDIF()
+ ENDFOREACH()
+
+
+
+ IF(${${CURRENT_MODULE_NAME}_HAS_SOURCE_FILES})
+
+ #FOREACH(dependency ${${CURRENT_MODULE_NAME}_DEPENDENCIES})
+ # SET(jd_dependency_linker_dirs ${jd_dependency_linker_dirs} "${${dependency}_LIBRARIES_DIR}")
+ # ENDFOREACH()
+
+# IF(NOT "${jd_dependency_linker_dirs}" STREQUAL "")
+# LIST(REMOVE_DUPLICATES jd_dependency_linker_dirs)
+# ENDIF()
+ LINK_DIRECTORIES(${GLOBAL_LIB_DIRECTORIES})
+
+
+
+
+ IF(${CURRENT_MODULE_TYPE} STREQUAL "STATIC")
+ SET(UTILS_MODULES_STATIC ${UTILS_MODULES_STATIC} ${CURRENT_MODULE_NAME} CACHE INTERNAL "")
+ ADD_LIBRARY(${CURRENT_MODULE_NAME}
+ STATIC
+ ${${CURRENT_UPPER_MODULE_NAME}_MODULE_SOURCE_FILES}
+ )
+ SET(GLOBAL_LIBRARIES ${GLOBAL_LIBRARIES} ${CURRENT_MODULE_NAME} CACHE INTERNAL "collect all linkable libraries")
+ ELSEIF(${CURRENT_MODULE_TYPE} STREQUAL "DYNAMIC")
+ SET(UTILS_MODULES_DYNAMIC ${UTILS_MODULES_DYNAMIC} ${CURRENT_MODULE_NAME} CACHE INTERNAL "")
+ ADD_LIBRARY(${CURRENT_MODULE_NAME}
+ SHARED
+ ${${CURRENT_UPPER_MODULE_NAME}_MODULE_SOURCE_FILES}
+ )
+ ELSEIF(${CURRENT_MODULE_TYPE} STREQUAL "EXE")
+ SET(UTILS_MODULES_EXE ${UTILS_MODULES_EXE} ${CURRENT_MODULE_NAME} CACHE INTERNAL "")
+ ADD_EXECUTABLE(${CURRENT_MODULE_NAME}
+ ${${CURRENT_UPPER_MODULE_NAME}_MODULE_SOURCE_FILES}
+ )
+ ENDIF()
+
+ INTERNAL_ADD_DEBUG_COMPILER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_DEBUG_COMPILER_FLAGS})
+ INTERNAL_ADD_RELEASE_COMPILER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_RELEASE_COMPILER_FLAGS})
+
+ INTERNAL_ADD_DEBUG_LINKER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_DEBUG_LINKER_FLAGS})
+ INTERNAL_ADD_RELEASE_LINKER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_RELEASE_LINKER_FLAGS})
+
+ INTERNAL_ADD_DEBUG_DEFINITIONS_TO_TARGET(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_DEBUG_DEFINITIONS})
+ INTERNAL_ADD_RELEASE_DEFINITIONS_TO_TARGET(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_RELEASE_DEFINITIONS})
+
+ INCLUDE_DIRECTORIES(${jdi_include_dirs})
+
+
+ IF(NOT "${${CURRENT_MODULE_NAME}_DEPENDENCIES}" STREQUAL "")
+ # FOREACH(current_dependency ${${CURRENT_MODULE_NAME}_DEPENDENCIES})
+ # IF((${${current_dependency}_HAS_SOURCE_FILES}) AND NOT( "${${current_dependency}_MODULE_TYPE}" STREQUAL "EXE"))
+ # SET(jd_collected_dependencies ${jd_collected_dependencies} "${current_dependency}")
+ # ELSEIF(DEFINED ${current_dependency}_LIBRARIES)
+ # SET(jd_collected_dependencies ${jd_collected_dependencies} ${current_dependency})
+ # ENDIF()
+ # ENDFOREACH()
+ ADD_DEPENDENCIES(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_DEPENDENCIES})
+ ENDIF()
+
+ IF(NOT "${${CURRENT_MODULE_NAME}_LIBRARIES}" STREQUAL "" AND NOT "${CURRENT_MODULE_TYPE}" STREQUAL "STATIC")
+ TARGET_LINK_LIBRARIES(${CURRENT_MODULE_NAME} ${${CURRENT_MODULE_NAME}_LIBRARIES} ${jd_collected_dependencies})
+ ENDIF()
+
+ SET_TARGET_PROPERTIES(${CURRENT_MODULE_NAME} PROPERTIES LINKER_LANGUAGE CXX)
+ ELSE()
+ ADD_CUSTOM_TARGET(${CURRENT_MODULE_NAME} SOURCES
+ ${${CURRENT_UPPER_MODULE_NAME}_MODULE_SOURCE_FILES}
+ )
+ ENDIF()
+
+ IF(NOT "${${CURRENT_MODULE_NAME}_TEST_FILES}" STREQUAL "")
+ SET(UTILS_MODULES_TESTS ${UTILS_MODULES_TESTS} ${CURRENT_MODULE_NAME}Test CACHE INTERNAL "")
+
+ SET(EXTERNAL_PACKAGE_LINK_DIRECTORIES "")
+ FOREACH(current_dependency ${${CURRENT_MODULE_NAME}_DEPENDENCIES})
+ IF(${${current_dependency}_HAS_SOURCE_FILES})
+ SET(jd_collected_dependencies ${jd_collected_dependencies} ${current_dependency})
+ ENDIF()
+ IF(DEFINED ${current_dependency}_LIBRARIES_DIR)
+ SET(EXTERNAL_PACKAGE_LINK_DIRECTORIES ${EXTERNAL_PACKAGE_LINK_DIRECTORIES} "${${current_dependency}_LIBRARIES_DIR}")
+ ENDIF()
+ ENDFOREACH()
+
+ IF(NOT "${jd_collected_dependencies}" STREQUAL "")
+ list(REMOVE_DUPLICATES jd_collected_dependencies)
+ ENDIF()
+
+ IF(${BUILD_UNITTESTS})
+
+ IF(${BUILD_GLOBAL_TEST_EXECUTABLE})
+ #ADD_LIBRARY(${CURRENT_MODULE_NAME}Test STATIC ${${CURRENT_MODULE_NAME}_TEST_FILES})
+ SET(GLOBAL_TEST_INCLUDE_DIRECTORIES ${GLOBAL_TEST_INCLUDE_DIRECTORIES} ${jdi_include_dirs} ${asl_intern_include_path} CACHE INTERNAL "collect test include directories")
+ SET(GLOBAL_TEST_LIBS ${GLOBAL_TEST_LIBS} ${jd_collected_dependencies} CACHE INTERNAL "collect test libs")
+ IF(${${CURRENT_MODULE_NAME}_HAS_SOURCE_FILES})
+ SET(GLOBAL_TEST_LIBS ${GLOBAL_TEST_LIBS} ${CURRENT_MODULE_NAME} CACHE INTERNAL "collect test libs")
+ ENDIF()
+
+ SET(GLOBAL_TEST_SOURCE ${GLOBAL_TEST_SOURCE} ${${CURRENT_MODULE_NAME}_TEST_FILES} CACHE INTERNAL "collect test source")
+ SET(GLOBAL_TEST_LINKER_DIRECTORIES ${GLOBAL_TEST_LINKER_DIRECTORIES} "${EXTERNAL_PACKAGE_LINK_DIRECTORIES}" CACHE INTERNAL "collect test linker directories")
+
+ SET(GLOBAL_TEST_DEBUG_COMPILER_FLAGS ${GLOBAL_TEST_DEBUG_COMPILER_FLAGS} ${${CURRENT_MODULE_NAME}_DEBUG_COMPILER_FLAGS} CACHE INTERNAL "collect test compiler flags")
+ SET(GLOBAL_TEST_RELEASE_COMPILER_FLAGS ${GLOBAL_TEST_RELEASE_COMPILER_FLAGS} ${${CURRENT_MODULE_NAME}_RELEASE_COMPILER_FLAGS} CACHE INTERNAL "collect test compiler flags")
+
+ SET(GLOBAL_TEST_DEBUG_LINKER_FLAGS ${GLOBAL_TEST_DEBUG_LINKER_FLAGS} ${${CURRENT_MODULE_NAME}_DEBUG_LINKER_FLAGS} CACHE INTERNAL "collect test linker flags")
+ SET(GLOBAL_TEST_RELEASE_LINKER_FLAGS ${GLOBAL_TEST_RELEASE_LINKER_FLAGS} ${${CURRENT_MODULE_NAME}_RELEASE_LINKER_FLAGS} CACHE INTERNAL "collect test linker flags")
+
+ SET(GLOBAL_TEST_DEBUG_DEFINITIONS ${GLOBAL_TEST_DEBUG_DEFINITIONS} ${${CURRENT_MODULE_NAME}_DEBUG_DEFINITIONS} CACHE INTERNAL "collect test definitions")
+ SET(GLOBAL_TEST_RELEASE_DEFINITIONS ${GLOBAL_TEST_RELEASE_DEFINITIONS} ${${CURRENT_MODULE_NAME}_RELEASE_DEFINITIONS} CACHE INTERNAL "collect test definitions")
+
+ ELSE()
+
+ IF(${${CURRENT_MODULE_NAME}_HAS_SOURCE_FILES})
+ SET(jd_collected_dependencies ${jd_collected_dependencies} ${CURRENT_MODULE_NAME})
+ ENDIF()
+
+ INTERNAL_GET_TEST_PATH(jd_test_path)
+ SET(${CURRENT_MODULE_NAME}_TEST_MAIN "")
+ IF(EXISTS "${jd_test_path}/main.cpp")
+ SET(${CURRENT_MODULE_NAME}_TEST_MAIN "${jd_test_path}/main.cpp")
+ ELSE()
+ SET(jd_collected_dependencies "${jd_collected_dependencies}" gtest_main gmock_main)
+ ENDIF()
+
+ LINK_DIRECTORIES(${GoogleTest_LIBRARIES_DIR} ${GoogleMock_LIBRARIES_DIR} ${EXTERNAL_PACKAGE_LINK_DIRECTORIES})
+ ADD_EXECUTABLE(${CURRENT_MODULE_NAME}Test ${${CURRENT_MODULE_NAME}_TEST_FILES} ${${CURRENT_MODULE_NAME}_TEST_MAIN})
+
+ INTERNAL_ADD_DEBUG_COMPILER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME}Test ${${CURRENT_MODULE_NAME}_DEBUG_COMPILER_FLAGS})
+ INTERNAL_ADD_RELEASE_COMPILER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME}Test ${${CURRENT_MODULE_NAME}_RELEASE_COMPILER_FLAGS})
+
+ INTERNAL_ADD_DEBUG_LINKER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME}Test ${${CURRENT_MODULE_NAME}_DEBUG_LINKER_FLAGS})
+ INTERNAL_ADD_RELEASE_LINKER_FLAGS_TO_TARGET(${CURRENT_MODULE_NAME}Test ${${CURRENT_MODULE_NAME}_RELEASE_LINKER_FLAGS})
+
+ INTERNAL_ADD_DEBUG_DEFINITIONS_TO_TARGET(${CURRENT_MODULE_NAME}Test ${${CURRENT_MODULE_NAME}_DEBUG_DEFINITIONS})
+ INTERNAL_ADD_RELEASE_DEFINITIONS_TO_TARGET(${CURRENT_MODULE_NAME}Test ${${CURRENT_MODULE_NAME}_RELEASE_DEFINITIONS})
+
+ INCLUDE_DIRECTORIES(${GoogleTest_INCLUDE_DIR} ${GoogleMock_INCLUDE_DIR} ${jdi_include_dirs})
+ MESSAGE(STATUS "${CURRENT_MODULE_NAME} contains unit tests, building ${CURRENT_MODULE_NAME}Test")
+
+ INTERNAL_GROUP_LINK(jd_collected_dependencies ${jd_collected_dependencies})
+
+ TARGET_LINK_LIBRARIES(${CURRENT_MODULE_NAME}Test ${GoogleMock_LIBRARIES} ${GoogleTest_LIBRARIES} ${jd_collected_dependencies})
+ ADD_DEPENDENCIES(${CURRENT_MODULE_NAME}Test GoogleMock ${CURRENT_MODULE_NAME})
+
+ ENDIF()
+
+ ENDIF()
+
+ ENDIF()
+
+ # copy header files
+
+ IF(EXISTS "${${CURRENT_MODULE_NAME}_DIR}/include/${CURRENT_MODULE_NAME}")
+ INSTALL(DIRECTORY ${${CURRENT_MODULE_NAME}_DIR}/include/${CURRENT_MODULE_NAME} DESTINATION "${CMAKE_HEADER_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}" PATTERN ".svn" EXCLUDE)
+ ENDIF()
+
+ # copy resource files
+
+ FILE(GLOB_RECURSE jdi_ressource_files "${${CURRENT_MODULE_NAME}_DIR}/res/*.*")
+ FILE(GLOB_RECURSE jdi_exclude_files "${${CURRENT_MODULE_NAME}_DIR}/res/.svn/*")
+ IF(NOT "${jdi_exclude_files}" STREQUAL "")
+ LIST(REMOVE_ITEM jdi_ressource_files ${jdi_exclude_files})
+ ENDIF()
+ INSTALL(FILES ${jdi_ressource_files} DESTINATION "${CMAKE_RESOURCE_OUTPUT_DIRECTORY}/${CURRENT_MODULE_NAME}")
+
+ # copy doc files
+
+ FILE(GLOB_RECURSE jdi_doc_files "${${CURRENT_MODULE_NAME}_DIR}/doc/*.*")
+ FILE(GLOB_RECURSE jdi_exclude_files "${${CURRENT_MODULE_NAME}_DIR}/doc/.svn/*")
+ IF(NOT "${jdi_exclude_files}" STREQUAL "")
+ LIST(REMOVE_ITEM jdi_doc_files ${jdi_exclude_files})
+ ENDIF()
+ INSTALL(FILES ${jdi_doc_files} DESTINATION "${CMAKE_DOC_OUTPUT_DIRECTORY}/${CURRENT_MODULE_NAME}")
+
+ IF(NOT "${${CURRENT_MODULE_NAME}_INSTALL_FILES}" STREQUAL "")
+ INSTALL(FILES ${${CURRENT_MODULE_NAME}_INSTALL_FILES} DESTINATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/\${BUILD_TYPE}")
+ ENDIF()
+
+ ENDIF()
+ENDMACRO(INTERNAL_JUST_DOIT)
+
+#MACRO(INTERNAL_ADD_COMPILER_FLAGS_TO_TARGET acf_target acf_flags)
+# SET_TARGET_PROPERTIES(${acf_target} PROPERTIES COMPILE_FLAGS "${acf_flags}" )
+#ENDMACRO(INTERNAL_ADD_COMPILER_FLAGS_TO_TARGET)
+
+#MACRO(INTERNAL_ADD_LINKER_FLAGS_TO_TARGET alf_target alf_flags)
+# SET_TARGET_PROPERTIES(${alf_target} PROPERTIES LINK_FLAGS "${alf_flags}" )
+#ENDMACRO(INTERNAL_ADD_LINKER_FLAGS_TO_TARGET)
+
+#MACRO(INTERNAL_ADD_DEFINITIONS_TO_TARGET adt_target adt_definitions)
+# SET_TARGET_PROPERTIES(${adt_target} PROPERTIES COMPILE_DEFINITIONS "${adt_definitions}" )
+#ENDMACRO(INTERNAL_ADD_DEFINITIONS_TO_TARGET)
+
+MACRO(INTERNAL_ADD_DEBUG_COMPILER_FLAGS_TO_TARGET acf_target)
+ INTERNAL_LIST_TO_STRING("${ARGN}" acf_flags)
+ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${acf_flags}")
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${acf_flags}")
+ENDMACRO(INTERNAL_ADD_DEBUG_COMPILER_FLAGS_TO_TARGET)
+
+MACRO(INTERNAL_ADD_DEBUG_LINKER_FLAGS_TO_TARGET alf_target)
+ SET_TARGET_PROPERTIES(${alf_target} PROPERTIES LINK_FLAGS_DEBUG "${ARGN}" )
+ENDMACRO(INTERNAL_ADD_DEBUG_LINKER_FLAGS_TO_TARGET)
+
+MACRO(INTERNAL_ADD_DEBUG_DEFINITIONS_TO_TARGET adt_target )
+ SET_TARGET_PROPERTIES(${adt_target} PROPERTIES COMPILE_DEFINITIONS_DEBUG "${ARGN}" )
+ENDMACRO(INTERNAL_ADD_DEBUG_DEFINITIONS_TO_TARGET)
+
+MACRO(INTERNAL_ADD_RELEASE_COMPILER_FLAGS_TO_TARGET acf_target)
+ INTERNAL_LIST_TO_STRING("${ARGN}" acf_flags)
+ SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${acf_flags}")
+ SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${acf_flags}")
+ENDMACRO(INTERNAL_ADD_RELEASE_COMPILER_FLAGS_TO_TARGET)
+
+MACRO(INTERNAL_ADD_RELEASE_LINKER_FLAGS_TO_TARGET alf_target )
+ SET_TARGET_PROPERTIES(${alf_target} PROPERTIES LINK_FLAGS_RELEASE "${ARGN}" )
+ENDMACRO(INTERNAL_ADD_RELEASE_LINKER_FLAGS_TO_TARGET)
+
+MACRO(INTERNAL_ADD_RELEASE_DEFINITIONS_TO_TARGET adt_target )
+ SET_TARGET_PROPERTIES(${adt_target} PROPERTIES COMPILE_DEFINITIONS_RELEASE "${ARGN}" )
+ENDMACRO(INTERNAL_ADD_RELEASE_DEFINITIONS_TO_TARGET)
+
+
+MACRO(INTERNAL_REPORT_MODULE)
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "TYPE MODULES" RM)
+ MESSAGE(STATUS)
+ MESSAGE("Building ${RM_TYPE} modules:")
+ MESSAGE(STATUS)
+ FOREACH(r_module ${RM_MODULES})
+ MESSAGE(STATUS "${r_module}")
+ ENDFOREACH()
+ MESSAGE(STATUS)
+ENDMACRO(INTERNAL_REPORT_MODULE)
+
+
+MACRO(INTERNAL_REPORT)
+ MESSAGE(STATUS)
+ MESSAGE(STATUS "-------------------------------------------------------------------")
+ MESSAGE(STATUS "------------------- Configuration report begin --------------------")
+ MESSAGE(STATUS "-------------------------------------------------------------------")
+
+ IF(NOT "${UTILS_MODULES_STATIC}" STREQUAL "")
+ INTERNAL_REPORT_MODULE(TYPE static MODULES ${UTILS_MODULES_STATIC})
+ MESSAGE(STATUS "-------------------------------------------------------------------")
+ ENDIF()
+
+ IF(NOT "${UTILS_MODULES_DYNAMIC}" STREQUAL "")
+ INTERNAL_REPORT_MODULE(TYPE dynamic MODULES ${UTILS_MODULES_DYNAMIC})
+ MESSAGE(STATUS "-------------------------------------------------------------------")
+ ENDIF()
+
+ IF(NOT "${UTILS_MODULES_EXE}" STREQUAL "")
+ INTERNAL_REPORT_MODULE(TYPE executables MODULES ${UTILS_MODULES_EXE})
+ MESSAGE(STATUS "-------------------------------------------------------------------")
+ ENDIF()
+
+ IF(NOT "${UTILS_MODULES_TESTS}" STREQUAL "")
+ INTERNAL_REPORT_MODULE(TYPE tests MODULES ${UTILS_MODULES_TESTS})
+ MESSAGE(STATUS "-------------------------------------------------------------------")
+ ENDIF()
+ MESSAGE(STATUS "------------------- Configuration report end ----------------------")
+ MESSAGE(STATUS "-------------------------------------------------------------------")
+ MESSAGE(STATUS)
+ENDMACRO(INTERNAL_REPORT)
+
+
+MACRO(INTERNAL_REMOVE_OPTIONAL_FILES prefix)
+ UNSET(${prefix}_ENABLE CACHE)
+ENDMACRO(INTERNAL_REMOVE_OPTIONAL_FILES)
+
+
+MACRO(INTERNAL_ADD_MODULE_INTERNAL ami_module_name ami_type)
+ MESSAGE("---------------------------------------------------------------------------")
+ MESSAGE(STATUS "Configuring build for ${ami_module_name} (${ami_type})")
+ STRING(TOUPPER ${ami_type} CURRENT_MODULE_TYPE)
+ SET(CURRENT_MODULE_NAME ${ami_module_name})
+ STRING(TOUPPER ${CURRENT_MODULE_NAME} CURRENT_UPPER_MODULE_NAME)
+ SET(${CURRENT_MODULE_NAME}_HAS_SOURCE_FILES 0 CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_MODULE_TYPE "${CURRENT_MODULE_TYPE}" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_BUILD_ENABLED 1)
+ SET(${CURRENT_MODULE_NAME}_COMPILE_FLAGS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_DEBUG_COMPILER_FLAGS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_RELEASE_COMPILER_FLAGS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_LINKER_FLAGS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_DEBUG_LINKER_FLAGS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_RELEASE_LINKER_FLAGS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_DEBUG_DEFINITIONS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_RELEASE_DEFINITIONS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_DEPENDENCIES "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_LIBRARIES "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_INSTALL_FILES "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_PACKAGE_LIBS "" CACHE INTERNAL "")
+ SET(${CURRENT_MODULE_NAME}_FOUND 1 CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_MODULE_INTERNAL)
+
+
+MACRO(INTERNAL_ADD_INSTALL_FILE iaif_filename)
+ SET(${CURRENT_MODULE_NAME}_INSTALL_FILES ${${CURRENT_MODULE_NAME}_INSTALL_FILES} "${iaif_filename}" CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_INSTALL_FILE)
+
+MACRO(INTERNAL_ADD_MODULE ad_module_name ad_type)
+ INTERNAL_ADD_MODULE_INTERNAL(${ad_module_name} ${ad_type})
+ SET(WITH_${CURRENT_UPPER_MODULE_NAME} 1 CACHE INTERNAL "Use module ${CURRENT_UPPER_MODULE_NAME}")
+ENDMACRO(INTERNAL_ADD_MODULE)
+
+
+MACRO(INTERNAL_ADD_OPTIONAL_MODULE aom_module_name aom_type)
+ INTERNAL_ADD_MODULE_INTERNAL(${aom_module_name} ${aom_type})
+ SET(WITH_${CURRENT_UPPER_MODULE_NAME} 1 CACHE BOOL "Use module ${CURRENT_UPPER_MODULE_NAME}")
+ENDMACRO(INTERNAL_ADD_OPTIONAL_MODULE)
+
+
+MACRO(INTERNAL_ADD_COMPILER_FLAG aicf_compiler_flag)
+ INTERNAL_ADD_DEBUG_COMPILER_FLAG(${aicf_compiler_flag})
+ INTERNAL_ADD_RELEASE_COMPILER_FLAG(${aicf_compiler_flag})
+ENDMACRO(INTERNAL_ADD_COMPILER_FLAG)
+
+MACRO(INTERNAL_ADD_DEBUG_COMPILER_FLAG aidcf_compiler_flag)
+ SET(${CURRENT_MODULE_NAME}_DEBUG_COMPILER_FLAGS ${${CURRENT_MODULE_NAME}_DEBUG_COMPILER_FLAGS} ${aidcf_compiler_flag} CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_DEBUG_COMPILER_FLAG)
+
+MACRO(INTERNAL_ADD_RELEASE_COMPILER_FLAG iarcf_compiler_flag)
+ SET(${CURRENT_MODULE_NAME}_RELEASE_COMPILER_FLAGS ${${CURRENT_MODULE_NAME}_RELEASE_COMPILER_FLAGS} ${iarcf_compiler_flag} CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_RELEASE_COMPILER_FLAG)
+
+
+
+MACRO(INTERNAL_ADD_DEFINITION iad_definition)
+ INTERNAL_ADD_RELEASE_DEFINITION("${iad_definition}")
+ INTERNAL_ADD_DEBUG_DEFINITION("${iad_definition}")
+ENDMACRO(INTERNAL_ADD_DEFINITION)
+
+MACRO(INTERNAL_ADD_DEBUG_DEFINITION iadd_definition)
+ SET(${CURRENT_MODULE_NAME}_DEBUG_DEFINITIONS "${${CURRENT_MODULE_NAME}_DEBUG_DEFINITIONS}" ${iadd_definition} CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_DEBUG_DEFINITION)
+
+MACRO(INTERNAL_ADD_RELEASE_DEFINITION iard_definition)
+ SET(${CURRENT_MODULE_NAME}_RELEASE_DEFINITIONS "${${CURRENT_MODULE_NAME}_RELEASE_DEFINITIONS}" ${iard_definition} CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_RELEASE_DEFINITION)
+
+#MACRO(INTERNAL_ADD_DEBUG_COMPILER_FLAG adcf_compiler_flag)
+# SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${adcf_compiler_flag}")
+# SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${adcf_compiler_flag}")
+#ENDMACRO(INTERNAL_ADD_DEBUG_COMPILER_FLAG)
+
+
+#MACRO(INTERNAL_ADD_RELEASE_COMPILER_FLAG arcf_compiler_flag)
+#SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${arcf_compiler_flag}")
+# SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${arcf_compiler_flag}")
+#ENDMACRO(INTERNAL_ADD_RELEASE_COMPILER_FLAG)
+
+
+MACRO(INTERNAL_ADD_LINKER_FLAG ialf_linker_flag)
+ INTERNAL_ADD_DEBUG_LINKER_FLAG(${ialf_linker_flag})
+ INTERNAL_ADD_RELEASE_LINKER_FLAG(${ialf_linker_flag})
+ #SET(${CURRENT_MODULE_NAME}_LINKER_FLAGS ${${CURRENT_MODULE_NAME}_LINKER_FLAGS} ${ad_linker_flag} CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_LINKER_FLAG)
+
+MACRO(INTERNAL_ADD_DEBUG_LINKER_FLAG aadl_linker_flag)
+ SET(${CURRENT_MODULE_NAME}_DEBUG_LINKER_FLAGS "${${CURRENT_MODULE_NAME}_DEBUG_LINKER_FLAGS} ${aadl_linker_flag}" CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_DEBUG_LINKER_FLAG)
+
+MACRO(INTERNAL_ADD_RELEASE_LINKER_FLAG iarl_linker_flag)
+ SET(${CURRENT_MODULE_NAME}_RELEASE_LINKER_FLAGS "${${CURRENT_MODULE_NAME}_RELEASE_LINKER_FLAGS} ${iarl_linker_flag}" CACHE INTERNAL "")
+ENDMACRO(INTERNAL_ADD_RELEASE_LINKER_FLAG)
+
+
+
+MACRO(INTERNAL_FINALIZE)
+ INTERNAL_BUILD_UNIT_TESTS()
+ list(REMOVE_DUPLICATES GLOBAL_EXTERN_INCLUDE_DIRS)
+
+ #FILE(WRITE "${CMAKE_CMAKE_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}.cmake" "SET(${CMAKE_PROJECT_NAME}_INCLUDE_DIR \"${GLOBAL_EXTERN_INCLUDE_DIRS} ${CMAKE_INSTALL_PREFIX}/${CMAKE_HEADER_OUTPUT_DIRECTORY}/${CMAKE_PROJECT_NAME}\")")
+
+ REPORT()
+ENDMACRO(INTERNAL_FINALIZE)
+
+MACRO(INTERNAL_BUILD_UNIT_TESTS)
+ IF(${BUILD_GLOBAL_TEST_EXECUTABLE} AND NOT "${GLOBAL_TEST_SOURCE}" STREQUAL "")
+ #SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/deliverable/bin")
+ #ADD_DEBUG_COMPILER_FLAG("/MTd")
+ #ADD_RELEASE_COMPILER_FLAG("/MT")
+
+ LINK_DIRECTORIES(${GoogleTest_LIBRARIES_DIR} ${GoogleMock_LIBRARIES_DIR} ${GLOBAL_TEST_LINKER_DIRECTORIES})
+ message("global include ${GLOBAL_TEST_INCLUDE_DIRECTORIES}")
+ INCLUDE_DIRECTORIES(${GoogleTest_INCLUDE_DIR} ${GoogleMock_INCLUDE_DIR} ${GLOBAL_TEST_INCLUDE_DIRECTORIES})
+ MESSAGE(STATUS "Global unit test executable enabled, building Test")
+ ADD_EXECUTABLE(Test ${GLOBAL_TEST_SOURCE})
+
+ INTERNAL_ADD_DEBUG_COMPILER_FLAGS_TO_TARGET(Test ${GLOBAL_TEST_DEBUG_COMPILER_FLAGS})
+ INTERNAL_ADD_RELEASE_COMPILER_FLAGS_TO_TARGET(Test ${GLOBAL_TEST_RELEASE_COMPILER_FLAGS})
+
+ INTERNAL_ADD_DEBUG_LINKER_FLAGS_TO_TARGET(Test ${GLOBAL_TEST_DEBUG_LINKER_FLAGS})
+ INTERNAL_ADD_RELEASE_LINKER_FLAGS_TO_TARGET(Test ${GLOBAL_TEST_RELEASE_LINKER_FLAGS})
+
+ INTERNAL_ADD_DEBUG_DEFINITIONS_TO_TARGET(Test ${GLOBAL_TEST_DEBUG_DEFINITIONS})
+ INTERNAL_ADD_RELEASE_DEFINITIONS_TO_TARGET(Test ${GLOBAL_TEST_RELEASE_DEFINITIONS})
+
+ INTERNAL_GROUP_LINK(GLOBAL_TEST_LIBS ${GLOBAL_TEST_LIBS})
+
+ TARGET_LINK_LIBRARIES(Test ${GLOBAL_TEST_LIBS} ${GoogleMock_LIBRARIES} ${GoogleTest_LIBRARIES} gtest_main gmock_main)
+ SET_TARGET_PROPERTIES(Test PROPERTIES LINKER_LANGUAGE CXX)
+ ENDIF()
+ENDMACRO(INTERNAL_BUILD_UNIT_TESTS)
+
+
+MACRO(INTERNAL_REQUIRED_PACKAGE pkg_name)
+ MESSAGE(STATUS "${CURRENT_MODULE_NAME} requires package ${pkg_name}")
+
+ SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
+
+ IF(NOT "${pkg_name}_FOUND" AND EXISTS "${CMAKE_MODULE_PATH}/Find${pkg_name}.cmake")
+
+ find_package("${pkg_name}" REQUIRED)
+
+ SET( ${pkg_name}}_FOUND "NO" )
+ IF(DEFINED ${pkg_name}_INCLUDE_DIRS)
+ SET( ${pkg_name}_FOUND "YES" )
+
+ MARK_AS_ADVANCED(
+ ${pkg_name}_INCLUDE_DIRS
+ ${pkg_name}_LIBRARIES
+ )
+
+ ENDIF()
+ ENDIF()
+
+ #INTERNAL_ADD_DEPENDENCY(${pkg_name})
+
+ IF("${pkg_name}_FOUND")
+
+ INCLUDE_DIRECTORIES(${${pkg_name}_INCLUDE_DIRS})
+ SET(${CURRENT_MODULE_NAME}_PACKAGE_LIBS ${${CURRENT_MODULE_NAME}_PACKAGE_LIBS} ${${pkg_name}_LIBRARIES})
+
+ # INTERNAL_ADD_DEFINITION("${${pkg_name}_DEPENDENT_DEFINITIONS}")
+
+ ELSE()
+ MESSAGE(STATUS "WARNING: Required package '${pkg_name}' was not found.")
+ MESSAGE(STATUS "WARNING: Build of '${CURRENT_MODULE_NAME}' was disabled.")
+ MESSAGE(STATUS "WARNING: Install package '${pkg_name}' to enable build of '${CURRENT_MODULE_NAME}'.")
+ SET(${CURRENT_MODULE_NAME}_BUILD_ENABLED 0)
+ ENDIF()
+
+ENDMACRO(INTERNAL_REQUIRED_PACKAGE)
+
+
+MACRO(INTERNAL_OPTIONAL_PACKAGE pkg_name)
+ MESSAGE(STATUS "${CURRENT_MODULE_NAME} optionally requires package ${pkg_name}")
+
+ SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+
+ find_package(${pkg_name} REQUIRED)
+ IF(${pkg_name}_FOUND)
+ INCLUDE_DIRECTORIES(${${pkg_name}_INCLUDE_DIR})
+ SET(${CURRENT_MODULE_NAME}_PACKAGE_LIBS ${${CURRENT_MODULE_NAME}_PACKAGE_LIBS} ${${pkg_name}_LIBRARIES} CACHE INTERNAL "")
+ ELSE(${pkg_name}_FOUND)
+ MESSAGE(STATUS "INFO: Optional package '${pkg_name}' was not found.")
+ ENDIF(${pkg_name}_FOUND)
+ENDMACRO(INTERNAL_OPTIONAL_PACKAGE)
+
+
+MACRO(INTERNAL_INSTALL_HEADER_FILES ihf_header_file_path)
+ INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/modules/${CURRENT_MODULE_NAME}/include/${CURRENT_MODULE_NAME}/
+ DESTINATION ${ihf_header_file_path}
+ FILES_MATCHING
+ PATTERN ".*" EXCLUDE)
+ENDMACRO(INTERNAL_INSTALL_HEADER_FILES)
+
+
+MACRO(INTERNAL_INSTALL_MODULE)
+
+ IF(${WITH_${CURRENT_UPPER_MODULE_NAME}} AND ${${CURRENT_MODULE_NAME}_BUILD_ENABLED})
+
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "HEADERS EXECUTABLE LIBRARY" INSTALL_PATH)
+
+ IF(${INSTALL_PATH_HEADERS_FOUND})
+ MESSAGE(STATUS "Install header files to ${INSTALL_PATH_HEADERS}")
+ INTERNAL_INSTALL_HEADER_FILES(${INSTALL_PATH_HEADERS})
+ ENDIF(${INSTALL_PATH_HEADERS_FOUND})
+
+ IF(${INSTALL_PATH_EXECUTABLE_FOUND})
+ MESSAGE(STATUS "Install executable files to ${INSTALL_PATH_EXECUTABLE}")
+ SET(INSTALL_COMMAND RUNTIME DESTINATION ${INSTALL_PATH_EXECUTABLE})
+ ENDIF(${INSTALL_PATH_EXECUTABLE_FOUND})
+
+ IF(${INSTALL_PATH_LIBRARY_FOUND})
+ MESSAGE(STATUS "Install library files to ${INSTALL_PATH_LIBRARY}")
+ SET(INSTALL_COMMAND ${INSTALL_COMMAND} LIBRARY DESTINATION ${INSTALL_PATH_LIBRARY})
+ SET(INSTALL_COMMAND ${INSTALL_COMMAND} ARCHIVE DESTINATION ${INSTALL_PATH_LIBRARY})
+ ENDIF(${INSTALL_PATH_LIBRARY_FOUND})
+
+ IF(NOT "${INSTALL_COMMAND}" STREQUAL "")
+ INSTALL(TARGETS ${CURRENT_MODULE_NAME} LIBRARY DESTINATION ${INSTALL_COMMAND})
+ ENDIF(NOT "${INSTALL_COMMAND}" STREQUAL "")
+
+ ENDIF()
+
+ENDMACRO(INTERNAL_INSTALL_MODULE)
+
+
+MACRO(INTERNAL_INSTALL_RESOURCES)
+ IF(${WITH_${CURRENT_UPPER_MODULE_NAME}} AND ${${CURRENT_MODULE_NAME}_BUILD_ENABLED})
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "FILES DESTINATION" RES)
+ MESSAGE(STATUS "install resource files to ${RES_DESTINATION}")
+ INSTALL(FILES ${RES_FILES} DESTINATION ${RES_DESTINATION})
+ ENDIF()
+ENDMACRO(INTERNAL_INSTALL_RESOURCES)
+
+MACRO(INTERNAL_LIST_TO_STRING ilts_input ilts_output)
+ STRING(REGEX REPLACE ";" " " ${ilts_output} "${ilts_input}")
+ENDMACRO(INTERNAL_LIST_TO_STRING)
+
+MACRO(INTERNAL_ADD_EXTERNAL_LIBRARY ial_name)
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "INCLUDE_DIRS LIBRARY_DIRS LIBNAMES DEPENDENT_DEFINITIONS DEPENDENT_DEBUG_DEFINITIONS DEPENDENT_RELEASE_DEFINITIONS" IAL)
+
+ SET(${ial_name}_INCLUDE_DIR "")
+
+ FOREACH(ial_include_dir ${IAL_INCLUDE_DIRS})
+ SET(${ial_name}_INCLUDE_DIR ${${ial_name}_INCLUDE_DIR} "${ial_include_dir}")
+ ENDFOREACH()
+
+ SET(${ial_name}_LIBRARIES_DIR "")
+ FOREACH(ial_library_dir ${IAL_LIBRARY_DIRS})
+ SET(${ial_name}_LIBRARIES_DIR ${${ial_name}_LIBRARIES_DIR} "${ial_library_dir}")
+ ENDFOREACH()
+
+ SEPARATE_ARGUMENTS(IAL_LIBNAMES)
+
+ SET(${ial_name}_LIBRARIES ${IAL_LIBNAMES})
+ SET(${ial_name}_DEPENDENT_DEBUG_DEFINITIONS "${IAL_DEPENDENT_DEFINITIONS}" "${IAL_DEPENDENT_DEBUG_DEFINITIONS}")
+ SET(${ial_name}_DEPENDENT_RELEASE_DEFINITIONS "${IAL_DEPENDENT_DEFINITIONS}" "${IAL_DEPENDENT_RELEASE_DEFINITIONS}")
+ SET(${ial_name}_FOUND 1)
+ SET(${ial_name}_INTERNAL 1)
+
+ MARK_AS_ADVANCED(
+ ${ial_name}_INCLUDE_DIR
+ ${ial_name}_LIBRARIES_DIR
+ ${ial_name}_LIBRARIES
+ ${ial_name}_DEPENDENT_DEBUG_DEFINITIONS
+ ${ial_name}_DEPENDENT_RELEASE_DEFINITIONS
+ ${ial_name}_FOUND
+ ${ial_name}_INTERNAL
+ )
+
+ #SET(GLOBAL_INCLUDE_DIRECTORIES ${GLOBAL_INCLUDE_DIRECTORIES} ${${ial_name}_INCLUDE_DIR} CACHE INTERNAL "collect include directories")
+ SET(GLOBAL_LIB_DIRECTORIES ${GLOBAL_LIB_DIRECTORIES} ${${ial_name}_LIBRARIES_DIR} CACHE INTERNAL "collect lib directories")
+ SET(GLOBAL_LIBRARIES ${GLOBAL_LIBRARIES} ${${ial_name}_LIBRARIES} CACHE INTERNAL "collect all linkable libraries")
+
+
+ #message("include dirs ${${ial_name}_INCLUDE_DIR}")
+ #message("library dirs ${${ial_name}_LIBRARIES_DIR}")
+ #message("libraries ${${ial_name}_LIBRARIES}")
+ #message("depandent defs ${${ial_name}_DEPENDENT_DEFINITIONS}")
+
+ENDMACRO(INTERNAL_ADD_EXTERNAL_LIBRARY)
+
+MACRO(INTERNAL_ADD_CMAKE_PROJECT iaap_name)
+
+ INTERNAL_ARGUMENT_SPLITTER("${ARGN}" "LIBNAMES LIBDIRS INCLUDE_DIRS BINARY_INCLUDE_DIRS ABSOLUTE_INCLUDE_DIRS URL CHECKSUM SOURCE_DIR CMAKE_ARGUMENTS DEPENDENT_DEFINITIONS DEPENDENT_DEBUG_DEFINITIONS DEPENDENT_RELEASE_DEFINITIONS INSTALL CONFIG_FILE" IAAP)
+
+ IF(NOT "${IAAP_URL}" STREQUAL "")
+
+ SET(iaap_method DOWNLOAD_DIR "${THIRD_PARTY_DIR}/${iaap_name}"
+ URL "${IAAP_URL}"
+ URL_MD5 "${IAAP_CHECKSUM}")
+
+ ELSEIF(NOT "${IAAP_SOURCE_DIR}" STREQUAL "")
+
+ INTERNAL_LIST_TO_STRING("${IAAP_SOURCE_DIR}" IAAP_CONVERTED_SOURCE_DIR)
+ SET(IAAP_SOURCE_DIR "${IAAP_CONVERTED_SOURCE_DIR}")
+ SET(iaap_method SOURCE_DIR "${IAAP_SOURCE_DIR}"
+ DOWNLOAD_COMMAND "")
+
+ ELSEIF(EXISTS "${THIRD_PARTY_DIR}/${iaap_name}")
+
+ SET(IAAP_SOURCE_DIR "${THIRD_PARTY_DIR}/${iaap_name}")
+ SET(iaap_method SOURCE_DIR "${IAAP_SOURCE_DIR}"
+ DOWNLOAD_COMMAND "")
+
+ ENDIF()
+
+ IF(NOT "${iaap_method}" STREQUAL "")
+
+ SET(BUILD_${iaap_name} 1 CACHE BOOL "Use ${iaap_name}")
+
+ IF(${BUILD_${iaap_name}})
+
+ SET(ilts_cmake_arguments "")
+ FOREACH(ilts_cmake_argument ${IAAP_CMAKE_ARGUMENTS})
+ SET(ilts_cmake_arguments ${ilts_cmake_arguments} -D${ilts_cmake_argument})
+ ENDFOREACH()
+
+ SET(ilts_install_command INSTALL_COMMAND "")
+ IF("${IAAP_INSTALL}" EQUAL 1)
+ SET(ilts_install_command "")
+ ENDIF()
+
+ ExternalProject_Add(
+ ${iaap_name}
+ PREFIX ${CMAKE_BINARY_DIR}/${iaap_name}
+ ${iaap_method}
+ UPDATE_COMMAND ""
+ CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE:PATH=${CMAKE_TOOLCHAIN_FILE}
+ -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
+ -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
+ -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
+ -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
+ -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}
+ -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DBUILD_UNITTESTS:BOOLEAN=${BUILD_UNITTESTS}
+ -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${PROJECT_SOURCE_DIR}/deliverable/${iaap_name}/lib/${TARGET_OS}_${TARGET_ARCH}
+ -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${PROJECT_SOURCE_DIR}/deliverable/${iaap_name}/lib/${TARGET_OS}_${TARGET_ARCH}
+ #-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/deliverable/${iaap_name}/lib/${TARGET_OS}_${TARGET_ARCH}
+ # -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/deliverable/${iaap_name}/lib/${TARGET_OS}_${TARGET_ARCH}
+ # -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/deliverable/${iaap_name}
+ -DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_SOURCE_DIR}/deliverable/${iaap_name}/
+ -DBUILD_GLOBAL_TEST_EXECUTABLE:BOOLEAN=${BUILD_GLOBAL_TEST_EXECUTABLE}
+ ${ilts_cmake_arguments}
+ "${ilts_install_command}"
+ )
+
+# SET(${iaap_name}_DIR "${CMAKE_BINARY_DIR}/${iaap_name}")
+ SET(${iaap_name}_DIR "${IAAP_SOURCE_DIR}")
+
+ SET(iacp_include_dirs "")
+
+ IF(NOT ${IAAP_URL} STREQUAL "")
+
+ foreach(iaap_include_dir ${IAAP_INCLUDE_DIRS})
+ SET(iacp_include_dirs "${iacp_include_dirs}" "${CMAKE_BINARY_DIR}/${iaap_name}/${iaap_include_dir}")
+ endforeach()
+
+ ELSE()
+
+ foreach(iaap_include_dir ${IAAP_INCLUDE_DIRS})
+ SET(iacp_include_dirs "${iacp_include_dirs}" "${PROJECT_SOURCE_DIR}/deliverable/${iaap_name}/include/${iaap_include_dir}")
+ #SET(${iaap_name}_INCLUDE_DIR "${${iaap_name}_INCLUDE_DIR}" "${CMAKE_INSTALL_PREFIX}/include/${iaap_include_dir}")
+ endforeach()
+
+ foreach(iaap_include_dir ${IAAP_BINARY_INCLUDE_DIRS})
+ SET(iacp_include_dirs "${iacp_include_dirs}" "${CMAKE_BINARY_DIR}/${iaap_name}/src/${iaap_name}-build/${iaap_include_dir}")
+ endforeach()
+
+ foreach(iaap_include_dir ${IAAP_ABSOLUTE_INCLUDE_DIRS})
+ SET(iacp_include_dirs "${iacp_include_dirs}" "${iaap_include_dir}")
+ endforeach()
+
+ ENDIF()
+
+
+ INTERNAL_ADD_EXTERNAL_LIBRARY( ${iaap_name}
+ INCLUDE_DIRS "${iacp_include_dirs}"
+ LIBRARY_DIRS "${PROJECT_SOURCE_DIR}/deliverable/${iaap_name}/lib/${TARGET_OS}_${TARGET_ARCH}" ${IAAP_LIBDIRS}
+ LIBNAMES "${IAAP_LIBNAMES}"
+ DEPENDENT_DEFINITIONS "${IAAP_DEPENDENT_DEFINITIONS}"
+ DEPENDENT_DEBUG_DEFINITIONS "${IAAP_DEPENDENT_DEBUG_DEFINITIONS}"
+ DEPENDENT_RELEASE_DEFINITIONS "${IAAP_DEPENDENT_RELEASE_DEFINITIONS}")
+ ENDIF()
+ ENDIF()
+
+
+ENDMACRO(INTERNAL_ADD_CMAKE_PROJECT)
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/plugins.cmake
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/plugins.cmake?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/plugins.cmake (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/internal/plugins.cmake Thu Aug 2 14:40:08 2012
@@ -0,0 +1,70 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+include(ExternalProject)
+
+MESSAGE(---------------------------------------------------------------------------)
+MESSAGE("")
+MESSAGE("Searching for plugins: ")
+MESSAGE("")
+FILE(GLOB_RECURSE ACME_PLUGINS ${ACME_PATH}/plugins/*.cmake)
+FOREACH(plugin ${ACME_PLUGINS})
+ INCLUDE(${plugin})
+ MESSAGE(STATUS "Found acme plugin ${plugin}")
+ENDFOREACH()
+
+FILE(GLOB_RECURSE EXTERN_PLUGINS ${CMAKE_SOURCE_DIR}/cmake/plugins/*.cmake)
+FOREACH(plugin ${EXTERN_PLUGINS})
+ MESSAGE(STATUS "Found internal plugin ${plugin}")
+ GET_FILENAME_COMPONENT(PLUGIN_NAME ${plugin} NAME_WE)
+ STRING(TOUPPER ${PLUGIN_NAME} PLUGIN_NAME)
+ INCLUDE(${plugin})
+ENDFOREACH()
+
+
+#IF(${BUILD_UNITTESTS})
+# include(ExternalProject)
+# ExternalProject_Add(
+# GoogleTest
+# PREFIX ${CMAKE_BINARY_DIR}/GoogleTest
+# DOWNLOAD_DIR ${THIRD_PARTY_DIR}/GoogleTest
+# URL http://googletest.googlecode.com/files/gtest-1.6.0.zip
+# URL_MD5 4577b49f2973c90bf9ba69aa8166b786
+# CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gtest
+# -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gtest
+# -DCMAKE_TOOLCHAIN_FILE:PATH=${CMAKE_TOOLCHAIN_FILE}
+# INSTALL_COMMAND ""
+# )
+# SET(GTEST_DIR "${CMAKE_BINARY_DIR}/GoogleTest/src/GoogleTest")
+# SET(GTEST_INCLUDE_DIR "${GTEST_DIR}/include")
+# SET(GTEST_LIB_DIR "${THIRD_PARTY_DIR}/libs/gtest")
+#
+# ExternalProject_Add(
+# GoogleMock
+# PREFIX ${CMAKE_BINARY_DIR}/GoogleMock
+# DOWNLOAD_DIR ${THIRD_PARTY_DIR}/GoogleMock
+# URL http://googlemock.googlecode.com/files/gmock-1.6.0.zip
+# URL_MD5 f547f47321ca88d3965ca2efdcc2a3c1
+# CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gmock
+# -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${THIRD_PARTY_DIR}/libs/gmock
+# -DCMAKE_TOOLCHAIN_FILE:PATH=${CMAKE_TOOLCHAIN_FILE}
+# INSTALL_COMMAND ""
+# )
+# SET(GMOCK_DIR "${CMAKE_BINARY_DIR}/GoogleMock/src/GoogleMock" )
+# SET(GMOCK_INCLUDE_DIR "${GMOCK_DIR}/include" )
+# SET(GMOCK_LIB_DIR "${THIRD_PARTY_DIR}/libs/gmock")
+#
+#ENDIF(${BUILD_UNITTESTS})
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/plugins/GoogleMock.cmake
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/plugins/GoogleMock.cmake?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/plugins/GoogleMock.cmake (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/plugins/GoogleMock.cmake Thu Aug 2 14:40:08 2012
@@ -0,0 +1,14 @@
+
+IF(NOT ${BUILD_UNITTESTS})
+ UNSET(BUILD_GoogleMock CACHE)
+ELSE()
+ ADD_CMAKE_PROJECT( GoogleMock
+ LIBNAMES gmock gtest
+ INCLUDE_DIRS "src/GoogleMock/include" "src/GoogleMock/gtest/include"
+ URL "http://googlemock.googlecode.com/files/gmock-1.6.0.zip"
+ CHECKSUM "f547f47321ca88d3965ca2efdcc2a3c1"
+ CMAKE_ARGUMENTS "gtest_force_shared_crt:Bool=1"
+ )
+
+ENDIF()
+
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Integrity1002_armv7l_Emerald-P-ES1.toolchain
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Integrity1002_armv7l_Emerald-P-ES1.toolchain?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Integrity1002_armv7l_Emerald-P-ES1.toolchain (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Integrity1002_armv7l_Emerald-P-ES1.toolchain Thu Aug 2 14:40:08 2012
@@ -0,0 +1,63 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+INCLUDE(CMakeForceCompiler)
+
+# this one is important
+SET(CMAKE_SYSTEM_NAME Integrity)
+
+SET(TARGET_OS Integrity)
+SET(TARGET_ARCH ARMV7L)
+SET(TARGET_COMPILER MULTI)
+
+#set(MAKE_OS "Integrity" CACHE STRING "Defines the target operating system." FORCE)
+SET(CGIDEVICE_NAME "Emerald")
+SET(CGIDEVICE_TARGET_BUILD "ON")
+SET(CGISTUDIO_COMPILER "MULTI")
+
+##### setup for Integrity Multi target compiler
+SET(integrity_cflags_shared "-bsp=emerald-p-evb -os_dir=C:/ghs/int1002 -cpu=cortexa9 -Ospeed -DMQ -DCHECKED_BUILD --link_once_templates -w")
+SET(integrity_cflag_optimizer "-O2")
+
+SET(CMAKE_C_FLAGS "${integrity_cflags_shared}" CACHE STRING "C Flags" FORCE)
+SET(CMAKE_CXX_FLAGS "${integrity_cflags_shared}" CACHE STRING "CXX Flags" FORCE)
+
+SET(CMAKE_C_FLAGS_DEBUG "${integrity_cflags_shared} -G -D_DEBUG" CACHE STRING "C Debug Flags" FORCE)
+SET(CMAKE_CXX_FLAGS_DEBUG "${integrity_cflags_shared} -G -D_DEBUG" CACHE STRING "CXX Debug Flags" FORCE)
+
+#### Change Compiler to MULTI
+SET(INTEGRITY_TOOLCHAIN_PATH "C:\\ghs\\multi524" CACHE PATH "Root path to MULTI tool chain.")
+SET(CMAKE_C_COMPILER "${INTEGRITY_TOOLCHAIN_PATH}/ccintarm.exe")
+SET(CMAKE_CXX_COMPILER "${INTEGRITY_TOOLCHAIN_PATH}/cxintarm.exe")
+
+#### Change other tools in toolchain
+SET(CMAKE_AR "${INTEGRITY_TOOLCHAIN_PATH}/ax.exe" CACHE FILEPATH "MULTI AR" FORCE)
+SET(CMAKE_LINKER "${INTEGRITY_TOOLCHAIN_PATH}/elxr.exe" CACHE FILEPATH "MULTI LINKER" FORCE)
+SET(CMAKE_NM "${INTEGRITY_TOOLCHAIN_PATH}/gnm.exe" CACHE FILEPATH "MULTI NM" FORCE)
+SET(CMAKE_STRIP "${INTEGRITY_TOOLCHAIN_PATH}/gstrip.exe" CACHE FILEPATH "MULTI STRIP" FORCE)
+
+# where is the target environment
+SET(CMAKE_FIND_ROOT_PATH "C:\\ghs\\int1002\\")
+
+# search for programs in the build host directories
+#SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+# for libraries and headers in the target directories
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+ADD_DEFINITIONS("-DOS_INTEGRITY")
+ADD_DEFINITIONS("-DARCH_ARMV7L")
+
Copied: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_32.toolchain (from r1368489, incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/toolchain/Linux.toolchain)
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_32.toolchain?p2=incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_32.toolchain&p1=incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/toolchain/Linux.toolchain&r1=1368489&r2=1368491&rev=1368491&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/toolchain/Linux.toolchain (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_32.toolchain Thu Aug 2 14:40:08 2012
@@ -1,30 +1,32 @@
#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to you under the Apache License, Version
-# 2.0 (the "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# See the License for the specific language governing permissions and
+# limitations under the License.
#
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
-SET(TARGET_ARCH Linux)
+SET(TARGET_OS Linux)
+SET(TARGET_ARCH X86_32)
+SET(TARGET_COMPILER GCC)
-SET(CMAKE_C_FLAGS "-m32 -DARCH_LINUX")
-SET(CMAKE_CXX_FLAGS "-m32 -DARCH_LINUX")
-
-SET(CMAKE_C_FLAGS_DEBUG "-ggdb -Wall")
+SET(CMAKE_C_FLAGS_DEBUG "-m32 -ggdb -Wall -D_DEBUG")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
-SET(CMAKE_C_FLAGS_RELEASE "-Wall -O3")
+SET(CMAKE_C_FLAGS_RELEASE "-m32 -Wall -O3 -DNDEBUG")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+
+add_definitions("-DOS_LINUX")
+add_definitions("-DARCH_X86_32")
Copied: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_64.toolchain (from r1368489, incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/toolchain/Linux.toolchain)
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_64.toolchain?p2=incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_64.toolchain&p1=incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/toolchain/Linux.toolchain&r1=1368489&r2=1368491&rev=1368491&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/toolchain/Linux.toolchain (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_X86_64.toolchain Thu Aug 2 14:40:08 2012
@@ -1,30 +1,32 @@
#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to you under the Apache License, Version
-# 2.0 (the "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# See the License for the specific language governing permissions and
+# limitations under the License.
#
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
-SET(TARGET_ARCH Linux)
+SET(TARGET_OS Linux)
+SET(TARGET_ARCH X86_64)
+SET(TARGET_COMPILER GCC)
-SET(CMAKE_C_FLAGS "-m32 -DARCH_LINUX")
-SET(CMAKE_CXX_FLAGS "-m32 -DARCH_LINUX")
-
-SET(CMAKE_C_FLAGS_DEBUG "-ggdb -Wall")
+SET(CMAKE_C_FLAGS_DEBUG "-m64 -ggdb -Wall -D_DEBUG")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
-SET(CMAKE_C_FLAGS_RELEASE "-Wall -O3")
+SET(CMAKE_C_FLAGS_RELEASE "-m64 -Wall -O3 -DNDEBUG")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+
+add_definitions("-DOS_LINUX")
+add_definitions("-DARCH_X86_64")
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_armv7l.toolchain
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_armv7l.toolchain?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_armv7l.toolchain (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/Linux_armv7l.toolchain Thu Aug 2 14:40:08 2012
@@ -0,0 +1,41 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+SET(CMAKE_SYSTEM_NAME Linux)
+SET(CMAKE_SYSTEM_VERSION 1)
+
+SET(TARGET_OS Linux)
+SET(TARGET_ARCH ARMV7L)
+SET(TARGET_COMPILER GCC)
+
+SET(CMAKE_C_COMPILER /opt/pb-a8/cross/armv7a/bin/arm-angstrom-linux-gnueabi-gcc)
+SET(CMAKE_CXX_COMPILER /opt/pb-a8/cross/armv7a/bin/arm-angstrom-linux-gnueabi-g++)
+SET(CMAKE_LINKER /opt/pb-a8/cross/armv7a/bin/arm-angstrom-linux-gnueabi-ld)
+
+SET(CMAKE_C_FLAGS_DEBUG "-ggdb -march=armv7-a -mfpu=neon -mfloat-abi=softfp -D_DEBUG")
+SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
+
+SET(CMAKE_C_FLAGS_RELEASE "-O3 -march=armv7-a -mfpu=neon -mfloat-abi=softfp -DNDEBUG")
+SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+
+SET(CMAKE_FIND_ROOT_PATH /opt/pb-a8/staging/armv7a-angstrom-linux-gnueabi)
+
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+add_definitions("-DOS_LINUX")
+add_definitions("-DARCH_ARMV7L")
Added: incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/QNX_X86.toolchain
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/QNX_X86.toolchain?rev=1368491&view=auto
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/QNX_X86.toolchain (added)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/cmake/acme/toolchain/QNX_X86.toolchain Thu Aug 2 14:40:08 2012
@@ -0,0 +1,100 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version
+# 2.0 (the "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#------------------------------------------------------------------#
+#
+#HOW TO BUILD CAPU FOR QNX:
+#1. set QNX_HOST environment variable to your host's build tools
+#2. set QNX_TARGET environment variable to the qnx target location
+#3. add QNX_HOST/usr/bin to your path
+# Windows: set PATH=%QNX_HOST%\usr\bin;%PATH%
+# Linux: export PATH=$QNX_HOST/usr/bin:$PATH
+#4. execute cmake in build-folder:
+# cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=<path to capu>/cmake/acme/toolchain/QNX_X86.toolchain -DCMAKE_BUILD_TYPE=Debug|Release ..
+#5. make
+#
+#------------------------------------------------------------------#
+
+INCLUDE(CMakeForceCompiler)
+
+SET(CMAKE_SYSTEM_NAME QNX)
+
+SET(TARGET_OS QNX)
+SET(TARGET_ARCH X86_32)
+SET(TARGET_COMPILER GCC)
+
+SET(CMAKE_SYSTEM_PROCESSOR x86)
+
+#set successful exit value on target system
+SET(THREADS_PTHREAD_ARG 0)
+
+#check environment variables
+IF ("$ENV{QNX_HOST}" STREQUAL "")
+ MESSAGE(FATAL_ERROR "QNX_HOST environment variable not found. Please set the variable to your host's build tools")
+ENDIF ()
+IF ("$ENV{QNX_TARGET}" STREQUAL "")
+ MESSAGE(FATAL_ERROR "QNX_TARGET environment variable not found. Please set the variable to the qnx target location")
+ENDIF ()
+
+#set executable suffix
+IF(CMAKE_HOST_WIN32)
+ SET(HOST_EXECUTABLE_SUFFIX ".exe")
+ #convert windows paths to cmake paths
+ FILE(TO_CMAKE_PATH "$ENV{QNX_HOST}" QNX_HOST)
+ FILE(TO_CMAKE_PATH "$ENV{QNX_TARGET}" QNX_TARGET)
+ELSE()
+ SET(QNX_HOST "$ENV{QNX_HOST}")
+ SET(QNX_TARGET "$ENV{QNX_TARGET}")
+ENDIF()
+
+MESSAGE(STATUS "using QNX_HOST ${QNX_HOST}")
+MESSAGE(STATUS "using QNX_TARGET ${QNX_TARGET}")
+
+#set c compiler and flags
+SET(CMAKE_C_COMPILER ${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-gcc${HOST_EXECUTABLE_SUFFIX})
+SET(CMAKE_C_FLAGS_DEBUG "-g -D_DEBUG")
+SET(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
+
+#set c++ compiler and flags
+SET(CMAKE_CXX_COMPILER "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-g++${HOST_EXECUTABLE_SUFFIX}")
+SET(CMAKE_CXX_FLAGS_DEBUG "-g -D_DEBUG")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
+
+#set linker
+SET(CMAKE_LINKER "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ld${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX Linker Program")
+
+#set make
+SET(CMAKE_MAKE_PROGRAM "${QNX_HOST}/usr/bin/make${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX Make Program")
+
+#set other tools
+SET(CMAKE_AR "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ar${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX ar Program")
+SET(CMAKE_NM "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-nm${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX nm Program")
+SET(CMAKE_OBJCOPY "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-objcopy${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX objcopy Program")
+SET(CMAKE_OBJDUMP "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-objdump${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX objdump Program")
+SET(CMAKE_RANLIB "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ranlib${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX ranlib Program")
+SET(CMAKE_SH "${QNX_HOST}/usr/bin/sh${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX shell Program")
+SET(CMAKE_STRIP "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-strip${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX Strip Program")
+
+#set target environment
+SET(CMAKE_FIND_ROOT_PATH "${QNX_TARGET}")
+
+# search for programs in the build host directories only
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+ADD_DEFINITIONS("-DOS_QNX")
+ADD_DEFINITIONS("-DARCH_X86_32")