Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMat Booth2018-02-01 11:06:50 -0500
committerAlexander Kurtakov2018-02-08 11:41:27 -0500
commitb50ba14831cb2272c4674e1313e9d9a3b25c6424 (patch)
treedba86a21e43b9f1fb8f263f2dbbd29a332563c14
parent3bb6aaf4b31e626d104af7db849a5ceb941209b1 (diff)
downloadorg.eclipse.cdt-b50ba14831cb2272c4674e1313e9d9a3b25c6424.tar.gz
org.eclipse.cdt-b50ba14831cb2272c4674e1313e9d9a3b25c6424.tar.xz
org.eclipse.cdt-b50ba14831cb2272c4674e1313e9d9a3b25c6424.zip
Bug 530620 - Hook build of native serial port driver into maven build
In the same vein as commit dff6b3bae3d, this commit adds profiles to trigger the build of the serial port component for the current architecture, only when the profile is activated. The serial port makefile is also improved to support building for ppc64 and ppc64le architectures and to honour CFLAGS and LDFLAGS that might be set in the environment, such as during RPM build. I also hooked in the makefile "clean" targets so that invoking "mvn clean verify" will do the right thing. This simplifies the build for downstreams building from source significantly. Change-Id: Ie8cea95d953b256a1f62b77c76370ed7b3d81cee Signed-off-by: Mat Booth <mat.booth@redhat.com>
-rw-r--r--core/org.eclipse.cdt.core.linux/pom.xml75
-rw-r--r--native/org.eclipse.cdt.native.serial/jni/Makefile18
-rw-r--r--native/org.eclipse.cdt.native.serial/pom.xml218
3 files changed, 307 insertions, 4 deletions
diff --git a/core/org.eclipse.cdt.core.linux/pom.xml b/core/org.eclipse.cdt.core.linux/pom.xml
index a0559780e8..a1d9736ee5 100644
--- a/core/org.eclipse.cdt.core.linux/pom.xml
+++ b/core/org.eclipse.cdt.core.linux/pom.xml
@@ -43,6 +43,21 @@
<goal>run</goal>
</goals>
</execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./library">
+ <arg value="ARCH=x86" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
</plugins>
@@ -75,6 +90,21 @@
<goal>run</goal>
</goals>
</execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./library">
+ <arg value="ARCH=x86_64" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
</plugins>
@@ -107,6 +137,21 @@
<goal>run</goal>
</goals>
</execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./library">
+ <arg value="ARCH=ppc" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
</plugins>
@@ -139,6 +184,21 @@
<goal>run</goal>
</goals>
</execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./library">
+ <arg value="ARCH=ppc64" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
</plugins>
@@ -171,6 +231,21 @@
<goal>run</goal>
</goals>
</execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./library">
+ <arg value="ARCH=ppc64le" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
</plugins>
diff --git a/native/org.eclipse.cdt.native.serial/jni/Makefile b/native/org.eclipse.cdt.native.serial/jni/Makefile
index fb4cf6fcc4..1966338490 100644
--- a/native/org.eclipse.cdt.native.serial/jni/Makefile
+++ b/native/org.eclipse.cdt.native.serial/jni/Makefile
@@ -16,6 +16,8 @@ endif
OS_DIR = ../os
+CFLAGS += -fPIC -D_REENTRANT
+
UNAME = $(shell uname)
ifeq ($(UNAME),Linux)
LIBS = \
@@ -37,7 +39,7 @@ endif
all: $(LIBS)
clean :
- rm $(LIBS)
+ $(RM) $(LIBS)
rebuild: clean all
@@ -51,12 +53,20 @@ $(OS_DIR)/win32/x86_64/serial.dll: serial.c
$(OS_DIR)/linux/x86/libserial.so: serial.c
mkdir -p $(dir $@)
- gcc -m32 -fPIC -D_REENTRANT -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -shared -o $@ serial.c
+ gcc -m32 $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ serial.c
$(OS_DIR)/linux/x86_64/libserial.so: serial.c
mkdir -p $(dir $@)
- gcc -m64 -fPIC -D_REENTRANT -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -shared -o $@ serial.c
+ gcc -m64 $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ serial.c
+
+$(OS_DIR)/linux/ppc64/libserial.so: serial.c
+ mkdir -p $(dir $@)
+ gcc -m64 $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ serial.c
+
+$(OS_DIR)/linux/ppc64le/libserial.so: serial.c
+ mkdir -p $(dir $@)
+ gcc -m64 -mcpu=power8 $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(LDFLAGS) -shared -o $@ serial.c
$(OS_DIR)/macosx/x86_64/libserial.jnilib: serial.c
mkdir -p $(dir $@)
- clang -fPIC -D_REENTRANT -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -dynamiclib -o $@ serial.c
+ clang $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin $(LDFLAGS) -dynamiclib -o $@ serial.c
diff --git a/native/org.eclipse.cdt.native.serial/pom.xml b/native/org.eclipse.cdt.native.serial/pom.xml
new file mode 100644
index 0000000000..cbf4ae085b
--- /dev/null
+++ b/native/org.eclipse.cdt.native.serial/pom.xml
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018 Red Hat, Inc. and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Distribution License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/org/documents/edl-v10.php
+
+ Contributors:
+ Mat Booth (Red Hat) - initial implementation
+-->
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.cdt</groupId>
+ <artifactId>cdt-parent</artifactId>
+ <version>9.3.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <version>1.1.0-SNAPSHOT</version>
+ <artifactId>org.eclipse.cdt.native.serial</artifactId>
+ <packaging>eclipse-plugin</packaging>
+
+ <profiles>
+ <profile>
+ <id>build-native.linux.x86</id>
+ <activation>
+ <property>
+ <name>native</name>
+ <value>linux.x86</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/x86/libserial.so" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/x86/libserial.so" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>build-native.linux.x86_64</id>
+ <activation>
+ <property>
+ <name>native</name>
+ <value>linux.x86_64</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/x86_64/libserial.so" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/x86_64/libserial.so" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>build-native.linux.ppc64</id>
+ <activation>
+ <property>
+ <name>native</name>
+ <value>linux.ppc64</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/ppc64/libserial.so" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/ppc64/libserial.so" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>build-native.linux.ppc64le</id>
+ <activation>
+ <property>
+ <name>native</name>
+ <value>linux.ppc64le</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>natives</id>
+ <phase>process-resources</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/ppc64le/libserial.so" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>clean-natives</id>
+ <phase>clean</phase>
+ <configuration>
+ <target>
+ <exec executable="make" newenvironment="false" dir="./jni">
+ <arg value="LIBS=../os/linux/ppc64le/libserial.so" />
+ <arg value="clean" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>

Back to the top