Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 1 | licenses(['notice']) |
| 2 | |
| 3 | genrule( |
| 4 | name = 'wpilib_version', |
| 5 | outs = ['shared/src/WPILibVersion.cpp'], |
| 6 | cmd = '\n'.join([ |
| 7 | "cat > \"$@\" << EOF", |
| 8 | "// Autogenerated file! Do not manually edit this file.", |
| 9 | "#include \"WPILibVersion.h\"", |
| 10 | "const char *WPILibVersion = \"2017-frc971\";", |
| 11 | "EOF", |
| 12 | ]), |
| 13 | ) |
| 14 | |
| 15 | _header_dirs = [ |
| 16 | 'wpilibc/shared/include', |
| 17 | 'wpilibc/athena/include', |
| 18 | 'hal/include', |
| 19 | 'hal/lib/athena', |
| 20 | ] |
| 21 | |
| 22 | # Names of WPILib "devices" I don't want to deal with making trivial updates to |
| 23 | # chop out various ugliness or have to vet for sanity. |
| 24 | _excluded_devices = [ |
| 25 | 'ADXL345_I2C', |
| 26 | 'GearTooth', |
| 27 | 'Ultrasonic', |
| 28 | 'Victor', |
| 29 | 'TalonSRX', |
| 30 | 'CANTalon', |
| 31 | 'CANJaguar', |
| 32 | 'PIDController', |
| 33 | 'Spark', |
Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 34 | 'SD540', |
| 35 | 'RobotDrive', |
| 36 | 'Jaguar', |
| 37 | 'ADXL345_SPI', |
| 38 | 'DoubleSolenoid', |
| 39 | 'AnalogPotentiometer', |
| 40 | 'ADXL362', |
| 41 | 'AnalogGyro', |
| 42 | 'AnalogAccelerometer', |
| 43 | 'CameraServer', |
| 44 | 'ADXRS450_Gyro', |
| 45 | 'GyroBase', |
| 46 | 'IterativeRobot', |
Brian Silverman | 6eaa2d8 | 2017-02-04 20:48:30 -0800 | [diff] [blame] | 47 | 'MotorSafety', |
| 48 | 'MotorSafetyHelper', |
| 49 | 'SafePWM', |
| 50 | 'SpeedController', |
| 51 | 'PWMSpeedController', |
Brian Silverman | 6599226 | 2017-02-04 21:25:18 -0800 | [diff] [blame] | 52 | 'SerialPort', |
| 53 | 'OSSerialPort', |
| 54 | 'SerialHelper', |
| 55 | 'XboxController', |
| 56 | 'GenericHID', |
| 57 | 'GamepadBase', |
| 58 | 'PIDSource', |
| 59 | 'Potentiometer', |
| 60 | 'JoystickBase', |
| 61 | 'Joystick', |
| 62 | 'Log', |
| 63 | 'CANSpeedController', |
| 64 | 'visa', |
Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 65 | ] |
| 66 | |
| 67 | # Whole subdirectories of WPILib we don't want around. |
Brian Silverman | 6599226 | 2017-02-04 21:25:18 -0800 | [diff] [blame] | 68 | _excluded_directories = [ |
Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 69 | 'SmartDashboard', |
| 70 | 'LiveWindow', |
| 71 | 'Commands', |
| 72 | 'Buttons', |
| 73 | 'Filters', |
Brian Silverman | 6599226 | 2017-02-04 21:25:18 -0800 | [diff] [blame] | 74 | 'LabView', |
| 75 | 'vision', |
Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 76 | ] |
| 77 | |
| 78 | # Header files we don't want to have. |
| 79 | _bad_hdrs = ([ |
| 80 | 'wpilibc/athena/include/WPILib.h', |
Brian Silverman | 6599226 | 2017-02-04 21:25:18 -0800 | [diff] [blame] | 81 | 'hal/include/HAL/LabVIEW/HAL.h', |
| 82 | 'wpilibc/**/Accelerometer.*', |
| 83 | ] + ['**/%s/**' % d for d in _excluded_directories] + |
| 84 | ['**/%s.*' % d for d in _excluded_devices]) |
Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 85 | _h_hdrs = glob([d + '/**/*.h' for d in _header_dirs], exclude=_bad_hdrs) |
| 86 | _hpp_hdrs = glob([d + '/**/*.hpp' for d in _header_dirs], exclude=_bad_hdrs) |
| 87 | |
| 88 | cc_library( |
| 89 | name = 'wpilib', |
| 90 | visibility = ['//third_party:__pkg__'], |
| 91 | srcs = glob([ |
| 92 | 'wpilibc/athena/src/*.cpp', |
| 93 | 'wpilibc/athena/src/Internal/*.cpp', |
| 94 | 'wpilibc/shared/src/**/*.cpp', |
| 95 | |
| 96 | 'hal/lib/athena/*.cpp', |
| 97 | 'hal/lib/athena/cpp/*.cpp', |
| 98 | 'hal/lib/athena/ctre/*.cpp', |
| 99 | 'hal/lib/shared/handles/*.cpp', |
| 100 | ], exclude = ( |
Brian Silverman | 6599226 | 2017-02-04 21:25:18 -0800 | [diff] [blame] | 101 | ['**/%s/**' % d for d in _excluded_directories] + |
| 102 | ['**/%s.*' % d for d in _excluded_devices] + [ |
| 103 | 'wpilibc/**/Accelerometer.*', |
| 104 | ])) + [ |
Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 105 | ':wpilib_version', |
| 106 | ], |
| 107 | copts = [ |
| 108 | '-Wno-unused-parameter', |
| 109 | '-Wno-switch-enum', |
| 110 | '-Wno-attributes', |
| 111 | '-Wno-cast-align', |
| 112 | '-Wno-cast-qual', |
| 113 | '-Wno-deprecated-declarations', |
| 114 | '-Wno-error', |
| 115 | '-Wno-unused-const-variable', |
| 116 | ], |
| 117 | deps = [ |
| 118 | '//third_party/ntcore_2017:ntcore', |
| 119 | '//external:ni-libraries-2017', |
| 120 | '//aos/common/logging', |
| 121 | ], |
| 122 | hdrs = _h_hdrs + _hpp_hdrs + [ |
| 123 | 'wpilibc/shared/include/CircularBuffer.inc', |
| 124 | 'wpilibc/athena/include/Task.inc', |
| 125 | ], |
| 126 | includes = _header_dirs, |
| 127 | linkopts = [ |
| 128 | '-lpthread', |
| 129 | ], |
| 130 | defines = [ |
| 131 | 'WPILIB2017=1', |
| 132 | ], |
Austin Schuh | 9d92e6b | 2017-10-17 01:19:38 -0700 | [diff] [blame^] | 133 | restricted_to = ['//tools:roborio'], |
Brian Silverman | e48dbc1 | 2017-02-04 20:06:29 -0800 | [diff] [blame] | 134 | ) |