Correctly include all modules during build
Motivation: To ensure the release plugin works correctly we need to ensure all modules are included during build. Modification: - Include all modules - Skip compilation and tests for native code when not supported but still include the module and build the jar Result: Build and release works again
This commit is contained in:
parent
a093b89bfe
commit
9e62c79574
139
all/pom.xml
139
all/pom.xml
@ -34,13 +34,126 @@
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<!-- If the uber profile is used it will automatically fetch the missing native jar from maven and add it to the all jar as well. -->
|
||||
<profile>
|
||||
<id>uber</id>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>staged-releases</id>
|
||||
<name>Staged Releases</name>
|
||||
<url>https://oss.sonatype.org/service/local/repositories/${stagingRepositoryId}/content/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<!-- Depend on all our native jars -->
|
||||
<!-- As this is executed on either macOS or Linux we directly need to specify the classifier -->
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-epoll</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>linux-x86_64</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-kqueue</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>osx-x86_64</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
|
||||
<!-- The linux profile will only include the native jar for epol to the all jar.
|
||||
If you want to also include the native jar for kqueue use -Puber.
|
||||
-->
|
||||
<profile>
|
||||
<id>linux</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>linux</family>
|
||||
</os>
|
||||
</activation>
|
||||
<dependencies>
|
||||
<!-- All release modules -->
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-epoll</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<!-- The mac, openbsd and freebsd profile will only include the native jar for epol to the all jar.
|
||||
If you want to also include the native jar for kqueue use -Puber.
|
||||
-->
|
||||
<profile>
|
||||
<id>mac</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>mac</family>
|
||||
</os>
|
||||
</activation>
|
||||
<dependencies>
|
||||
<!-- All release modules -->
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-kqueue</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>freebsd</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>unix</family>
|
||||
<name>freebsd</name>
|
||||
</os>
|
||||
</activation>
|
||||
<dependencies>
|
||||
<!-- All release modules -->
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-kqueue</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>openbsd</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>unix</family>
|
||||
<name>openbsd</name>
|
||||
</os>
|
||||
</activation>
|
||||
<dependencies>
|
||||
<!-- All release modules -->
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-kqueue</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>full</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>uber</name>
|
||||
</property>
|
||||
</activation>
|
||||
<!-- Only include in full profile as this will not work on Java9 yet -->
|
||||
<!-- https://issues.apache.org/jira/browse/JXR-133 -->
|
||||
<build>
|
||||
@ -332,22 +445,6 @@
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-epoll</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>linux-x86_64</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-kqueue</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>osx-x86_64</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- Add optional dependencies explicitly to avoid Javadoc warnings and errors. -->
|
||||
<dependency>
|
||||
|
86
pom.xml
86
pom.xml
@ -138,81 +138,6 @@
|
||||
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
|
||||
</properties>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>linux</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>linux</family>
|
||||
</os>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>transport-native-unix-common-tests</module>
|
||||
<module>transport-native-unix-common</module>
|
||||
<module>transport-native-epoll</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>mac</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>mac</family>
|
||||
</os>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>transport-native-unix-common-tests</module>
|
||||
<module>transport-native-unix-common</module>
|
||||
<module>transport-native-kqueue</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>freebsd</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>unix</family>
|
||||
<name>freebsd</name>
|
||||
</os>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>transport-native-unix-common-tests</module>
|
||||
<module>transport-native-unix-common</module>
|
||||
<module>transport-native-kqueue</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>openbsd</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>unix</family>
|
||||
<name>openbsd</name>
|
||||
</os>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>transport-native-unix-common-tests</module>
|
||||
<module>transport-native-unix-common</module>
|
||||
<module>transport-native-kqueue</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<!-- The uber artifacts depend on artifacts built from different platforms and will fail if these artifacts are not
|
||||
available. Typically we only build the uber jars as part of the release process so the build sequencing
|
||||
is controlled and can be sequenced correctly. For example we may do the following:
|
||||
|
||||
<from a linux machine>
|
||||
$ mvn release
|
||||
<after this completes log onto a MacOS machine, note fail-at-end, and -D to activate multiple profiles>
|
||||
$ mvn release -fae -Duber
|
||||
-->
|
||||
<profile>
|
||||
<id>uber</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>uber</name>
|
||||
</property>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>all</module>
|
||||
<module>tarball</module>
|
||||
</modules>
|
||||
</profile>
|
||||
<profile>
|
||||
<!--
|
||||
This profile exists because either ALPN or NPN can exits on the class path at once, but not both.
|
||||
@ -280,6 +205,7 @@
|
||||
</properties>
|
||||
|
||||
<modules>
|
||||
<module>all</module>
|
||||
<module>dev-tools</module>
|
||||
<module>common</module>
|
||||
<module>buffer</module>
|
||||
@ -297,7 +223,12 @@
|
||||
<module>codec-xml</module>
|
||||
<module>resolver</module>
|
||||
<module>resolver-dns</module>
|
||||
<module>tarball</module>
|
||||
<module>transport</module>
|
||||
<module>transport-native-unix-common-tests</module>
|
||||
<module>transport-native-unix-common</module>
|
||||
<module>transport-native-epoll</module>
|
||||
<module>transport-native-kqueue</module>
|
||||
<module>transport-rxtx</module>
|
||||
<module>transport-sctp</module>
|
||||
<module>transport-udt</module>
|
||||
@ -988,13 +919,16 @@
|
||||
<retryFailedDeploymentCount>10</retryFailedDeploymentCount>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- After artifacts were deployed from linux and macos we need to execute the following for this module:
|
||||
mvn -Psonatype-oss-release,full,uber clean package gpg:sign org.sonatype.plugins:nexus-staging-maven-plugin:deploy -DstagingRepositoryId=${netty-id} -DnexusUrl=https://oss.sonatype.org -DserverId=sonatype-nexus-staging
|
||||
-->
|
||||
<plugin>
|
||||
<artifactId>maven-release-plugin</artifactId>
|
||||
<!-- Downgrade to 2.4.1 if release fails -->
|
||||
<version>2.5.3</version>
|
||||
<configuration>
|
||||
<useReleaseProfile>false</useReleaseProfile>
|
||||
<arguments>-P restricted-release,sonatype-oss-release</arguments>
|
||||
<arguments>-P restricted-release,sonatype-oss-release,full</arguments>
|
||||
<autoVersionSubmodules>true</autoVersionSubmodules>
|
||||
<allowTimestampedSnapshots>false</allowTimestampedSnapshots>
|
||||
<tagNameFormat>netty-@{project.version}</tagNameFormat>
|
||||
|
@ -94,13 +94,40 @@
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<!-- If the uber profile is used it will automatically fetch the missing native jar from maven and add it to the all jar as well. -->
|
||||
<profile>
|
||||
<id>uber</id>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>staged-releases</id>
|
||||
<name>Staged Releases</name>
|
||||
<url>https://oss.sonatype.org/service/local/repositories/${stagingRepositoryId}/content/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<!-- Depend on all our native jars -->
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-epoll</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>linux-x86_64</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>netty-transport-native-kqueue</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>osx-x86_64</classifier>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>full</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>uber</name>
|
||||
</property>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
|
@ -34,6 +34,7 @@
|
||||
<unix.common.lib.unpacked.dir>${unix.common.lib.dir}/META-INF/native/lib</unix.common.lib.unpacked.dir>
|
||||
<unix.common.include.unpacked.dir>${unix.common.lib.dir}/META-INF/native/include</unix.common.include.unpacked.dir>
|
||||
<jni.compiler.args.ldflags>LDFLAGS=-L${unix.common.lib.unpacked.dir} -Wl,--no-as-needed -lrt -Wl,--whole-archive -l${unix.common.lib.name} -Wl,--no-whole-archive</jni.compiler.args.ldflags>
|
||||
<skipTests>true</skipTests>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
@ -100,6 +101,208 @@
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>linux</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>linux</family>
|
||||
</os>
|
||||
</activation>
|
||||
<properties>
|
||||
<skipTests>false</skipTests>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- unpack the unix-common static library and include files -->
|
||||
<execution>
|
||||
<id>unpack</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>${project.groupId}</includeGroupIds>
|
||||
<includeArtifactIds>netty-transport-native-unix-common</includeArtifactIds>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<outputDirectory>${unix.common.lib.dir}</outputDirectory>
|
||||
<includes>META-INF/native/**</includes>
|
||||
<overWriteReleases>false</overWriteReleases>
|
||||
<overWriteSnapshots>true</overWriteSnapshots>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.fusesource.hawtjni</groupId>
|
||||
<artifactId>maven-hawtjni-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<configuration>
|
||||
<nativeSourceDirectory>${project.basedir}/src/main/c</nativeSourceDirectory>
|
||||
<libDirectory>${project.build.outputDirectory}</libDirectory>
|
||||
<!-- We use Maven's artifact classifier instead.
|
||||
This hack will make the hawtjni plugin to put the native library
|
||||
under 'META-INF/native' rather than 'META-INF/native/${platform}'. -->
|
||||
<platform>.</platform>
|
||||
<forceConfigure>true</forceConfigure>
|
||||
<forceAutogen>true</forceAutogen>
|
||||
<configureArgs>
|
||||
<arg>${jni.compiler.args.ldflags}</arg>
|
||||
<arg>${jni.compiler.args.cflags}</arg>
|
||||
</configureArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<phase>compile</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Generate the JAR that contains the native library in it. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<Bundle-NativeCode>META-INF/native/libnetty-transport-native-epoll.so; osname=linux; processor=x86_64,*</Bundle-NativeCode>
|
||||
</manifestEntries>
|
||||
<index>true</index>
|
||||
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||
</archive>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-glibc-sendmmsg and regex-linux-sendmmsg -->
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<id>ant-get-systeminfo</id>
|
||||
<configuration>
|
||||
<exportAntProperties>true</exportAntProperties>
|
||||
<tasks>
|
||||
<exec executable="sh" outputproperty="ldd_version">
|
||||
<arg value="-c" />
|
||||
<arg value="ldd --version | head -1" />
|
||||
</exec>
|
||||
<exec executable="uname" outputproperty="uname_os_version">
|
||||
<arg value="-r" />
|
||||
</exec>
|
||||
</tasks>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-combined-sendmmsg -->
|
||||
<phase>initialize</phase>
|
||||
<id>regex-glibc-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>glibc.sendmmsg.support</name>
|
||||
<value>${ldd_version}</value>
|
||||
<!-- Version must be >= 2.14 - set to IO_NETTY_SENDMSSG_NOT_FOUND if this version is not satisfied -->
|
||||
<regex>^((?!^[^)]+\)\s+(0*2\.1[4-9]|0*2\.[2-9][0-9]+|0*[3-9][0-9]*|0*[1-9]+[0-9]+).*).)*$</regex>
|
||||
<replacement>IO_NETTY_SENDMSSG_NOT_FOUND</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-combined-sendmmsg -->
|
||||
<phase>initialize</phase>
|
||||
<id>regex-linux-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>linux.sendmmsg.support</name>
|
||||
<value>${uname_os_version}</value>
|
||||
<!-- Version must be >= 3 - set to IO_NETTY_SENDMSSG_NOT_FOUND if this version is not satisfied -->
|
||||
<regex>^((?!^[0-9]*[3-9]\.?.*).)*$</regex>
|
||||
<replacement>IO_NETTY_SENDMSSG_NOT_FOUND</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-unset-if-needed-sendmmsg -->
|
||||
<phase>generate-sources</phase>
|
||||
<id>regex-combined-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>jni.compiler.args.cflags</name>
|
||||
<value>${linux.sendmmsg.support}${glibc.sendmmsg.support}</value>
|
||||
<!-- If glibc and linux kernel are both not sufficient...then define the CFLAGS -->
|
||||
<regex>.*IO_NETTY_SENDMSSG_NOT_FOUND.*</regex>
|
||||
<replacement>CFLAGS=-O3 -DIO_NETTY_SENDMMSG_NOT_FOUND -Werror -fno-omit-frame-pointer -Wunused-variable -I${unix.common.include.unpacked.dir}</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<!-- Phase must be before build-native-lib -->
|
||||
<phase>generate-sources</phase>
|
||||
<id>regex-unset-if-needed-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>jni.compiler.args.cflags</name>
|
||||
<value>${jni.compiler.args.cflags}</value>
|
||||
<!-- If glibc and linux kernel are both not sufficient...then define the CFLAGS -->
|
||||
<regex>^((?!CFLAGS=).)*$</regex>
|
||||
<replacement>CFLAGS=-O3 -Werror -fno-omit-frame-pointer -Wunused-variable -I${unix.common.include.unpacked.dir}</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<!--
|
||||
The unix-common with classifier dependency is optional because it is not a runtime dependency, but a build time
|
||||
dependency to get the static library which is built directly into the shared library generated by this project.
|
||||
-->
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<dependencies>
|
||||
@ -113,17 +316,6 @@
|
||||
<artifactId>netty-buffer</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<!--
|
||||
The unix-common with classifier dependency is optional because it is not a runtime dependency, but a build time
|
||||
dependency to get the static library which is built directly into the shared library generated by this project.
|
||||
-->
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
@ -154,60 +346,9 @@
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- unpack the unix-common static library and include files -->
|
||||
<execution>
|
||||
<id>unpack</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>${project.groupId}</includeGroupIds>
|
||||
<includeArtifactIds>netty-transport-native-unix-common</includeArtifactIds>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<outputDirectory>${unix.common.lib.dir}</outputDirectory>
|
||||
<includes>META-INF/native/**</includes>
|
||||
<overWriteReleases>false</overWriteReleases>
|
||||
<overWriteSnapshots>true</overWriteSnapshots>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.fusesource.hawtjni</groupId>
|
||||
<artifactId>maven-hawtjni-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<configuration>
|
||||
<nativeSourceDirectory>${project.basedir}/src/main/c</nativeSourceDirectory>
|
||||
<libDirectory>${project.build.outputDirectory}</libDirectory>
|
||||
<!-- We use Maven's artifact classifier instead.
|
||||
This hack will make the hawtjni plugin to put the native library
|
||||
under 'META-INF/native' rather than 'META-INF/native/${platform}'. -->
|
||||
<platform>.</platform>
|
||||
<forceConfigure>true</forceConfigure>
|
||||
<forceAutogen>true</forceAutogen>
|
||||
<configureArgs>
|
||||
<arg>${jni.compiler.args.ldflags}</arg>
|
||||
<arg>${jni.compiler.args.cflags}</arg>
|
||||
</configureArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<phase>compile</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
@ -220,122 +361,6 @@
|
||||
</excludes>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- Generate the JAR that contains the native library in it. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<Bundle-NativeCode>META-INF/native/libnetty-transport-native-epoll.so; osname=linux; processor=x86_64,*</Bundle-NativeCode>
|
||||
</manifestEntries>
|
||||
<index>true</index>
|
||||
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||
</archive>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-glibc-sendmmsg and regex-linux-sendmmsg -->
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<id>ant-get-systeminfo</id>
|
||||
<configuration>
|
||||
<exportAntProperties>true</exportAntProperties>
|
||||
<tasks>
|
||||
<exec executable="sh" outputproperty="ldd_version">
|
||||
<arg value="-c" />
|
||||
<arg value="ldd --version | head -1" />
|
||||
</exec>
|
||||
<exec executable="uname" outputproperty="uname_os_version">
|
||||
<arg value="-r" />
|
||||
</exec>
|
||||
</tasks>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-combined-sendmmsg -->
|
||||
<phase>initialize</phase>
|
||||
<id>regex-glibc-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>glibc.sendmmsg.support</name>
|
||||
<value>${ldd_version}</value>
|
||||
<!-- Version must be >= 2.14 - set to IO_NETTY_SENDMSSG_NOT_FOUND if this version is not satisfied -->
|
||||
<regex>^((?!^[^)]+\)\s+(0*2\.1[4-9]|0*2\.[2-9][0-9]+|0*[3-9][0-9]*|0*[1-9]+[0-9]+).*).)*$</regex>
|
||||
<replacement>IO_NETTY_SENDMSSG_NOT_FOUND</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-combined-sendmmsg -->
|
||||
<phase>initialize</phase>
|
||||
<id>regex-linux-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>linux.sendmmsg.support</name>
|
||||
<value>${uname_os_version}</value>
|
||||
<!-- Version must be >= 3 - set to IO_NETTY_SENDMSSG_NOT_FOUND if this version is not satisfied -->
|
||||
<regex>^((?!^[0-9]*[3-9]\.?.*).)*$</regex>
|
||||
<replacement>IO_NETTY_SENDMSSG_NOT_FOUND</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<!-- Phase must be before regex-unset-if-needed-sendmmsg -->
|
||||
<phase>generate-sources</phase>
|
||||
<id>regex-combined-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>jni.compiler.args.cflags</name>
|
||||
<value>${linux.sendmmsg.support}${glibc.sendmmsg.support}</value>
|
||||
<!-- If glibc and linux kernel are both not sufficient...then define the CFLAGS -->
|
||||
<regex>.*IO_NETTY_SENDMSSG_NOT_FOUND.*</regex>
|
||||
<replacement>CFLAGS=-O3 -DIO_NETTY_SENDMMSG_NOT_FOUND -Werror -fno-omit-frame-pointer -Wunused-variable -I${unix.common.include.unpacked.dir}</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<!-- Phase must be before build-native-lib -->
|
||||
<phase>generate-sources</phase>
|
||||
<id>regex-unset-if-needed-sendmmsg</id>
|
||||
<goals>
|
||||
<goal>regex-property</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<name>jni.compiler.args.cflags</name>
|
||||
<value>${jni.compiler.args.cflags}</value>
|
||||
<!-- If glibc and linux kernel are both not sufficient...then define the CFLAGS -->
|
||||
<regex>^((?!CFLAGS=).)*$</regex>
|
||||
<replacement>CFLAGS=-O3 -Werror -fno-omit-frame-pointer -Wunused-variable -I${unix.common.include.unpacked.dir}</replacement>
|
||||
<failIfNoMatch>false</failIfNoMatch>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>osx</id>
|
||||
<id>mac</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>mac</family>
|
||||
@ -36,7 +36,314 @@
|
||||
</activation>
|
||||
<properties>
|
||||
<jni.compiler.args.ldflags>LDFLAGS=-Wl,-weak_library,${unix.common.lib.unpacked.dir}/lib${unix.common.lib.name}.a</jni.compiler.args.ldflags>
|
||||
<skipTests>false</skipTests>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- unpack the unix-common static library and include files -->
|
||||
<execution>
|
||||
<id>unpack</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>${project.groupId}</includeGroupIds>
|
||||
<includeArtifactIds>netty-transport-native-unix-common</includeArtifactIds>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<outputDirectory>${unix.common.lib.dir}</outputDirectory>
|
||||
<includes>META-INF/native/**</includes>
|
||||
<overWriteReleases>false</overWriteReleases>
|
||||
<overWriteSnapshots>true</overWriteSnapshots>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.fusesource.hawtjni</groupId>
|
||||
<artifactId>maven-hawtjni-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<configuration>
|
||||
<nativeSourceDirectory>${project.basedir}/src/main/c</nativeSourceDirectory>
|
||||
<libDirectory>${project.build.outputDirectory}</libDirectory>
|
||||
<!-- We use Maven's artifact classifier instead.
|
||||
This hack will make the hawtjni plugin to put the native library
|
||||
under 'META-INF/native' rather than 'META-INF/native/${platform}'. -->
|
||||
<platform>.</platform>
|
||||
<forceConfigure>true</forceConfigure>
|
||||
<forceAutogen>true</forceAutogen>
|
||||
<configureArgs>
|
||||
<arg>${jni.compiler.args.ldflags}</arg>
|
||||
<arg>${jni.compiler.args.cflags}</arg>
|
||||
</configureArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<phase>compile</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Generate the JAR that contains the native library in it. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<Bundle-NativeCode>META-INF/native/libnetty-transport-native-kqueue.jnilib; osname=darwin, processor=x86_64"</Bundle-NativeCode>
|
||||
</manifestEntries>
|
||||
<index>true</index>
|
||||
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||
</archive>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<!--
|
||||
The unix-common with classifier dependency is optional because it is not a runtime dependency, but a build time
|
||||
dependency to get the static library which is built directly into the shared library generated by this project.
|
||||
-->
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>openbsd</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>unix</family>
|
||||
<name>openbsd</name>
|
||||
</os>
|
||||
</activation>
|
||||
<properties>
|
||||
<skipTests>false</skipTests>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- unpack the unix-common static library and include files -->
|
||||
<execution>
|
||||
<id>unpack</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>${project.groupId}</includeGroupIds>
|
||||
<includeArtifactIds>netty-transport-native-unix-common</includeArtifactIds>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<outputDirectory>${unix.common.lib.dir}</outputDirectory>
|
||||
<includes>META-INF/native/**</includes>
|
||||
<overWriteReleases>false</overWriteReleases>
|
||||
<overWriteSnapshots>true</overWriteSnapshots>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.fusesource.hawtjni</groupId>
|
||||
<artifactId>maven-hawtjni-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<configuration>
|
||||
<nativeSourceDirectory>${project.basedir}/src/main/c</nativeSourceDirectory>
|
||||
<libDirectory>${project.build.outputDirectory}</libDirectory>
|
||||
<!-- We use Maven's artifact classifier instead.
|
||||
This hack will make the hawtjni plugin to put the native library
|
||||
under 'META-INF/native' rather than 'META-INF/native/${platform}'. -->
|
||||
<platform>.</platform>
|
||||
<forceConfigure>true</forceConfigure>
|
||||
<forceAutogen>true</forceAutogen>
|
||||
<configureArgs>
|
||||
<arg>${jni.compiler.args.ldflags}</arg>
|
||||
<arg>${jni.compiler.args.cflags}</arg>
|
||||
</configureArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<phase>compile</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Generate the JAR that contains the native library in it. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<Bundle-NativeCode>META-INF/native/libnetty-transport-native-kqueue.jnilib; osname=darwin, processor=x86_64"</Bundle-NativeCode>
|
||||
</manifestEntries>
|
||||
<index>true</index>
|
||||
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||
</archive>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<!--
|
||||
The unix-common with classifier dependency is optional because it is not a runtime dependency, but a build time
|
||||
dependency to get the static library which is built directly into the shared library generated by this project.
|
||||
-->
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>freebsd</id>
|
||||
<activation>
|
||||
<os>
|
||||
<family>unix</family>
|
||||
<name>freebsd</name>
|
||||
</os>
|
||||
</activation>
|
||||
<properties>
|
||||
<skipTests>false</skipTests>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- unpack the unix-common static library and include files -->
|
||||
<execution>
|
||||
<id>unpack</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>${project.groupId}</includeGroupIds>
|
||||
<includeArtifactIds>netty-transport-native-unix-common</includeArtifactIds>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<outputDirectory>${unix.common.lib.dir}</outputDirectory>
|
||||
<includes>META-INF/native/**</includes>
|
||||
<overWriteReleases>false</overWriteReleases>
|
||||
<overWriteSnapshots>true</overWriteSnapshots>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.fusesource.hawtjni</groupId>
|
||||
<artifactId>maven-hawtjni-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<configuration>
|
||||
<nativeSourceDirectory>${project.basedir}/src/main/c</nativeSourceDirectory>
|
||||
<libDirectory>${project.build.outputDirectory}</libDirectory>
|
||||
<!-- We use Maven's artifact classifier instead.
|
||||
This hack will make the hawtjni plugin to put the native library
|
||||
under 'META-INF/native' rather than 'META-INF/native/${platform}'. -->
|
||||
<platform>.</platform>
|
||||
<forceConfigure>true</forceConfigure>
|
||||
<forceAutogen>true</forceAutogen>
|
||||
<configureArgs>
|
||||
<arg>${jni.compiler.args.ldflags}</arg>
|
||||
<arg>${jni.compiler.args.cflags}</arg>
|
||||
</configureArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<phase>compile</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Generate the JAR that contains the native library in it. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<Bundle-NativeCode>META-INF/native/libnetty-transport-native-kqueue.jnilib; osname=darwin, processor=x86_64"</Bundle-NativeCode>
|
||||
</manifestEntries>
|
||||
<index>true</index>
|
||||
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||
</archive>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<!--
|
||||
The unix-common with classifier dependency is optional because it is not a runtime dependency, but a build time
|
||||
dependency to get the static library which is built directly into the shared library generated by this project.
|
||||
-->
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
@ -49,6 +356,7 @@
|
||||
<unix.common.include.unpacked.dir>${unix.common.lib.dir}/META-INF/native/include</unix.common.include.unpacked.dir>
|
||||
<jni.compiler.args.cflags>CFLAGS=-O3 -Werror -fno-omit-frame-pointer -Wunused-variable -I${unix.common.include.unpacked.dir}</jni.compiler.args.cflags>
|
||||
<jni.compiler.args.ldflags>LDFLAGS=-L${unix.common.lib.unpacked.dir} -Wl,--whole-archive -l${unix.common.lib.name} -Wl,--no-whole-archive</jni.compiler.args.ldflags>
|
||||
<skipTests>true</skipTests>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@ -62,17 +370,6 @@
|
||||
<artifactId>netty-buffer</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<!--
|
||||
The unix-common with classifier dependency is optional because it is not a runtime dependency, but a build time
|
||||
dependency to get the static library which is built directly into the shared library generated by this project.
|
||||
-->
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||
@ -105,58 +402,6 @@
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- unpack the unix-common static library and include files -->
|
||||
<execution>
|
||||
<id>unpack</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>${project.groupId}</includeGroupIds>
|
||||
<includeArtifactIds>netty-transport-native-unix-common</includeArtifactIds>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
<outputDirectory>${unix.common.lib.dir}</outputDirectory>
|
||||
<includes>META-INF/native/**</includes>
|
||||
<overWriteReleases>false</overWriteReleases>
|
||||
<overWriteSnapshots>true</overWriteSnapshots>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.fusesource.hawtjni</groupId>
|
||||
<artifactId>maven-hawtjni-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<configuration>
|
||||
<nativeSourceDirectory>${project.basedir}/src/main/c</nativeSourceDirectory>
|
||||
<libDirectory>${project.build.outputDirectory}</libDirectory>
|
||||
<!-- We use Maven's artifact classifier instead.
|
||||
This hack will make the hawtjni plugin to put the native library
|
||||
under 'META-INF/native' rather than 'META-INF/native/${platform}'. -->
|
||||
<platform>.</platform>
|
||||
<forceConfigure>true</forceConfigure>
|
||||
<forceAutogen>true</forceAutogen>
|
||||
<configureArgs>
|
||||
<arg>${jni.compiler.args.ldflags}</arg>
|
||||
<arg>${jni.compiler.args.cflags}</arg>
|
||||
</configureArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<phase>compile</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
@ -169,26 +414,6 @@
|
||||
</excludes>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- Generate the JAR that contains the native library in it. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<Bundle-NativeCode>META-INF/native/libnetty-transport-native-kqueue.jnilib; osname=darwin, processor=x86_64"</Bundle-NativeCode>
|
||||
</manifestEntries>
|
||||
<index>true</index>
|
||||
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
|
||||
</archive>
|
||||
<classifier>${jni.classifier}</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
@ -54,6 +54,62 @@
|
||||
<exe.compiler>clang</exe.compiler>
|
||||
<jni.platform>darwin</jni.platform>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Build the additional JAR that contains the native library. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<copy todir="${nativeJarWorkdir}">
|
||||
<zipfileset src="${defaultJarFile}" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeLibOnlyDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+)$" to="META-INF/native/lib/\1" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeIncludeDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+).h$" to="META-INF/native/include/\1.h" />
|
||||
</copy>
|
||||
<jar destfile="${nativeJarFile}" manifest="${nativeJarWorkdir}/META-INF/MANIFEST.MF" basedir="${nativeJarWorkdir}" index="true" excludes="META-INF/MANIFEST.MF,META-INF/INDEX.LIST" />
|
||||
<attachartifact file="${nativeJarFile}" classifier="${jni.classifier}" type="jar" />
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- invoke the make file to build a static library -->
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="${exe.make}" failonerror="true" resolveexecutable="true">
|
||||
<env key="CC" value="${exe.compiler}"/>
|
||||
<env key="AR" value="${exe.archiver}"/>
|
||||
<env key="LIB_DIR" value="${nativeLibOnlyDir}"/>
|
||||
<env key="OBJ_DIR" value="${nativeObjsOnlyDir}"/>
|
||||
<env key="JNI_PLATFORM" value="${jni.platform}"/>
|
||||
<env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable"/>
|
||||
<env key="LDFLAGS" value="-Wl,--no-as-needed -lrt"/>
|
||||
<env key="LIB_NAME" value="${nativeLibName}"/>
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>linux</id>
|
||||
@ -65,6 +121,62 @@
|
||||
<properties>
|
||||
<jni.platform>linux</jni.platform>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Build the additional JAR that contains the native library. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<copy todir="${nativeJarWorkdir}">
|
||||
<zipfileset src="${defaultJarFile}" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeLibOnlyDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+)$" to="META-INF/native/lib/\1" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeIncludeDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+).h$" to="META-INF/native/include/\1.h" />
|
||||
</copy>
|
||||
<jar destfile="${nativeJarFile}" manifest="${nativeJarWorkdir}/META-INF/MANIFEST.MF" basedir="${nativeJarWorkdir}" index="true" excludes="META-INF/MANIFEST.MF,META-INF/INDEX.LIST" />
|
||||
<attachartifact file="${nativeJarFile}" classifier="${jni.classifier}" type="jar" />
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- invoke the make file to build a static library -->
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="${exe.make}" failonerror="true" resolveexecutable="true">
|
||||
<env key="CC" value="${exe.compiler}"/>
|
||||
<env key="AR" value="${exe.archiver}"/>
|
||||
<env key="LIB_DIR" value="${nativeLibOnlyDir}"/>
|
||||
<env key="OBJ_DIR" value="${nativeObjsOnlyDir}"/>
|
||||
<env key="JNI_PLATFORM" value="${jni.platform}"/>
|
||||
<env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable"/>
|
||||
<env key="LDFLAGS" value="-Wl,--no-as-needed -lrt"/>
|
||||
<env key="LIB_NAME" value="${nativeLibName}"/>
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>freebsd</id>
|
||||
@ -79,6 +191,62 @@
|
||||
<exe.make>gmake</exe.make>
|
||||
<jni.platform>freebsd</jni.platform>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Build the additional JAR that contains the native library. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<copy todir="${nativeJarWorkdir}">
|
||||
<zipfileset src="${defaultJarFile}" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeLibOnlyDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+)$" to="META-INF/native/lib/\1" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeIncludeDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+).h$" to="META-INF/native/include/\1.h" />
|
||||
</copy>
|
||||
<jar destfile="${nativeJarFile}" manifest="${nativeJarWorkdir}/META-INF/MANIFEST.MF" basedir="${nativeJarWorkdir}" index="true" excludes="META-INF/MANIFEST.MF,META-INF/INDEX.LIST" />
|
||||
<attachartifact file="${nativeJarFile}" classifier="${jni.classifier}" type="jar" />
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- invoke the make file to build a static library -->
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="${exe.make}" failonerror="true" resolveexecutable="true">
|
||||
<env key="CC" value="${exe.compiler}"/>
|
||||
<env key="AR" value="${exe.archiver}"/>
|
||||
<env key="LIB_DIR" value="${nativeLibOnlyDir}"/>
|
||||
<env key="OBJ_DIR" value="${nativeObjsOnlyDir}"/>
|
||||
<env key="JNI_PLATFORM" value="${jni.platform}"/>
|
||||
<env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable"/>
|
||||
<env key="LDFLAGS" value="-Wl,--no-as-needed -lrt"/>
|
||||
<env key="LIB_NAME" value="${nativeLibName}"/>
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>openbsd</id>
|
||||
@ -93,6 +261,62 @@
|
||||
<exe.make>gmake</exe.make>
|
||||
<jni.platform>openbsd</jni.platform>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Build the additional JAR that contains the native library. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<copy todir="${nativeJarWorkdir}">
|
||||
<zipfileset src="${defaultJarFile}" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeLibOnlyDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+)$" to="META-INF/native/lib/\1" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeIncludeDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+).h$" to="META-INF/native/include/\1.h" />
|
||||
</copy>
|
||||
<jar destfile="${nativeJarFile}" manifest="${nativeJarWorkdir}/META-INF/MANIFEST.MF" basedir="${nativeJarWorkdir}" index="true" excludes="META-INF/MANIFEST.MF,META-INF/INDEX.LIST" />
|
||||
<attachartifact file="${nativeJarFile}" classifier="${jni.classifier}" type="jar" />
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- invoke the make file to build a static library -->
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="${exe.make}" failonerror="true" resolveexecutable="true">
|
||||
<env key="CC" value="${exe.compiler}"/>
|
||||
<env key="AR" value="${exe.archiver}"/>
|
||||
<env key="LIB_DIR" value="${nativeLibOnlyDir}"/>
|
||||
<env key="OBJ_DIR" value="${nativeObjsOnlyDir}"/>
|
||||
<env key="JNI_PLATFORM" value="${jni.platform}"/>
|
||||
<env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable"/>
|
||||
<env key="LDFLAGS" value="-Wl,--no-as-needed -lrt"/>
|
||||
<env key="LIB_NAME" value="${nativeLibName}"/>
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
@ -108,61 +332,4 @@
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<!-- Build the additional JAR that contains the native library. -->
|
||||
<execution>
|
||||
<id>native-jar</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<copy todir="${nativeJarWorkdir}">
|
||||
<zipfileset src="${defaultJarFile}" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeLibOnlyDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+)$" to="META-INF/native/lib/\1" />
|
||||
</copy>
|
||||
<copy todir="${nativeJarWorkdir}" includeEmptyDirs="false">
|
||||
<zipfileset dir="${nativeIncludeDir}" />
|
||||
<regexpmapper handledirsep="yes" from="^(?:[^/]+/)*([^/]+).h$" to="META-INF/native/include/\1.h" />
|
||||
</copy>
|
||||
<jar destfile="${nativeJarFile}" manifest="${nativeJarWorkdir}/META-INF/MANIFEST.MF" basedir="${nativeJarWorkdir}" index="true" excludes="META-INF/MANIFEST.MF,META-INF/INDEX.LIST" />
|
||||
<attachartifact file="${nativeJarFile}" classifier="${jni.classifier}" type="jar" />
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- invoke the make file to build a static library -->
|
||||
<execution>
|
||||
<id>build-native-lib</id>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<exec executable="${exe.make}" failonerror="true" resolveexecutable="true">
|
||||
<env key="CC" value="${exe.compiler}"/>
|
||||
<env key="AR" value="${exe.archiver}"/>
|
||||
<env key="LIB_DIR" value="${nativeLibOnlyDir}"/>
|
||||
<env key="OBJ_DIR" value="${nativeObjsOnlyDir}"/>
|
||||
<env key="JNI_PLATFORM" value="${jni.platform}"/>
|
||||
<env key="CFLAGS" value="-O3 -Werror -Wno-attributes -fPIC -fno-omit-frame-pointer -Wunused-variable"/>
|
||||
<env key="LDFLAGS" value="-Wl,--no-as-needed -lrt"/>
|
||||
<env key="LIB_NAME" value="${nativeLibName}"/>
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
Loading…
Reference in New Issue
Block a user