Allow for building on a PowerPC

This commit is contained in:
Will Hedgecock 2021-04-14 11:33:25 -05:00
parent 3896f2d414
commit cb1c628bf1
3 changed files with 27 additions and 5 deletions

View File

@ -3,6 +3,7 @@ COMPILE := gcc
COMPILE_ARM32 := arm32-unknown-linux-gnueabi-gcc
COMPILE_ARM32HF := arm32hf-unknown-linux-gnueabi-gcc
COMPILE_ARM64 := aarch64-unknown-linux-gnueabi-gcc
COMPILE_PPC64LE := powerpc64le-linux-gnu-gcc
COMPILE_SOLARIS_X86 := x86_64-sun-solaris2.10-gcc
COMPILE_SOLARIS_SPARC := sparc-sun-solaris2.10-gcc
COMPILE_APPLE := /usr/local/bin/gcc-9
@ -11,6 +12,7 @@ LINK := gcc
LINK_ARM32 := arm32-unknown-linux-gnueabi-gcc
LINK_ARM32HF := arm32hf-unknown-linux-gnueabi-gcc
LINK_ARM64 := aarch64-unknown-linux-gnueabi-gcc
LINK_PPC64LE := powerpc64le-linux-gnu-gcc
LINK_SOLARIS_X86 := x86_64-sun-solaris2.10-gcc
LINK_SOLARIS_SPARC := sparc-sun-solaris2.10-gcc
LINK_APPLE := /usr/local/bin/gcc-9
@ -53,6 +55,7 @@ OBJECTSarmv7 := $(BUILD_DIR)/armv7/SerialPort_Posix.o $(BUILD_DIR)/armv7/Posi
OBJECTSarmv7-hf := $(BUILD_DIR)/armv7-hf/SerialPort_Posix.o $(BUILD_DIR)/armv7-hf/PosixHelperFunctions.o
OBJECTSarmv8_32 := $(BUILD_DIR)/armv8_32/SerialPort_Posix.o $(BUILD_DIR)/armv8_32/PosixHelperFunctions.o
OBJECTSarmv8_64 := $(BUILD_DIR)/armv8_64/SerialPort_Posix.o $(BUILD_DIR)/armv8_64/PosixHelperFunctions.o
OBJECTSppc64le := $(BUILD_DIR)/ppc64le/SerialPort_Posix.o $(BUILD_DIR)/ppc64le/PosixHelperFunctions.o
OBJECTSsolaris32 := $(BUILD_DIR)/solaris_x86/SerialPort_Posix.o $(BUILD_DIR)/solaris_x86/PosixHelperFunctions.o
OBJECTSsolaris64 := $(BUILD_DIR)/solaris_x86_64/SerialPort_Posix.o $(BUILD_DIR)/solaris_x86_64/PosixHelperFunctions.o
OBJECTSsolarisSparc32 := $(BUILD_DIR)/solaris_sparc32/SerialPort_Posix.o $(BUILD_DIR)/solaris_sparc32/PosixHelperFunctions.o
@ -69,6 +72,7 @@ FLAGSarmv7 := -mthumb -mthumb-interwork -march=armv7 -mfloat-abi=soft
FLAGSarmv7hf := -mthumb -mthumb-interwork -march=armv7 -mfloat-abi=hard
FLAGSarmv8_32 := -mthumb -mthumb-interwork -march=armv8-a
FLAGSarmv8_64 := -march=armv8-a
FLAGSppc64le := -mtune=powerpc64le -m64
FLAGSsolaris32 := -m32
FLAGSsolaris64 := -m64
FLAGSsolarisSparc32 := -mno-app-regs -mcpu=v8 -mv8plus -m32
@ -79,13 +83,13 @@ JNI_HEADER := ../com_fazecast_jSerialComm_SerialPort.h
JAVA_CLASS := $(JAVA_CLASS_DIR)/SerialPort.class
# Define phony and suffix rules
.PHONY: all clean linux linux32 linux64 arm armv5 armv6 armv6-hf armv7 armv7-hf armv8_32 armv8_64 solaris solaris32 solaris64 solarisSparc32 solarisSparc64 osx osx64
.PHONY: all clean linux linux32 linux64 arm armv5 armv6 armv6-hf armv7 armv7-hf armv8_32 armv8_64 ppc64le solaris solaris32 solaris64 solarisSparc32 solarisSparc64 osx osx64 osxaarch64
.SUFFIXES:
.SUFFIXES: .cpp .c .o .class .java .h
# Default build target does nothing
all :
$(PRINT) You must specify either linux, arm, solaris, or osx!
$(PRINT) You must specify either linux, arm, solaris, osx, or powerpc!
clean :
$(DELETE) -rf "$(BUILD_DIR)"
$(DELETE) -rf ../*.h
@ -100,6 +104,11 @@ arm : armv5 armv6 armv6-hf armv7 armv7-hf armv8_32 armv8_64
$(DELETE) -rf "`readlink -f $(BUILD_DIR)`"
$(DELETE) -rf ../*.h
# Build all PPC64LE libraries
powerpc : ppc64le
$(DELETE) -rf "`readlink -f $(BUILD_DIR)`"
$(DELETE) -rf ../*.h
# Build all Solaris libraries
solaris : solaris32 solaris64 solarisSparc32 solarisSparc64
$(DELETE) -rf "`readlink -f $(BUILD_DIR)`"
@ -146,6 +155,11 @@ armv8_64 : $(JAVA_CLASS_DIR) $(BUILD_DIR)/armv8_64 $(BUILD_DIR)/armv8_64/$(LIBRA
$(DELETE) -rf $(BUILD_DIR)/armv8_64/*.o
$(COPY) $(BUILD_DIR)/armv8_64/*.* $(RESOURCE_DIR_LINUX)/armv8_64/
# Build architecture-specific POWERPC libraries
ppc64le : $(JAVA_CLASS_DIR) $(BUILD_DIR)/ppc64le $(BUILD_DIR)/ppc64le/$(LIBRARY_NAME_POSIX)
$(DELETE) -rf $(BUILD_DIR)/ppc64le/*.o
$(COPY) $(BUILD_DIR)/ppc64le/*.* $(RESOURCE_DIR_LINUX)/ppc64le/
# Build architecture-specific Solaris libraries
solaris32 : $(JAVA_CLASS_DIR) $(BUILD_DIR)/solaris_x86 $(BUILD_DIR)/solaris_x86/$(LIBRARY_NAME_POSIX)
$(DELETE) -rf $(BUILD_DIR)/solaris_x86/*.o
@ -188,6 +202,8 @@ $(BUILD_DIR)/armv8_32 :
$(MKDIR) -p $@
$(BUILD_DIR)/armv8_64 :
$(MKDIR) -p $@
$(BUILD_DIR)/ppc64le :
$(MKDIR) -p $@
$(BUILD_DIR)/solaris_x86 :
$(MKDIR) -p $@
$(BUILD_DIR)/solaris_x86_64 :
@ -222,6 +238,8 @@ $(BUILD_DIR)/armv8_32/$(LIBRARY_NAME_POSIX) : $(JNI_HEADER) $(OBJECTSarmv8_32)
$(LINK_ARM32) $(LDFLAGS) $(LDFLAGS_POSIX) $(FLAGSarmv8_32) -o $@ $(OBJECTSarmv8_32) $(LIBRARIES_POSIX)
$(BUILD_DIR)/armv8_64/$(LIBRARY_NAME_POSIX) : $(JNI_HEADER) $(OBJECTSarmv8_64)
$(LINK_ARM64) $(LDFLAGS) $(LDFLAGS_POSIX) $(FLAGSarmv8_64) -o $@ $(OBJECTSarmv8_64) $(LIBRARIES_POSIX)
$(BUILD_DIR)/ppc64le/$(LIBRARY_NAME_POSIX) : $(JNI_HEADER) $(OBJECTSppc64le)
$(LINK_PPC64LE) $(LDFLAGS) $(LDFLAGS_POSIX) $(FLAGSppc64le) -o $@ $(OBJECTSppc64le) $(LIBRARIES_POSIX)
$(BUILD_DIR)/solaris_x86/$(LIBRARY_NAME_POSIX) : $(JNI_HEADER) $(OBJECTSsolaris32)
$(LINK_SOLARIS_X86) $(LDFLAGS) $(LDFLAGS_POSIX) $(FLAGSsolaris32) -o $@ $(OBJECTSsolaris32) $(LIBRARIES_POSIX)
$(BUILD_DIR)/solaris_x86_64/$(LIBRARY_NAME_POSIX) : $(JNI_HEADER) $(OBJECTSsolaris64)
@ -254,6 +272,8 @@ $(BUILD_DIR)/armv8_32/%.o : %.c
$(COMPILE_ARM32) $(INCLUDES) $(CFLAGS) $(CFLAGS_POSIX) $(FLAGSarmv8_32) -c $< -o $@
$(BUILD_DIR)/armv8_64/%.o : %.c
$(COMPILE_ARM64) $(INCLUDES) $(CFLAGS) $(CFLAGS_POSIX) $(FLAGSarmv8_64) -c $< -o $@
$(BUILD_DIR)/ppc64le/%.o : %.c
$(COMPILE_PPC64LE) $(INCLUDES) $(CFLAGS) $(CFLAGS_POSIX) $(FLAGSppc64le) -c $< -o $@
$(BUILD_DIR)/solaris_x86/%.o : %.c
$(COMPILE_SOLARIS_X86) $(INCLUDES) $(CFLAGS) $(CFLAGS_POSIX) $(FLAGSsolaris32) -c $< -o $@
$(BUILD_DIR)/solaris_x86_64/%.o : %.c

View File

@ -517,7 +517,7 @@ int setBaudRateCustom(int portFD, baud_rate baudRate)
serInfo.flags &= ~ASYNC_SPD_MASK;
serInfo.flags |= ASYNC_SPD_CUST | ASYNC_LOW_LATENCY;
serInfo.custom_divisor = serInfo.baud_base / baudRate;
if (sersInfo.custom_divisor == 0)
if (serInfo.custom_divisor == 0)
serInfo.custom_divisor = 1;
retVal = ioctl(portFD, TIOCSSERIAL, &serInfo);
}

View File

@ -2,10 +2,10 @@
* SerialPort.java
*
* Created on: Feb 25, 2012
* Last Updated on: Apr 29, 2020
* Last Updated on: Apr 14, 2021
* Author: Will Hedgecock
*
* Copyright (C) 2012-2020 Fazecast, Inc.
* Copyright (C) 2012-2021 Fazecast, Inc.
*
* This file is part of jSerialComm.
*
@ -196,6 +196,8 @@ public final class SerialPort
libraryPath = "Linux/armv8_32";
else if (System.getProperty("os.arch").indexOf("aarch64") >= 0)
libraryPath = "Linux/armv8_64";
else if (System.getProperty("os.arch").indexOf("ppc64le") >= 0)
libraryPath = "Linux/ppc64le";
else if (System.getProperty("os.arch").indexOf("64") >= 0)
libraryPath = "Linux/x86_64";
else