1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 08:55:25 +02:00

Bug 530620 - Hook build of native serial port driver into maven build

In the same vein as commit dff6b3bae3, 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>
This commit is contained in:
Mat Booth 2018-02-01 16:06:50 +00:00 committed by Alexander Kurtakov
parent 3bb6aaf4b3
commit b50ba14831
3 changed files with 307 additions and 4 deletions

View file

@ -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>

View file

@ -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

View file

@ -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>