From 861726cefaade800136d128fbb72225b552a69a7 Mon Sep 17 00:00:00 2001 From: Thad House Date: Fri, 4 Nov 2016 15:17:17 -0700 Subject: [PATCH] Adds gradle task to fix NI libraries whenever new ones are added. (#325) Generates genlinks, and modifies headers to make them self contained --- build.gradle | 2 + hal/build.gradle | 17 +--- hal/include/HAL/ChipObject.h | 11 ++- .../nRoboRIO_FPGANamespace/tAI.h | 3 +- .../nRoboRIO_FPGANamespace/tAO.h | 3 +- .../nRoboRIO_FPGANamespace/tAccel.h | 3 +- .../nRoboRIO_FPGANamespace/tAccumulator.h | 3 +- .../nRoboRIO_FPGANamespace/tAlarm.h | 3 +- .../nRoboRIO_FPGANamespace/tAnalogTrigger.h | 3 +- .../nRoboRIO_FPGANamespace/tBIST.h | 3 +- .../nRoboRIO_FPGANamespace/tCounter.h | 3 +- .../nRoboRIO_FPGANamespace/tDIO.h | 3 +- .../nRoboRIO_FPGANamespace/tDMA.h | 3 +- .../nRoboRIO_FPGANamespace/tEncoder.h | 3 +- .../nRoboRIO_FPGANamespace/tGlobal.h | 3 +- .../nRoboRIO_FPGANamespace/tInterrupt.h | 3 +- .../nRoboRIO_FPGANamespace/tPWM.h | 3 +- .../nRoboRIO_FPGANamespace/tPower.h | 3 +- .../nRoboRIO_FPGANamespace/tRelay.h | 3 +- .../nRoboRIO_FPGANamespace/tSPI.h | 3 +- .../nRoboRIO_FPGANamespace/tSysWatchdog.h | 3 +- .../FRC_NetworkCommunication/FRCComm.h | 8 +- .../FRC_NetworkCommunication/LoadOut.h | 2 +- .../FRC_NetworkCommunication/UsageReporting.h | 2 +- ni-libraries/lib/genlinks.bat | 24 ++++++ ni-libraries/ni-libraries.gradle | 79 +++++++++++++++++++ 26 files changed, 155 insertions(+), 44 deletions(-) create mode 100644 ni-libraries/lib/genlinks.bat create mode 100644 ni-libraries/ni-libraries.gradle diff --git a/build.gradle b/build.gradle index 3b9a43a644..013b47c265 100644 --- a/build.gradle +++ b/build.gradle @@ -47,6 +47,8 @@ subprojects { apply from: 'cppSettings.gradle' +apply from: 'ni-libraries/ni-libraries.gradle' + task wrapper(type: Wrapper) { gradleVersion = '3.0' } diff --git a/hal/build.gradle b/hal/build.gradle index dfbe956341..e08988525a 100644 --- a/hal/build.gradle +++ b/hal/build.gradle @@ -24,11 +24,11 @@ model { sources { cpp { source { - srcDirs = ["lib/athena", niLibraryHeadersChipObject, niLibraryHeadersRoot, "lib/shared"] + srcDirs = ["lib/athena", niLibraryHeadersRoot, "lib/shared"] includes = ["**/*.cpp"] } exportedHeaders { - srcDirs = ["include", niLibraryHeadersChipObject, niLibraryHeadersRoot, wpiUtilInclude] + srcDirs = ["include", niLibraryHeadersRoot, wpiUtilInclude] } } } @@ -71,7 +71,7 @@ task halZip(type: Zip) { def normalizedIt = it.toString().replace('/', '\\') def normalizedWPIUtil = wpiUtilInclude.toString().replace('/', '\\') // exclude the wpiUtil library, and any NI libraries (NI libraries grabbed later) - if (normalizedIt != normalizedWPIUtil && !it.toString().contains('ni-libraries') ) { + if (normalizedIt != normalizedWPIUtil) { from(it) { into 'include' // We don't want to include any of the .cpp files that are in some of the header directories @@ -89,17 +89,6 @@ task halZip(type: Zip) { } } - // Grab the NI headers excluding the ChipObject folder - from(project.file('../ni-libraries/include')) { - exclude 'FRC_FPGA_ChipObject/' - into 'include' - } - - // Grab the ChipObject headers manually and put them in the right spot - from(project.file('../ni-libraries/include/FRC_FPGA_ChipObject')) { - into 'include' - } - // Finally, include all of the shared library objects from the ni directory from(project.file('../ni-libraries/lib')) { into 'lib' diff --git a/hal/include/HAL/ChipObject.h b/hal/include/HAL/ChipObject.h index b7bf3204ef..b01354a239 100644 --- a/hal/include/HAL/ChipObject.h +++ b/hal/include/HAL/ChipObject.h @@ -10,12 +10,6 @@ #pragma GCC diagnostic ignored "-Wpedantic" #pragma GCC diagnostic ignored "-Wignored-qualifiers" -#include "FRC_FPGA_ChipObject/tDMAChannelDescriptor.h" // NOLINT -#include "FRC_FPGA_ChipObject/tDMAManager.h" // NOLINT -#include "FRC_FPGA_ChipObject/tInterruptManager.h" // NOLINT -#include "FRC_FPGA_ChipObject/tSystem.h" // NOLINT -#include "FRC_FPGA_ChipObject/tSystemInterface.h" // NOLINT - #include #include "FRC_FPGA_ChipObject/RoboRIO_FRC_ChipObject_Aliases.h" @@ -38,6 +32,11 @@ #include "FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tRelay.h" #include "FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSPI.h" #include "FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSysWatchdog.h" +#include "FRC_FPGA_ChipObject/tDMAChannelDescriptor.h" +#include "FRC_FPGA_ChipObject/tDMAManager.h" +#include "FRC_FPGA_ChipObject/tInterruptManager.h" +#include "FRC_FPGA_ChipObject/tSystem.h" +#include "FRC_FPGA_ChipObject/tSystemInterface.h" namespace hal { using namespace nFPGA; diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAI.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAI.h index 8424c65d92..53f9183c55 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAI.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAI.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_AI_h__ #define __nFRC_2017_17_0_2_AI_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAO.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAO.h index 018ccfcac7..5fe3c04862 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAO.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAO.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_AO_h__ #define __nFRC_2017_17_0_2_AO_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccel.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccel.h index d6808a140a..62a3370a9f 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccel.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccel.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Accel_h__ #define __nFRC_2017_17_0_2_Accel_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccumulator.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccumulator.h index 2aec824dbb..e0215b2bee 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccumulator.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAccumulator.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Accumulator_h__ #define __nFRC_2017_17_0_2_Accumulator_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAlarm.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAlarm.h index 7643a7996f..8f6452f685 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAlarm.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAlarm.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Alarm_h__ #define __nFRC_2017_17_0_2_Alarm_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAnalogTrigger.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAnalogTrigger.h index 1155e7beda..65119b251c 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAnalogTrigger.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tAnalogTrigger.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_AnalogTrigger_h__ #define __nFRC_2017_17_0_2_AnalogTrigger_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tBIST.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tBIST.h index 303a263e28..c42d7b9f29 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tBIST.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tBIST.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_BIST_h__ #define __nFRC_2017_17_0_2_BIST_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tCounter.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tCounter.h index cb5e36209d..f2986f50cf 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tCounter.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tCounter.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Counter_h__ #define __nFRC_2017_17_0_2_Counter_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDIO.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDIO.h index 05c286a2ed..640d116b5b 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDIO.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDIO.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_DIO_h__ #define __nFRC_2017_17_0_2_DIO_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDMA.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDMA.h index 037a5e36f2..9f8e85d943 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDMA.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tDMA.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_DMA_h__ #define __nFRC_2017_17_0_2_DMA_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tEncoder.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tEncoder.h index c82df50f7a..d558c4da14 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tEncoder.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tEncoder.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Encoder_h__ #define __nFRC_2017_17_0_2_Encoder_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tGlobal.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tGlobal.h index 79a7e41f17..792882805b 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tGlobal.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tGlobal.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Global_h__ #define __nFRC_2017_17_0_2_Global_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tInterrupt.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tInterrupt.h index cfaef29c35..7a9d86cbda 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tInterrupt.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tInterrupt.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Interrupt_h__ #define __nFRC_2017_17_0_2_Interrupt_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPWM.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPWM.h index 6097aceb17..3200b34fe2 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPWM.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPWM.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_PWM_h__ #define __nFRC_2017_17_0_2_PWM_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPower.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPower.h index e4a82dc8c9..42abe5de4d 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPower.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tPower.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Power_h__ #define __nFRC_2017_17_0_2_Power_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tRelay.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tRelay.h index ccf4d91b7c..049372079e 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tRelay.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tRelay.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_Relay_h__ #define __nFRC_2017_17_0_2_Relay_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSPI.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSPI.h index 33cdcc4ce6..9f2f27e000 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSPI.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSPI.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_SPI_h__ #define __nFRC_2017_17_0_2_SPI_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSysWatchdog.h b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSysWatchdog.h index 19d7cef31d..fd17f2cdd2 100644 --- a/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSysWatchdog.h +++ b/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace/tSysWatchdog.h @@ -4,7 +4,8 @@ #ifndef __nFRC_2017_17_0_2_SysWatchdog_h__ #define __nFRC_2017_17_0_2_SysWatchdog_h__ -#include "tSystemInterface.h" +#include "../tSystem.h" +#include "../tSystemInterface.h" namespace nFPGA { diff --git a/ni-libraries/include/FRC_NetworkCommunication/FRCComm.h b/ni-libraries/include/FRC_NetworkCommunication/FRCComm.h index 32e0fb99fb..a44930abda 100644 --- a/ni-libraries/include/FRC_NetworkCommunication/FRCComm.h +++ b/ni-libraries/include/FRC_NetworkCommunication/FRCComm.h @@ -14,8 +14,8 @@ #ifndef __FRC_COMM_H__ #define __FRC_COMM_H__ -#ifdef WIN32 -# include +#ifdef _WIN32 +# include #ifdef USE_THRIFT # define EXPORT_FUNC # else @@ -33,7 +33,7 @@ #define ERR_FRCSystem_NetCommNotResponding -44049 #define ERR_FRCSystem_NoDSConnection -44018 -#ifdef WIN32 +#ifdef _WIN32 # define __DEPRECATED__ __declspec(deprecated) #else # define __DEPRECATED__ __attribute__((__deprecated__)) @@ -129,7 +129,7 @@ extern "C" { int EXPORT_FUNC FRC_NetworkCommunication_sendError(int isError, int32_t errorCode, int isLVCode, const char *details, const char *location, const char *callStack); -#ifdef WIN32 +#ifdef _WIN32 void EXPORT_FUNC setNewDataSem(HANDLE); #elif defined (__vxworks) void EXPORT_FUNC setNewDataSem(SEM_ID); diff --git a/ni-libraries/include/FRC_NetworkCommunication/LoadOut.h b/ni-libraries/include/FRC_NetworkCommunication/LoadOut.h index c7ee1f3734..38cba2672d 100644 --- a/ni-libraries/include/FRC_NetworkCommunication/LoadOut.h +++ b/ni-libraries/include/FRC_NetworkCommunication/LoadOut.h @@ -2,7 +2,7 @@ #ifndef __LoadOut_h__ #define __LoadOut_h__ -#ifdef WIN32 +#ifdef _WIN32 #include #define EXPORT_FUNC __declspec(dllexport) __cdecl #elif defined (__vxworks) diff --git a/ni-libraries/include/FRC_NetworkCommunication/UsageReporting.h b/ni-libraries/include/FRC_NetworkCommunication/UsageReporting.h index 2d4ba9ba00..d0eafaf1b1 100644 --- a/ni-libraries/include/FRC_NetworkCommunication/UsageReporting.h +++ b/ni-libraries/include/FRC_NetworkCommunication/UsageReporting.h @@ -2,7 +2,7 @@ #ifndef __UsageReporting_h__ #define __UsageReporting_h__ -#ifdef WIN32 +#ifdef _WIN32 #include #define EXPORT_FUNC __declspec(dllexport) __cdecl #elif defined (__vxworks) diff --git a/ni-libraries/lib/genlinks.bat b/ni-libraries/lib/genlinks.bat new file mode 100644 index 0000000000..8c3a5f8ea5 --- /dev/null +++ b/ni-libraries/lib/genlinks.bat @@ -0,0 +1,24 @@ +@echo off +setlocal enabledelayedexpansion + +mkdir tmp + +for %%F in (lib*.so.*) do IF /i "%%~xF" NEQ ".so" ( + set libout=%%~nF + del !libout! + echo OUTPUT_FORMAT^(elf32-littlearm^)> tmp\!libout! + echo GROUP ^( %%F ^)>> tmp\!libout! +) + +REM Do a second round from the temp folder + +cd tmp + +for %%F in (lib*.so.*) do IF /i "%%~xF" NEQ ".so" ( + set libout=%%~nF + del !libout! + echo OUTPUT_FORMAT^(elf32-littlearm^)> !libout! + echo GROUP ^( %%F ^)>> !libout! +) + +cd .. diff --git a/ni-libraries/ni-libraries.gradle b/ni-libraries/ni-libraries.gradle new file mode 100644 index 0000000000..487dd0e58b --- /dev/null +++ b/ni-libraries/ni-libraries.gradle @@ -0,0 +1,79 @@ +import org.gradle.internal.os.OperatingSystem +import org.apache.tools.ant.filters.*; + +task patchNiLibraries() { + doLast { + // Patch ChipObject headers to be self contained + FileTree chipTree = fileTree(dir: "$rootDir/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace") + chipTree.each {File file -> + String contents = file.getText( 'UTF-8' ) + contents = contents.replaceAll( '#include \"tSystemInterface.h\"', '#include \"../tSystem.h\"\r\n#include \"../tSystemInterface.h\"' ) + file.write( contents, 'UTF-8' ) + } + + // Patch NetComm headers to work on Windows + FileTree netTree = fileTree(dir: "$rootDir/ni-libraries/include/FRC_NetworkCommunication") + netTree.each {File file -> + String contents = file.getText( 'UTF-8' ) + contents = contents.replaceAll( '#ifdef WIN32', '#ifdef _WIN32' ) + contents = contents.replaceAll( '# include ', '# include ' ) + file.write( contents, 'UTF-8' ) + } + + + + // Generate genlinks + exec { + workingDir "$rootDir/ni-libraries/lib" + if (OperatingSystem.current().isWindows()) { + commandLine "$rootDir/ni-libraries/lib/genlinks.bat" + } else { + executable "genlinks" + } + } + exec { + workingDir "$rootDir/ni-libraries/lib" + if (OperatingSystem.current().isWindows()) { + commandLine "$rootDir/ni-libraries/lib/genlinks.bat" + } else { + executable "genlinks" + } + } + exec { + workingDir "$rootDir/ni-libraries/lib" + if (OperatingSystem.current().isWindows()) { + commandLine "$rootDir/ni-libraries/lib/genlinks.bat" + } else { + executable "genlinks" + } + } + exec { + workingDir "$rootDir/ni-libraries/lib" + if (OperatingSystem.current().isWindows()) { + commandLine "$rootDir/ni-libraries/lib/genlinks.bat" + } else { + executable "genlinks" + } + } + exec { + workingDir "$rootDir/ni-libraries/lib" + if (OperatingSystem.current().isWindows()) { + commandLine "$rootDir/ni-libraries/lib/genlinks.bat" + } else { + executable "genlinks" + } + } + if (OperatingSystem.current().isWindows()) { + copy { + from "$rootDir/ni-libraries/lib/tmp" + into "$rootDir/ni-libraries/lib" + filter(FixCrLfFilter.class, + eol:FixCrLfFilter.CrLf.newInstance("lf")) + } + delete { + delete "$rootDir/ni-libraries/lib/tmp" + } + } + + } +}