blob: 3fbffe2e4b4f7bd9979f57724d64156d259c633b [file] [log] [blame]
Brian Silvermane48dbc12017-02-04 20:06:29 -08001licenses(['notice'])
2
3genrule(
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 Silvermane48dbc12017-02-04 20:06:29 -080034 '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 Silverman6eaa2d82017-02-04 20:48:30 -080047 'MotorSafety',
48 'MotorSafetyHelper',
49 'SafePWM',
50 'SpeedController',
51 'PWMSpeedController',
Brian Silverman65992262017-02-04 21:25:18 -080052 '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 Silvermane48dbc12017-02-04 20:06:29 -080065]
66
67# Whole subdirectories of WPILib we don't want around.
Brian Silverman65992262017-02-04 21:25:18 -080068_excluded_directories = [
Brian Silvermane48dbc12017-02-04 20:06:29 -080069 'SmartDashboard',
70 'LiveWindow',
71 'Commands',
72 'Buttons',
73 'Filters',
Brian Silverman65992262017-02-04 21:25:18 -080074 'LabView',
75 'vision',
Brian Silvermane48dbc12017-02-04 20:06:29 -080076]
77
78# Header files we don't want to have.
79_bad_hdrs = ([
80 'wpilibc/athena/include/WPILib.h',
Brian Silverman65992262017-02-04 21:25:18 -080081 '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 Silvermane48dbc12017-02-04 20:06:29 -080085_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
88cc_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 Silverman65992262017-02-04 21:25:18 -0800101 ['**/%s/**' % d for d in _excluded_directories] +
102 ['**/%s.*' % d for d in _excluded_devices] + [
103 'wpilibc/**/Accelerometer.*',
104 ])) + [
Brian Silvermane48dbc12017-02-04 20:06:29 -0800105 ':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 Schuh9d92e6b2017-10-17 01:19:38 -0700133 restricted_to = ['//tools:roborio'],
Brian Silvermane48dbc12017-02-04 20:06:29 -0800134)