From 9b831ed34c636466dd0b51c6da0474a6e442208f Mon Sep 17 00:00:00 2001 From: Patrick Plenefisch Date: Fri, 2 May 2014 17:54:01 -0400 Subject: [PATCH] Reverting back to static .a files for C++ and fixing lots of other assorted items --- Building.md | 29 ++ CMakeLists.txt | 2 +- cmake/pom.xml | 4 +- .../META-INF/MANIFEST.MF | 3 +- .../plugin.xml | 2 +- .../resources/templates/.cproject | 36 +- .../cpp/launching/DeployLaunchShortcut.java | 210 ++++++------ .../plugins/cpp/launching/RSEUtils.java | 7 +- .../src/main/resources/cpp-zip/ant/build.xml | 15 +- .../resources/cpp-zip/ant/debugjavaprogram | 6 - .../main/resources/cpp-zip/ant/runcppprogram | 6 - .../main/resources/cpp-zip/ant/runjavaprogram | 6 - hal/CMakeLists.txt | 4 +- hal/include/HAL/Analog.h | 66 ---- hal/include/HAL/Analog.hpp | 78 +++++ hal/include/HAL/{CAN.h => CAN.hpp} | 14 +- hal/include/HAL/Digital.h | 141 -------- hal/include/HAL/Digital.hpp | 159 +++++++++ hal/include/HAL/{Errors.h => Errors.hpp} | 6 +- hal/include/HAL/HAL.h | 300 ----------------- hal/include/HAL/HAL.hpp | 312 ++++++++++++++++++ hal/include/HAL/Interrupts.h | 27 -- hal/include/HAL/Interrupts.hpp | 26 ++ hal/include/HAL/Notifier.h | 17 - hal/include/HAL/Notifier.hpp | 15 + .../HAL/{Semaphore.h => Semaphore.hpp} | 20 +- hal/include/HAL/Solenoid.h | 17 - hal/include/HAL/Solenoid.hpp | 16 + hal/include/HAL/Task.h | 68 ---- hal/include/HAL/Task.hpp | 62 ++++ hal/include/HAL/Utilities.h | 18 - hal/include/HAL/Utilities.hpp | 17 + .../HAL/cpp/{Resource.h => Resource.hpp} | 9 +- hal/include/HAL/cpp/StackTrace.h | 15 - hal/include/HAL/cpp/StackTrace.hpp | 13 + .../cpp/{Synchronized.h => Synchronized.hpp} | 24 +- hal/include/{Log.h => Log.hpp} | 5 +- hal/lib/Athena/Analog.cpp | 13 +- hal/lib/Athena/ChipObject.h | 6 +- hal/lib/Athena/ChipObject/tSystemInterface.h | 6 +- hal/lib/Athena/Digital.cpp | 23 +- hal/lib/Athena/HAL.cpp | 255 +++++++++----- hal/lib/Athena/Interrupts.cpp | 96 +++--- hal/lib/Athena/Notifier.cpp | 58 ++-- hal/lib/Athena/Port.h | 16 +- hal/lib/Athena/Semaphore.cpp | 4 +- hal/lib/Athena/Solenoid.cpp | 6 +- hal/lib/Athena/Task.cpp | 8 +- hal/lib/Athena/Utilities.cpp | 40 +-- hal/lib/Athena/cpp/Resource.cpp | 4 +- hal/lib/Athena/cpp/StackTrace.cpp | 4 +- hal/lib/Athena/cpp/Synchronized.cpp | 4 +- hal/lib/Athena/i2clib/i2c-lib.h | 5 +- networktables/cpp/CMakeLists.txt | 4 +- .../client/ClientConnectionState.h | 1 + ni-libraries/genlinks | 11 + ni-libraries/libFRC_FPGA_ChipObject.so | 2 + ni-libraries/libFRC_NetworkCommunication.so | 2 + ni-libraries/libNiFpga.so | 2 + ni-libraries/libNiFpga.so.13 | Bin ni-libraries/libNiFpgaLv.so | 2 + ni-libraries/libNiFpgaLv.so.13 | Bin ni-libraries/libNiRioSrv.so | 2 + ni-libraries/libNiRioSrv.so.13 | Bin ni-libraries/libRoboRIO_FRC_ChipObject.so | 2 + ni-libraries/libi2c.so | 2 + ni-libraries/libni_emb.so | 2 + ni-libraries/libni_emb.so.6 | Bin ni-libraries/libni_rtlog.so | 2 + ni-libraries/libni_rtlog.so.2 | Bin ni-libraries/libnirio_emb_can.so | 2 + ni-libraries/libnirio_emb_can.so.14 | Bin ni-libraries/libspi.so | 2 + ni-libraries/libvisa.so | Bin wpilibc/CMakeLists.txt | 4 +- wpilibc/include/ADXL345_I2C.h | 7 +- wpilibc/include/ADXL345_SPI.h | 7 +- wpilibc/include/Accelerometer.h | 6 +- wpilibc/include/AnalogChannel.h | 14 +- wpilibc/include/AnalogModule.h | 14 +- wpilibc/include/AnalogTrigger.h | 11 +- wpilibc/include/AnalogTriggerOutput.h | 11 +- wpilibc/include/Base.h | 7 +- wpilibc/include/CANJaguar.h | 11 +- wpilibc/include/Commands/Scheduler.h | 2 +- wpilibc/include/Compressor.h | 17 +- wpilibc/include/Controller.h | 9 +- wpilibc/include/Counter.h | 18 +- wpilibc/include/CounterBase.h | 13 +- wpilibc/include/Dashboard.h | 12 +- wpilibc/include/DashboardBase.h | 15 +- wpilibc/include/DigitalInput.h | 16 +- wpilibc/include/DigitalModule.h | 21 +- wpilibc/include/DigitalOutput.h | 10 +- wpilibc/include/DigitalSource.h | 9 +- wpilibc/include/DoubleSolenoid.h | 19 +- wpilibc/include/DriverStation.h | 99 ++++-- wpilibc/include/DriverStationEnhancedIO.h | 12 +- wpilibc/include/DriverStationLCD.h | 24 +- wpilibc/include/Encoder.h | 27 +- wpilibc/include/Error.h | 26 +- wpilibc/include/ErrorBase.h | 30 +- wpilibc/include/GearTooth.h | 9 +- wpilibc/include/GenericHID.h | 18 +- wpilibc/include/Gyro.h | 9 +- wpilibc/include/HiTechnicColorSensor.h | 26 +- wpilibc/include/HiTechnicCompass.h | 7 +- wpilibc/include/I2C.h | 12 +- wpilibc/include/InterruptableSensorBase.h | 11 +- wpilibc/include/IterativeRobot.h | 22 +- wpilibc/include/Jaguar.h | 9 +- wpilibc/include/Joystick.h | 30 +- wpilibc/include/Kinect.h | 28 +- wpilibc/include/KinectStick.h | 7 +- wpilibc/include/Module.h | 20 +- wpilibc/include/MotorSafety.h | 9 +- wpilibc/include/MotorSafetyHelper.h | 8 +- .../NetworkCommunication/symModuleLink.h | 2 +- wpilibc/include/Notifier.h | 13 +- wpilibc/include/PIDController.h | 46 ++- wpilibc/include/PIDOutput.h | 6 +- wpilibc/include/PIDSource.h | 8 +- wpilibc/include/PWM.h | 113 ++++--- wpilibc/include/Preferences.h | 22 +- wpilibc/include/Relay.h | 28 +- wpilibc/include/Resource.h | 10 +- wpilibc/include/RobotBase.h | 26 +- wpilibc/include/RobotDrive.h | 47 +-- wpilibc/include/SPI.h | 14 +- wpilibc/include/SafePWM.h | 8 +- wpilibc/include/SensorBase.h | 25 +- wpilibc/include/SerialPort.h | 23 +- wpilibc/include/Servo.h | 26 +- wpilibc/include/SimpleRobot.h | 12 +- wpilibc/include/Skeleton.h | 22 +- wpilibc/include/Solenoid.h | 16 +- wpilibc/include/SolenoidBase.h | 13 +- wpilibc/include/SpeedController.h | 13 +- wpilibc/include/Talon.h | 9 +- wpilibc/include/Task.h | 15 +- wpilibc/include/Timer.h | 9 +- wpilibc/include/Ultrasonic.h | 31 +- wpilibc/include/Utility.h | 7 +- wpilibc/include/Victor.h | 9 +- wpilibc/include/WPIErrors.h | 5 +- wpilibc/include/WPILib.h | 7 +- wpilibc/lib/CANJaguar.cpp | 9 +- wpilibc/lib/Commands/Scheduler.cpp | 2 +- wpilibc/lib/Dashboard.cpp | 2 +- wpilibc/lib/DigitalModule.cpp | 2 +- wpilibc/lib/DriverStation.cpp | 4 +- wpilibc/lib/DriverStationEnhancedIO.cpp | 2 +- wpilibc/lib/DriverStationLCD.cpp | 2 +- wpilibc/lib/Error.cpp | 2 +- wpilibc/lib/ErrorBase.cpp | 6 +- wpilibc/lib/I2C.cpp | 2 +- wpilibc/lib/IterativeRobot.cpp | 2 +- wpilibc/lib/Kinect.cpp | 2 +- wpilibc/lib/PIDController.cpp | 2 +- wpilibc/lib/Preferences.cpp | 2 +- wpilibc/lib/RobotBase.cpp | 2 +- wpilibc/lib/SPI.cpp | 2 +- wpilibc/lib/Timer.cpp | 4 +- wpilibc/lib/Utility.cpp | 4 +- wpilibj/wpilibJavaJNI/CMakeLists.txt | 4 +- wpilibj/wpilibJavaJNI/lib/AnalogJNI.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/CANJNI.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/CounterJNI.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/DIOJNI.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/EncoderJNI.cpp | 4 +- .../lib/FRCNetworkCommunicationsLibrary.cpp | 6 +- wpilibj/wpilibJavaJNI/lib/HALUtil.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/I2CJNI.cpp | 2 +- wpilibj/wpilibJavaJNI/lib/InterruptJNI.cpp | 2 +- wpilibj/wpilibJavaJNI/lib/JNIWrapper.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/PWMJNI.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/RelayJNI.cpp | 4 +- wpilibj/wpilibJavaJNI/lib/SPIJNI.cpp | 2 +- 178 files changed, 1901 insertions(+), 1846 deletions(-) create mode 100644 Building.md delete mode 100644 eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/resources/cpp-zip/ant/debugjavaprogram delete mode 100644 eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/resources/cpp-zip/ant/runcppprogram delete mode 100644 eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/resources/cpp-zip/ant/runjavaprogram delete mode 100644 hal/include/HAL/Analog.h create mode 100644 hal/include/HAL/Analog.hpp rename hal/include/HAL/{CAN.h => CAN.hpp} (56%) delete mode 100644 hal/include/HAL/Digital.h create mode 100644 hal/include/HAL/Digital.hpp rename hal/include/HAL/{Errors.h => Errors.hpp} (96%) delete mode 100644 hal/include/HAL/HAL.h create mode 100644 hal/include/HAL/HAL.hpp delete mode 100644 hal/include/HAL/Interrupts.h create mode 100644 hal/include/HAL/Interrupts.hpp delete mode 100644 hal/include/HAL/Notifier.h create mode 100644 hal/include/HAL/Notifier.hpp rename hal/include/HAL/{Semaphore.h => Semaphore.hpp} (81%) delete mode 100644 hal/include/HAL/Solenoid.h create mode 100644 hal/include/HAL/Solenoid.hpp delete mode 100644 hal/include/HAL/Task.h create mode 100644 hal/include/HAL/Task.hpp delete mode 100644 hal/include/HAL/Utilities.h create mode 100644 hal/include/HAL/Utilities.hpp rename hal/include/HAL/cpp/{Resource.h => Resource.hpp} (93%) delete mode 100644 hal/include/HAL/cpp/StackTrace.h create mode 100644 hal/include/HAL/cpp/StackTrace.hpp rename hal/include/HAL/cpp/{Synchronized.h => Synchronized.hpp} (91%) rename hal/include/{Log.h => Log.hpp} (97%) create mode 100755 ni-libraries/genlinks create mode 100644 ni-libraries/libFRC_FPGA_ChipObject.so create mode 100644 ni-libraries/libFRC_NetworkCommunication.so create mode 100644 ni-libraries/libNiFpga.so mode change 100644 => 100755 ni-libraries/libNiFpga.so.13 create mode 100644 ni-libraries/libNiFpgaLv.so mode change 100644 => 100755 ni-libraries/libNiFpgaLv.so.13 create mode 100644 ni-libraries/libNiRioSrv.so mode change 100644 => 100755 ni-libraries/libNiRioSrv.so.13 create mode 100644 ni-libraries/libRoboRIO_FRC_ChipObject.so create mode 100644 ni-libraries/libi2c.so create mode 100644 ni-libraries/libni_emb.so mode change 100644 => 100755 ni-libraries/libni_emb.so.6 create mode 100644 ni-libraries/libni_rtlog.so mode change 100644 => 100755 ni-libraries/libni_rtlog.so.2 create mode 100644 ni-libraries/libnirio_emb_can.so mode change 100644 => 100755 ni-libraries/libnirio_emb_can.so.14 create mode 100644 ni-libraries/libspi.so mode change 100644 => 100755 ni-libraries/libvisa.so diff --git a/Building.md b/Building.md new file mode 100644 index 0000000000..518620bd55 --- /dev/null +++ b/Building.md @@ -0,0 +1,29 @@ +Building everything requires Maven +mvn package -DembeddedJDKHome=/home/patrick/Downloads/arm-jdk1.7.0_45/ +TODO... Explain maven.... +TODO.. how to import into eclipse correctly... + +Building C++ only +------------------ + +C++ requires cmake if not run from maven, and is much faster. +Make a new directory and then run: +``` +mkdir build && cd build +cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm-toolchain.cmake +make # multicore add -j(num of cpu cores + 1), so -j3 on dual core for faster compile +make install DESTDIR=/some/dir/you/want/to/put/all/headers/and/libs #optional +`` + +Alternatively, if you like IDE's, you can import it directly into QtDeveloper, or a number of other IDE's such as Code::Blocks or Eclipse. See CMake documentation for details. +Eclipse demo: +``` +cd .. +mkdir build && cd build +cmake -DCMAKE_TOOLCHAIN_FILE=../allwpilib/arm-toolchain.cmake .. -G "Eclipse CDT4 - Unix Makefiles" +``` +and then import that directory into eclipse. Eclipse will detect a CDT project and standard tools will work. + +GCC versions +------------ +Update arm-toolchain.cmake if the triplet changes (eg using Ubuntu repo arm compiler is arm-linux-gnueabi) or in a non-standard location. Currently it assumes that the compiler is on the path. diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d4db94500..2da30cb569 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.8) project(All-WPILib) set(CMAKE_BUILD_TYPE Debug) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat=2 -Wextra -Wno-unused-parameter") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat=2 -Wextra -Wno-unused-parameter -fPIC -Werror") SET(CMAKE_SKIP_BUILD_RPATH TRUE) file(GLOB_RECURSE NI_LIBS ni-libraries/*.so*) diff --git a/cmake/pom.xml b/cmake/pom.xml index c0b480a84e..d1730d87ce 100644 --- a/cmake/pom.xml +++ b/cmake/pom.xml @@ -138,8 +138,8 @@ zip - ${project.build.directory}/cmake/target-root/lib/libHALAthena.so - so + ${project.build.directory}/cmake/target-root/lib/libHALAthena.a + a diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/META-INF/MANIFEST.MF b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/META-INF/MANIFEST.MF index b321588db9..343ba0b42a 100644 --- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/META-INF/MANIFEST.MF +++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/META-INF/MANIFEST.MF @@ -24,7 +24,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.cdt.debug.core;bundle-version="7.2.0", org.eclipse.cdt.debug.ui;bundle-version="7.2.0", org.eclipse.cdt.launch;bundle-version="7.1.0", - org.eclipse.cdt.launch.remote;bundle-version="2.4.0" + org.eclipse.cdt.launch.remote;bundle-version="2.4.0", + org.eclipse.cdt.debug.mi.core;bundle-version="7.2.0" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Export-Package: edu.wpi.first.wpilib.plugins.cpp, diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/plugin.xml b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/plugin.xml index 492db0c514..1aa3c2b5e6 100644 --- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/plugin.xml +++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/plugin.xml @@ -150,7 +150,7 @@ description="Deploy the WPILib project to the athena board." icon="resources/icons/wpi.ico" id="edu.wpi.first.wpilib.plugins.cpp.launching.deploy" - label="WPILib Deploy" + label="WPILib Deploy Configure Builder" modes="run,debug"> diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/.cproject b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/.cproject index bfc041ab71..08aebc6031 100644 --- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/.cproject +++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/.cproject @@ -5,10 +5,10 @@ - + @@ -34,15 +34,31 @@ - -