diff options
author | Mat Booth | 2018-02-01 16:06:50 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2018-02-08 16:41:27 +0000 |
commit | b50ba14831cb2272c4674e1313e9d9a3b25c6424 (patch) | |
tree | dba86a21e43b9f1fb8f263f2dbbd29a332563c14 /native | |
parent | 3bb6aaf4b31e626d104af7db849a5ceb941209b1 (diff) | |
download | org.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>
Diffstat (limited to 'native')
-rw-r--r-- | native/org.eclipse.cdt.native.serial/jni/Makefile | 18 | ||||
-rw-r--r-- | native/org.eclipse.cdt.native.serial/pom.xml | 218 |
2 files changed, 232 insertions, 4 deletions
diff --git a/native/org.eclipse.cdt.native.serial/jni/Makefile b/native/org.eclipse.cdt.native.serial/jni/Makefile index fb4cf6fcc41..19663384905 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 00000000000..cbf4ae085b1 --- /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> |