This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 3c38bb2 - Made the C++ build run faster (Boost now builds the
"system" library) - Fixed a problem with the Windows build (the boost build
adds an additional directory when building on windows)
3c38bb2 is described below
commit 3c38bb24bae9992204fd5bc38a983f4eb3a15188
Author: Christofer Dutz <[email protected]>
AuthorDate: Thu Jan 3 14:58:02 2019 +0100
- Made the C++ build run faster (Boost now builds the "system" library)
- Fixed a problem with the Windows build (the boost build adds an
additional directory when building on windows)
---
plc4cpp/api/pom.xml | 52 ------------------
plc4cpp/api/src/main/cmake/CMakeLists.txt | 81 ++++++++++++++++++++++++++++
plc4cpp/api/src/main/cpp/CMakeLists.txt | 73 -------------------------
plc4cpp/libs/pom.xml | 2 +
plc4cpp/pom.xml | 89 +++++++++++++++++++++++++++++++
5 files changed, 172 insertions(+), 125 deletions(-)
diff --git a/plc4cpp/api/pom.xml b/plc4cpp/api/pom.xml
index 85fc8d3..bb719cd 100644
--- a/plc4cpp/api/pom.xml
+++ b/plc4cpp/api/pom.xml
@@ -35,58 +35,6 @@
<build>
<!-- This is probably not required, however it helps IntelliJ detect the
files as sources -->
<sourceDirectory>${project.basedir}/src/main/cpp</sourceDirectory>
- <plugins>
- <plugin>
- <groupId>com.googlecode.cmake-maven-project</groupId>
- <artifactId>cmake-maven-plugin</artifactId>
- <version>3.7.2-b1</version>
- <executions>
- <!-- Uses a CMake generator to generate the build using the build
tool of choice -->
- <execution>
- <id>cmake-generate</id>
- <phase>process-sources</phase>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <!--
- Actually the path to the CMakeList.txt file which then again
- tells to tool where to find the sources.
- -->
- <sourcePath>${project.basedir}/src/main/cpp</sourcePath>
- <!--
- Path to where the build configuration is generated
- (This directory is then used in the compile step to actually
perform the build)
- -->
- <targetPath>${project.build.directory}/make</targetPath>
- <!--
- Name of the generator the compile step will be executing.
- -->
- <generator>${cmake.generator}</generator>
- <!--
- The classifier of the current platform. One of
- [windows-x86_32, windows-x86_64, linux-x86_32, linux-x86_64,
linux-arm_32, mac-x86_64].
- It defines the version and type of the cmake installation to
download.
- -->
- <classifier>${os.classifier}</classifier>
- </configuration>
- </execution>
- <!-- Actually executes the build -->
- <execution>
- <id>cmake-compile</id>
- <phase>compile</phase>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <!-- The directory where the "generate" step generated the build
configuration -->
-
<projectDirectory>${project.build.directory}/make</projectDirectory>
- <classifier>${os.classifier}</classifier>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
</build>
<dependencies>
diff --git a/plc4cpp/api/src/main/cmake/CMakeLists.txt
b/plc4cpp/api/src/main/cmake/CMakeLists.txt
new file mode 100644
index 0000000..0d09718
--- /dev/null
+++ b/plc4cpp/api/src/main/cmake/CMakeLists.txt
@@ -0,0 +1,81 @@
+#[[
+ 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 3.7)
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+add_library(api ../../src/main/cpp/org/apache/plc4x/cpp/api/PlcConnection.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/authentication/PlcAuthentication.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/authentication/PlcUsernamePasswordAuthentication.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcConnectionException.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcFieldRangeException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcIncompatibleDatatypeException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcInvalidFieldException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcIoException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcNotImplementedException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcProtocolException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcProtocolPayloadTooBigException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcRuntimeException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcTimeoutException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcUnsupportedDataTypeException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/exceptions/PlcUnsupportedOperationException.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcFieldRequest.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcFieldResponse.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcMessage.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcReadRequest.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcReadRequestBuilder.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcReadResponse.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcRequest.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcRequestBuilder.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcResponse.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcSubscriptionEvent.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcSubscriptionRequest.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcSubscriptionResponse.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcUnsubscriptionRequest.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcUnsubscriptionResponse.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcWriteRequest.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/PlcWriteResponse.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/messages/REQUEST.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/RequestTemplate.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/messages/RESPONSE.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/messages/ResponseTemplate.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/metadata/PlcConnectionMetadata.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/model/Consumer.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/model/PlcConsumerRegistration.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/model/PlcField.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/model/PlcSubscriptionHandle.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/types/PlcClientDataType.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/types/PlcResponseCode.cpp
+
../../src/main/cpp/org/apache/plc4x/cpp/api/types/PlcSubscriptionType.cpp
+ ../../src/main/cpp/org/apache/plc4x/cpp/api/types/ValueTypeObject.cpp
+ )
+
+#[[
+ Import for non-windows systems
+]]
+target_include_directories (api PUBLIC ../../../libs/libs/boost/include)
+
+#[[
+ Import for windows systems
+]]
+target_include_directories (api PUBLIC
../../../libs/libs/boost/include/boost-${boost.version.underline-short})
+
diff --git a/plc4cpp/api/src/main/cpp/CMakeLists.txt
b/plc4cpp/api/src/main/cpp/CMakeLists.txt
deleted file mode 100644
index b9818d2..0000000
--- a/plc4cpp/api/src/main/cpp/CMakeLists.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-#[[
- 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 3.7)
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-
-add_library(api org/apache/plc4x/cpp/api/PlcConnection.cpp
- org/apache/plc4x/cpp/api/authentication/PlcAuthentication.cpp
-
org/apache/plc4x/cpp/api/authentication/PlcUsernamePasswordAuthentication.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcConnectionException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcFieldRangeException.cpp
-
org/apache/plc4x/cpp/api/exceptions/PlcIncompatibleDatatypeException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcInvalidFieldException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcIoException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcNotImplementedException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcProtocolException.cpp
-
org/apache/plc4x/cpp/api/exceptions/PlcProtocolPayloadTooBigException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcRuntimeException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcTimeoutException.cpp
- org/apache/plc4x/cpp/api/exceptions/PlcUnsupportedDataTypeException.cpp
-
org/apache/plc4x/cpp/api/exceptions/PlcUnsupportedOperationException.cpp
- org/apache/plc4x/cpp/api/messages/PlcFieldRequest.cpp
- org/apache/plc4x/cpp/api/messages/PlcFieldResponse.cpp
- org/apache/plc4x/cpp/api/messages/PlcMessage.cpp
- org/apache/plc4x/cpp/api/messages/PlcReadRequest.cpp
- org/apache/plc4x/cpp/api/messages/PlcReadRequestBuilder.cpp
- org/apache/plc4x/cpp/api/messages/PlcReadResponse.cpp
- org/apache/plc4x/cpp/api/messages/PlcRequest.cpp
- org/apache/plc4x/cpp/api/messages/PlcRequestBuilder.cpp
- org/apache/plc4x/cpp/api/messages/PlcResponse.cpp
- org/apache/plc4x/cpp/api/messages/PlcSubscriptionEvent.cpp
- org/apache/plc4x/cpp/api/messages/PlcSubscriptionRequest.cpp
- org/apache/plc4x/cpp/api/messages/PlcSubscriptionResponse.cpp
- org/apache/plc4x/cpp/api/messages/PlcUnsubscriptionRequest.cpp
- org/apache/plc4x/cpp/api/messages/PlcUnsubscriptionResponse.cpp
- org/apache/plc4x/cpp/api/messages/PlcWriteRequest.cpp
- org/apache/plc4x/cpp/api/messages/PlcWriteResponse.cpp
- org/apache/plc4x/cpp/api/messages/REQUEST.cpp
- org/apache/plc4x/cpp/api/messages/RequestTemplate.cpp
- org/apache/plc4x/cpp/api/messages/RESPONSE.cpp
- org/apache/plc4x/cpp/api/messages/ResponseTemplate.cpp
- org/apache/plc4x/cpp/api/metadata/PlcConnectionMetadata.cpp
- org/apache/plc4x/cpp/api/model/Consumer.cpp
- org/apache/plc4x/cpp/api/model/PlcConsumerRegistration.cpp
- org/apache/plc4x/cpp/api/model/PlcField.cpp
- org/apache/plc4x/cpp/api/model/PlcSubscriptionHandle.cpp
- org/apache/plc4x/cpp/api/types/PlcClientDataType.cpp
- org/apache/plc4x/cpp/api/types/PlcResponseCode.cpp
- org/apache/plc4x/cpp/api/types/PlcSubscriptionType.cpp
- org/apache/plc4x/cpp/api/types/ValueTypeObject.cpp
- )
-
-target_include_directories (api PUBLIC ../../../../libs/libs/boost/include)
-
diff --git a/plc4cpp/libs/pom.xml b/plc4cpp/libs/pom.xml
index 4943b63..5c8a8b0 100644
--- a/plc4cpp/libs/pom.xml
+++ b/plc4cpp/libs/pom.xml
@@ -134,6 +134,8 @@
<argument>install</argument>
<!-- Tell it where to install the libraries and header
files -->
<argument>--prefix=${project.basedir}/libs/boost</argument>
+ <!-- Build only the system module (speeds up build-time
drastically) -->
+ <argument>--with-system</argument>
<!-- On Windows machines the build failed, if this was not
explicitly set -->
<argument>address-model=64</argument>
</arguments>
diff --git a/plc4cpp/pom.xml b/plc4cpp/pom.xml
index 38506d0..abc53a8 100644
--- a/plc4cpp/pom.xml
+++ b/plc4cpp/pom.xml
@@ -36,6 +36,7 @@
<properties>
<boost.version>1.69.0</boost.version>
<boost.version.underline>1_69_0</boost.version.underline>
+ <boost.version.underline-short>1_69</boost.version.underline-short>
<boost.working-directory>${project.build.directory}/libs/boost_${boost.version.underline}</boost.working-directory>
</properties>
@@ -125,6 +126,94 @@
<boost.build.executable>${boost.working-directory}/b2.exe</boost.build.executable>
</properties>
</profile>
+ <!--
+ Profile inherited and automatically activated as soon as a directory
contains a
+ src/main/cmake directory.
+ -->
+ <profile>
+ <id>cmake-module</id>
+ <activation>
+ <file>
+ <exists>src/main/cmake</exists>
+ </file>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>process-cmake-files</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ <configuration>
+ <resources>
+ <resource>
+ <directory>src/main/cmake</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+
<outputDirectory>${project.build.directory}/cmake</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>com.googlecode.cmake-maven-project</groupId>
+ <artifactId>cmake-maven-plugin</artifactId>
+ <version>3.7.2-b1</version>
+ <executions>
+ <!-- Uses a CMake generator to generate the build using the
build tool of choice -->
+ <execution>
+ <id>cmake-generate</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <!--
+ Actually the path to the CMakeList.txt file which then
again
+ tells to tool where to find the sources.
+ -->
+ <sourcePath>${project.build.directory}/cmake</sourcePath>
+ <!--
+ Path to where the build configuration is generated
+ (This directory is then used in the compile step to
actually perform the build)
+ -->
+ <targetPath>${project.build.directory}/make</targetPath>
+ <!--
+ Name of the generator the compile step will be executing.
+ -->
+ <generator>${cmake.generator}</generator>
+ <!--
+ The classifier of the current platform. One of
+ [windows-x86_32, windows-x86_64, linux-x86_32,
linux-x86_64, linux-arm_32, mac-x86_64].
+ It defines the version and type of the cmake installation
to download.
+ -->
+ <classifier>${os.classifier}</classifier>
+ </configuration>
+ </execution>
+ <!-- Actually executes the build -->
+ <execution>
+ <id>cmake-compile</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>compile</goal>
+ </goals>
+ <configuration>
+ <!-- The directory where the "generate" step generated the
build configuration -->
+
<projectDirectory>${project.build.directory}/make</projectDirectory>
+ <classifier>${os.classifier}</classifier>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
\ No newline at end of file