Initial stab at the new WPILib.
Change-Id: Id04cc07649959566deb5b4fa637267072a5191ca
diff --git a/third_party/allwpilib_2018/BUILD b/third_party/allwpilib_2018/BUILD
new file mode 100644
index 0000000..8254c8a
--- /dev/null
+++ b/third_party/allwpilib_2018/BUILD
@@ -0,0 +1,143 @@
+licenses(['notice'])
+
+genrule(
+ name = 'wpilib_version',
+ outs = ['shared/src/WPILibVersion.cpp'],
+ cmd = '\n'.join([
+ "cat > \"$@\" << EOF",
+ "// Autogenerated file! Do not manually edit this file.",
+ "#include \"WPILibVersion.h\"",
+ "const char* GetWPILibVersion() {",
+ " return \"2018-frc971\";",
+ "}",
+ "EOF",
+ ]),
+)
+
+_header_dirs = [
+ 'wpilibc/src/main/native/include',
+ #'wpilibc/shared/include',
+ #'wpilibc/athena/include',
+ 'hal/src/main/native/include',
+ 'hal/src/main/native/athena',
+ 'hal/src/main/native/include/HAL/cpp',
+ #'hal/include',
+ #'hal/lib/athena',
+]
+
+# Names of WPILib "devices" I don't want to deal with making trivial updates to
+# chop out various ugliness or have to vet for sanity.
+_excluded_devices = [
+ 'ADXL345_I2C',
+ 'ADXL345_SPI',
+ 'ADXL362',
+ 'ADXRS450_Gyro',
+ 'AnalogAccelerometer',
+ #'AnalogGyro',
+ 'AnalogPotentiometer',
+ 'CANJaguar',
+ 'CANSpeedController',
+ 'CANTalon',
+ 'CameraServer',
+ 'DoubleSolenoid',
+ 'GamepadBase',
+ 'GearTooth',
+ 'GenericHID',
+ #'GyroBase',
+ 'IterativeRobot',
+ 'Jaguar',
+ 'Joystick',
+ 'JoystickBase',
+ #'Log',
+ #'MotorSafety',
+ #'MotorSafetyHelper',
+ 'OSSerialPort',
+ #'PIDController',
+ #'PIDSource',
+ #'PWMSpeedController',
+ 'Potentiometer',
+ 'RobotDrive',
+ 'SD540',
+ #'SafePWM',
+ #'SerialHelper',
+ #'SerialPort',
+ 'Spark',
+ #'SpeedController',
+ 'TalonSRX',
+ 'Ultrasonic',
+ 'Victor',
+ 'XboxController',
+ #'visa',
+]
+
+# Whole subdirectories of WPILib we don't want around.
+_excluded_directories = [
+ #'SmartDashboard',
+ #'LiveWindow',
+ #'Commands',
+ #'Buttons',
+ #'Filters',
+ 'LabView',
+ 'vision',
+]
+
+# Header files we don't want to have.
+_bad_hdrs = ([
+ 'wpilibc/src/main/native/include/WPILib.h',
+ 'hal/src/main/native/include/HAL/LabVIEW/HAL.h',
+ #'wpilibc/**/Accelerometer.*',
+] + ['**/%s/**' % d for d in _excluded_directories] +
+ ['**/%s.*' % d for d in _excluded_devices])
+_h_hdrs = glob([d + '/**/*.h' for d in _header_dirs], exclude=_bad_hdrs)
+_hpp_hdrs = glob([d + '/**/*.hpp' for d in _header_dirs], exclude=_bad_hdrs)
+
+cc_library(
+ name = 'wpilib',
+ visibility = ['//third_party:__pkg__'],
+ srcs = glob([
+ 'wpilibc/src/main/native/cpp/*.cpp',
+ 'wpilibc/src/main/native/cpp/interfaces/*.cpp',
+ 'wpilibc/src/main/native/cpp/LiveWindow/*.cpp',
+ 'wpilibc/src/main/native/cpp/Commands/*.cpp',
+ 'wpilibc/src/main/native/cpp/SmartDashboard/*.cpp',
+
+ 'hal/src/main/native/athena/*.cpp',
+ 'hal/src/main/native/athena/cpp/*.cpp',
+ 'hal/src/main/native/athena/ctre/*.cpp',
+ 'hal/src/main/native/shared/handles/*.cpp',
+ 'wpilibc/src/main/native/cpp/Internal/*.cpp',
+ ], exclude = (
+ ['**/%s/**' % d for d in _excluded_directories] +
+ ['**/%s.*' % d for d in _excluded_devices] + [
+ #'wpilibc/**/Accelerometer.*',
+ ])) + [
+ ':wpilib_version',
+ ],
+ copts = [
+ '-Wno-unused-parameter',
+ '-Wno-switch-enum',
+ '-Wno-attributes',
+ '-Wno-cast-align',
+ '-Wno-cast-qual',
+ '-Wno-deprecated-declarations',
+ '-Wno-error',
+ #'-Wno-unused-const-variable',
+ ],
+ deps = [
+ '//third_party/ntcore_2018:ntcore',
+ '@allwpilib_ni_libraries_repo_2018//:ni-libraries',
+ '//aos/common/logging',
+ ],
+ hdrs = _h_hdrs + _hpp_hdrs + [
+ 'wpilibc/src/main/native/include/circular_buffer.inc',
+ 'wpilibc/src/main/native/include/SpeedControllerGroup.inc',
+ ],
+ includes = _header_dirs,
+ linkopts = [
+ '-lpthread',
+ ],
+ defines = [
+ 'WPILIB2018=1',
+ ],
+ restricted_to = ['//tools:roborio'],
+)