From 69d9ad70ab18e1c0cb937c6a2cb1f209ea9a62cb Mon Sep 17 00:00:00 2001 From: Brad Miller Date: Mon, 24 Mar 2014 16:13:08 -0400 Subject: [PATCH] CMake Changes This is the changes made by Patrick Plenefisch converting the native code to use CMake and the CMake Maven Plugin, as opposed to the native Maven plugin. This is to allow for compatibility with newer versions of the GCC toolchain. All the cpp sources were moved from maven style directories to cpp style directories for CMake. Change-Id: I67f5e3608948f37c83b0990d232105a3784f8593 --- .hgignore | 31 +- CMakeLists.txt | 12 + arm-toolchain.cmake | 5 +- {ni-libraries => cmake}/.gitignore | 0 cmake/pom.xml | 92 + .../edu.wpi.first.wpilib.plugins.cpp/pom.xml | 499 ++-- .../resources/templates/.cproject | 17 +- .../command-based/ExampleSubsystem.cpp | 1 + hal/.cproject | 194 -- hal/.gitignore | 10 - hal/.project | 34 - hal/Athena/pom.xml | 43 - .../NetworkCommunication/AICalibration.h | 19 - .../NetworkCommunication/CANInterfacePlugin.h | 61 - .../native/NetworkCommunication/FRCComm.h | 201 -- .../NetworkCommunication/JaguarCANDriver.h | 56 - .../native/NetworkCommunication/LoadOut.h | 52 - .../NetworkCommunication/UsageReporting.h | 139 -- hal/CMakeLists.txt | 13 +- .../{src/main/include => }/HAL/Analog.h | 0 hal/include/{src/main/include => }/HAL/CAN.h | 0 .../{src/main/include => }/HAL/Digital.h | 0 .../{src/main/include => }/HAL/Errors.h | 0 hal/include/{src/main/include => }/HAL/HAL.h | 0 .../{src/main/include => }/HAL/Interrupts.h | 0 .../{src/main/include => }/HAL/Notifier.h | 0 .../{src/main/include => }/HAL/Semaphore.h | 0 .../{src/main/include => }/HAL/Solenoid.h | 0 hal/include/{src/main/include => }/HAL/Task.h | 0 .../{src/main/include => }/HAL/Utilities.h | 0 .../{src/main/include => }/HAL/cpp/Resource.h | 0 .../main/include => }/HAL/cpp/StackTrace.h | 0 .../main/include => }/HAL/cpp/Synchronized.h | 0 hal/include/{src/main/include => }/Log.h | 0 hal/include/pom.xml | 24 - .../src/main/native => lib/Athena}/Analog.cpp | 0 .../main/native => lib/Athena}/ChipObject.h | 0 .../ChipObject/FRC_FPGA_ChipObject_Aliases.h | 0 .../RoboRIO_FRC_ChipObject_Aliases.h | 0 .../ChipObject/fpgainterfacecapi/NiFpga.h | 0 .../Athena}/ChipObject/nInterfaceGlobals.h | 0 .../Athena}/ChipObject/printFpgaVersion.h | 0 .../native => lib/Athena}/ChipObject/tAI.h | 0 .../native => lib/Athena}/ChipObject/tAO.h | 0 .../native => lib/Athena}/ChipObject/tAccel.h | 0 .../Athena}/ChipObject/tAccumulator.h | 0 .../native => lib/Athena}/ChipObject/tAlarm.h | 0 .../Athena}/ChipObject/tAnalogTrigger.h | 0 .../native => lib/Athena}/ChipObject/tBIST.h | 0 .../Athena}/ChipObject/tCounter.h | 0 .../native => lib/Athena}/ChipObject/tDIO.h | 0 .../native => lib/Athena}/ChipObject/tDMA.h | 0 .../Athena}/ChipObject/tDMAManager.h | 0 .../Athena}/ChipObject/tEncoder.h | 0 .../Athena}/ChipObject/tGlobal.h | 0 .../Athena}/ChipObject/tInterrupt.h | 0 .../Athena}/ChipObject/tInterruptManager.h | 0 .../native => lib/Athena}/ChipObject/tPWM.h | 0 .../native => lib/Athena}/ChipObject/tPower.h | 0 .../native => lib/Athena}/ChipObject/tRelay.h | 0 .../native => lib/Athena}/ChipObject/tSPI.h | 0 .../Athena}/ChipObject/tSysWatchdog.h | 0 .../Athena}/ChipObject/tSystem.h | 0 .../Athena}/ChipObject/tSystemInterface.h | 0 .../main/native => lib/Athena}/Digital.cpp | 0 .../src/main/native => lib/Athena}/HAL.cpp | 2 +- .../main/native => lib/Athena}/Interrupts.cpp | 0 .../NetworkCommunication/AICalibration.h | 0 .../NetworkCommunication/CANInterfacePlugin.h | 0 .../Athena}/NetworkCommunication/FRCComm.h | 0 .../NetworkCommunication/JaguarCANDriver.h | 0 .../Athena}/NetworkCommunication/LoadOut.h | 0 .../NetworkCommunication/UsageReporting.h | 0 .../main/native => lib/Athena}/Notifier.cpp | 0 .../src/main/native => lib/Athena}/Port.h | 0 .../main/native => lib/Athena}/Semaphore.cpp | 0 .../main/native => lib/Athena}/Solenoid.cpp | 0 .../src/main/native => lib/Athena}/Task.cpp | 0 .../main/native => lib/Athena}/Utilities.cpp | 0 .../native => lib/Athena}/cpp/Resource.cpp | 0 .../native => lib/Athena}/cpp/StackTrace.cpp | 0 .../Athena}/cpp/Synchronized.cpp | 0 .../native => lib/Athena}/i2clib/i2c-lib.h | 0 .../Athena}/i2clib/i2clib/environs.h | 0 .../native => lib/Athena}/spilib/spi-lib.h | 0 hal/pom.xml | 14 - maven-utilities/athena/cpp-executable/pom.xml | 62 - maven-utilities/athena/pom.xml | 3 - maven-utilities/athena/shared-library/pom.xml | 74 - maven-utilities/athena/static-library/pom.xml | 103 - networktables/.gitignore | 3 +- networktables/cpp/.cproject | 182 -- networktables/cpp/.project | 34 - .../org.eclipse.cdt.managedbuilder.core.prefs | 11 - networktables/cpp/Athena/pom.xml | 49 - networktables/cpp/CMakeLists.txt | 13 + .../{src/main/include => }/NTErrorBase.h | 0 .../main/include => }/OSAL/Synchronized.h | 0 .../{src/main/include => }/OSAL/Task.h | 0 .../include => }/networktables/NetworkTable.h | 0 .../NetworkTableConnectionListenerAdapter.h | 0 .../NetworkTableKeyListenerAdapter.h | 0 .../NetworkTableListenerAdapter.h | 0 .../networktables/NetworkTableMode.h | 0 .../networktables/NetworkTableProvider.h | 0 .../NetworkTableSubListenerAdapter.h | 0 .../AbstractNetworkTableEntryStore.h | 0 .../FlushableOutgoingEntryReceiver.h | 0 .../networktables2/IncomingEntryReceiver.h | 0 .../networktables2/NetworkTableEntry.h | 0 .../networktables2/NetworkTableMessageType.h | 0 .../networktables2/NetworkTableNode.h | 0 .../networktables2/OutgoingEntryReceiver.h | 0 ...TableKeyExistsWithDifferentTypeException.h | 0 .../networktables2/TransactionDirtier.h | 0 .../networktables2/WriteManager.h | 0 .../client/ClientConnectionAdapter.h | 0 .../client/ClientConnectionListenerManager.h | 0 .../client/ClientConnectionState.h | 0 .../client/ClientNetworkTableEntryStore.h | 0 .../client/NetworkTableClient.h | 0 .../connection/BadMessageException.h | 0 .../connection/ConnectionAdapter.h | 0 .../connection/ConnectionMonitorThread.h | 0 .../networktables2/connection/DataIOStream.h | 0 .../connection/NetworkTableConnection.h | 0 .../server/NetworkTableServer.h | 0 .../server/ServerAdapterManager.h | 0 .../server/ServerConnectionAdapter.h | 0 .../server/ServerConnectionList.h | 0 .../server/ServerConnectionState.h | 0 .../server/ServerIncomingConnectionListener.h | 0 .../server/ServerIncomingStreamMonitor.h | 0 .../server/ServerNetworkTableEntryStore.h | 0 .../networktables2/stream/FDIOStream.h | 0 .../networktables2/stream/IOStream.h | 0 .../networktables2/stream/IOStreamFactory.h | 0 .../networktables2/stream/IOStreamProvider.h | 0 .../stream/SocketServerStreamProvider.h | 0 .../stream/SocketStreamFactory.h | 0 .../networktables2/stream/SocketStreams.h | 0 .../thread/DefaultThreadManager.h | 0 .../networktables2/thread/NTThread.h | 0 .../networktables2/thread/NTThreadManager.h | 0 .../networktables2/thread/PeriodicRunnable.h | 0 .../networktables2/type/ArrayData.h | 0 .../networktables2/type/ArrayEntryType.h | 0 .../networktables2/type/BooleanArray.h | 0 .../networktables2/type/ComplexData.h | 0 .../networktables2/type/ComplexEntryType.h | 0 .../networktables2/type/DefaultEntryTypes.h | 0 .../type/NetworkTableEntryType.h | 0 .../type/NetworkTableEntryTypeManager.h | 0 .../networktables2/type/NumberArray.h | 0 .../networktables2/type/StringArray.h | 0 .../networktables2/util/EOFException.h | 0 .../networktables2/util/IOException.h | 0 .../util/IllegalStateException.h | 0 .../networktables2/util/StringCache.h | 0 .../include => }/networktables2/util/System.h | 0 networktables/cpp/include/pom.xml | 24 - .../{src/main/include => }/tables/IRemote.h | 0 .../tables/IRemoteConnectionListener.h | 0 .../{src/main/include => }/tables/ITable.h | 0 .../main/include => }/tables/ITableListener.h | 0 .../main/include => }/tables/ITableProvider.h | 0 .../tables/TableKeyNotDefinedException.h | 0 .../Athena}/OSAL/Synchronized.cpp | 0 .../native => lib/Athena}/OSAL/System.cpp | 0 .../networktables2/stream/FDIOStream.cpp | 0 .../stream/SocketServerStreamProvider.cpp | 0 .../stream/SocketStreamFactory.cpp | 0 .../networktables2/stream/SocketStreams.cpp | 0 .../thread/DefaultThreadManager.cpp | 0 networktables/cpp/{ => lib}/Desktop/pom.xml | 0 .../Desktop/src/test/ant/ant/cpptasks.jar | Bin .../Desktop/src/test/ant/build.properties | 0 .../{ => lib}/Desktop/src/test/ant/build.xml | 0 .../{ => lib}/Desktop/src/test/ant/test.xml | 0 .../broken-tests/ConnectionListTests.cpp | 0 .../networktables2/MockNetworkTableEntry.h | 0 .../MockOutgoingEntryReceiver.h | 0 .../tests/networktables2/util/UStringTest.cpp | 0 .../desktop-test/include/ByteArrayIOStream.h | 0 .../desktop-test/include/TesterTemplate.h | 0 .../networktables2/IOStreamProviderMock.h | 0 .../MockServerConnectionAdapter.h | 0 .../networktables2/NTThreadManagerMock.h | 0 .../mocks/networktables2/NTThreadMock.h | 0 .../mocks/networktables2/NetworkTableEntry.h | 0 .../desktop-test/tests/ByteArrayIOStream.cpp | 0 .../networktables2/server/ServerTest.cpp | 0 .../networktables2/type/EntryTypeTest.cpp | 0 .../src/test/native/gmock-1.6.0/CHANGES | 0 .../test/native/gmock-1.6.0/CMakeLists.txt | 0 .../src/test/native/gmock-1.6.0/CONTRIBUTORS | 0 .../src/test/native/gmock-1.6.0/COPYING | 0 .../src/test/native/gmock-1.6.0/Makefile.am | 0 .../src/test/native/gmock-1.6.0/Makefile.in | 0 .../src/test/native/gmock-1.6.0/README | 0 .../src/test/native/gmock-1.6.0/aclocal.m4 | 0 .../native/gmock-1.6.0/build-aux/config.guess | 0 .../native/gmock-1.6.0/build-aux/config.h.in | 0 .../native/gmock-1.6.0/build-aux/config.sub | 0 .../test/native/gmock-1.6.0/build-aux/depcomp | 0 .../native/gmock-1.6.0/build-aux/install-sh | 0 .../native/gmock-1.6.0/build-aux/ltmain.sh | 0 .../test/native/gmock-1.6.0/build-aux/missing | 0 .../src/test/native/gmock-1.6.0/configure | 0 .../src/test/native/gmock-1.6.0/configure.ac | 0 .../gmock-1.6.0/fused-src/gmock-gtest-all.cc | 0 .../gmock-1.6.0/fused-src/gmock/gmock.h | 0 .../gmock-1.6.0/fused-src/gmock_main.cc | 0 .../gmock-1.6.0/fused-src/gtest/gtest.h | 0 .../src/test/native/gmock-1.6.0/gtest/CHANGES | 0 .../native/gmock-1.6.0/gtest/CMakeLists.txt | 0 .../native/gmock-1.6.0/gtest/CONTRIBUTORS | 0 .../src/test/native/gmock-1.6.0/gtest/COPYING | 0 .../test/native/gmock-1.6.0/gtest/Makefile.am | 0 .../test/native/gmock-1.6.0/gtest/Makefile.in | 0 .../src/test/native/gmock-1.6.0/gtest/README | 0 .../test/native/gmock-1.6.0/gtest/aclocal.m4 | 0 .../gmock-1.6.0/gtest/build-aux/config.guess | 0 .../gmock-1.6.0/gtest/build-aux/config.h.in | 0 .../gmock-1.6.0/gtest/build-aux/config.sub | 0 .../gmock-1.6.0/gtest/build-aux/depcomp | 0 .../gmock-1.6.0/gtest/build-aux/install-sh | 0 .../gmock-1.6.0/gtest/build-aux/ltmain.sh | 0 .../gmock-1.6.0/gtest/build-aux/missing | 0 .../gtest/cmake/internal_utils.cmake | 0 .../gmock-1.6.0/gtest/codegear/gtest.cbproj | 0 .../gtest/codegear/gtest.groupproj | 0 .../gmock-1.6.0/gtest/codegear/gtest_all.cc | 0 .../gmock-1.6.0/gtest/codegear/gtest_link.cc | 0 .../gtest/codegear/gtest_main.cbproj | 0 .../gtest/codegear/gtest_unittest.cbproj | 0 .../test/native/gmock-1.6.0/gtest/configure | 0 .../native/gmock-1.6.0/gtest/configure.ac | 0 .../gtest/fused-src/gtest/gtest-all.cc | 0 .../gmock-1.6.0/gtest/fused-src/gtest/gtest.h | 0 .../gtest/fused-src/gtest/gtest_main.cc | 0 .../gtest/include/gtest/gtest-death-test.h | 0 .../gtest/include/gtest/gtest-message.h | 0 .../gtest/include/gtest/gtest-param-test.h | 0 .../include/gtest/gtest-param-test.h.pump | 0 .../gtest/include/gtest/gtest-printers.h | 0 .../gtest/include/gtest/gtest-spi.h | 0 .../gtest/include/gtest/gtest-test-part.h | 0 .../gtest/include/gtest/gtest-typed-test.h | 0 .../gmock-1.6.0/gtest/include/gtest/gtest.h | 0 .../gtest/include/gtest/gtest_pred_impl.h | 0 .../gtest/include/gtest/gtest_prod.h | 0 .../internal/gtest-death-test-internal.h | 0 .../include/gtest/internal/gtest-filepath.h | 0 .../include/gtest/internal/gtest-internal.h | 0 .../include/gtest/internal/gtest-linked_ptr.h | 0 .../internal/gtest-param-util-generated.h | 0 .../gtest-param-util-generated.h.pump | 0 .../include/gtest/internal/gtest-param-util.h | 0 .../gtest/include/gtest/internal/gtest-port.h | 0 .../include/gtest/internal/gtest-string.h | 0 .../include/gtest/internal/gtest-tuple.h | 0 .../include/gtest/internal/gtest-tuple.h.pump | 0 .../include/gtest/internal/gtest-type-util.h | 0 .../gtest/internal/gtest-type-util.h.pump | 0 .../gmock-1.6.0/gtest/m4/acx_pthread.m4 | 0 .../test/native/gmock-1.6.0/gtest/m4/gtest.m4 | 0 .../native/gmock-1.6.0/gtest/m4/libtool.m4 | 0 .../native/gmock-1.6.0/gtest/m4/ltoptions.m4 | 0 .../native/gmock-1.6.0/gtest/m4/ltsugar.m4 | 0 .../native/gmock-1.6.0/gtest/m4/ltversion.m4 | 0 .../gmock-1.6.0/gtest/m4/lt~obsolete.m4 | 0 .../native/gmock-1.6.0/gtest/make/Makefile | 0 .../gmock-1.6.0/gtest/msvc/gtest-md.sln | 0 .../gmock-1.6.0/gtest/msvc/gtest-md.vcproj | 0 .../native/gmock-1.6.0/gtest/msvc/gtest.sln | 0 .../gmock-1.6.0/gtest/msvc/gtest.vcproj | 0 .../gtest/msvc/gtest_main-md.vcproj | 0 .../gmock-1.6.0/gtest/msvc/gtest_main.vcproj | 0 .../gtest/msvc/gtest_prod_test-md.vcproj | 0 .../gtest/msvc/gtest_prod_test.vcproj | 0 .../gtest/msvc/gtest_unittest-md.vcproj | 0 .../gtest/msvc/gtest_unittest.vcproj | 0 .../gmock-1.6.0/gtest/samples/prime_tables.h | 0 .../gmock-1.6.0/gtest/samples/sample1.cc | 0 .../gmock-1.6.0/gtest/samples/sample1.h | 0 .../gtest/samples/sample10_unittest.cc | 0 .../gtest/samples/sample1_unittest.cc | 0 .../gmock-1.6.0/gtest/samples/sample2.cc | 0 .../gmock-1.6.0/gtest/samples/sample2.h | 0 .../gtest/samples/sample2_unittest.cc | 0 .../gmock-1.6.0/gtest/samples/sample3-inl.h | 0 .../gtest/samples/sample3_unittest.cc | 0 .../gmock-1.6.0/gtest/samples/sample4.cc | 0 .../gmock-1.6.0/gtest/samples/sample4.h | 0 .../gtest/samples/sample4_unittest.cc | 0 .../gtest/samples/sample5_unittest.cc | 0 .../gtest/samples/sample6_unittest.cc | 0 .../gtest/samples/sample7_unittest.cc | 0 .../gtest/samples/sample8_unittest.cc | 0 .../gtest/samples/sample9_unittest.cc | 0 .../gtest/scripts/fuse_gtest_files.py | 0 .../gtest/scripts/gen_gtest_pred_impl.py | 0 .../gmock-1.6.0/gtest/scripts/gtest-config.in | 0 .../native/gmock-1.6.0/gtest/scripts/pump.py | 0 .../gmock-1.6.0/gtest/scripts/test/Makefile | 0 .../native/gmock-1.6.0/gtest/src/gtest-all.cc | 0 .../gmock-1.6.0/gtest/src/gtest-death-test.cc | 0 .../gmock-1.6.0/gtest/src/gtest-filepath.cc | 0 .../gtest/src/gtest-internal-inl.h | 0 .../gmock-1.6.0/gtest/src/gtest-port.cc | 0 .../gmock-1.6.0/gtest/src/gtest-printers.cc | 0 .../gmock-1.6.0/gtest/src/gtest-test-part.cc | 0 .../gmock-1.6.0/gtest/src/gtest-typed-test.cc | 0 .../native/gmock-1.6.0/gtest/src/gtest.cc | 0 .../gmock-1.6.0/gtest/src/gtest_main.cc | 0 .../gtest/test/gtest-death-test_ex_test.cc | 0 .../gtest/test/gtest-death-test_test.cc | 0 .../gtest/test/gtest-filepath_test.cc | 0 .../gtest/test/gtest-linked_ptr_test.cc | 0 .../gtest/test/gtest-listener_test.cc | 0 .../gtest/test/gtest-message_test.cc | 0 .../gtest/test/gtest-options_test.cc | 0 .../gtest/test/gtest-param-test2_test.cc | 0 .../gtest/test/gtest-param-test_test.cc | 0 .../gtest/test/gtest-param-test_test.h | 0 .../gmock-1.6.0/gtest/test/gtest-port_test.cc | 0 .../gtest/test/gtest-printers_test.cc | 0 .../gtest/test/gtest-test-part_test.cc | 0 .../gtest/test/gtest-tuple_test.cc | 0 .../gtest/test/gtest-typed-test2_test.cc | 0 .../gtest/test/gtest-typed-test_test.cc | 0 .../gtest/test/gtest-typed-test_test.h | 0 .../gtest/test/gtest-unittest-api_test.cc | 0 .../gmock-1.6.0/gtest/test/gtest_all_test.cc | 0 .../test/gtest_break_on_failure_unittest.py | 0 .../test/gtest_break_on_failure_unittest_.cc | 0 .../gtest/test/gtest_catch_exceptions_test.py | 0 .../test/gtest_catch_exceptions_test_.cc | 0 .../gtest/test/gtest_color_test.py | 0 .../gtest/test/gtest_color_test_.cc | 0 .../gtest/test/gtest_env_var_test.py | 0 .../gtest/test/gtest_env_var_test_.cc | 0 .../gtest/test/gtest_environment_test.cc | 0 .../gtest/test/gtest_filter_unittest.py | 0 .../gtest/test/gtest_filter_unittest_.cc | 0 .../gmock-1.6.0/gtest/test/gtest_help_test.py | 0 .../gtest/test/gtest_help_test_.cc | 0 .../gtest/test/gtest_list_tests_unittest.py | 0 .../gtest/test/gtest_list_tests_unittest_.cc | 0 .../gtest/test/gtest_main_unittest.cc | 0 .../gtest/test/gtest_no_test_unittest.cc | 0 .../gtest/test/gtest_output_test.py | 0 .../gtest/test/gtest_output_test_.cc | 0 .../test/gtest_output_test_golden_lin.txt | 0 .../gtest/test/gtest_pred_impl_unittest.cc | 0 .../gmock-1.6.0/gtest/test/gtest_prod_test.cc | 0 .../gtest/test/gtest_repeat_test.cc | 0 .../gtest/test/gtest_shuffle_test.py | 0 .../gtest/test/gtest_shuffle_test_.cc | 0 .../gtest/test/gtest_sole_header_test.cc | 0 .../gtest/test/gtest_stress_test.cc | 0 .../gtest/test/gtest_test_utils.py | 0 .../test/gtest_throw_on_failure_ex_test.cc | 0 .../gtest/test/gtest_throw_on_failure_test.py | 0 .../test/gtest_throw_on_failure_test_.cc | 0 .../gtest/test/gtest_uninitialized_test.py | 0 .../gtest/test/gtest_uninitialized_test_.cc | 0 .../gmock-1.6.0/gtest/test/gtest_unittest.cc | 0 .../gtest/test/gtest_xml_outfile1_test_.cc | 0 .../gtest/test/gtest_xml_outfile2_test_.cc | 0 .../gtest/test/gtest_xml_outfiles_test.py | 0 .../gtest/test/gtest_xml_output_unittest.py | 0 .../gtest/test/gtest_xml_output_unittest_.cc | 0 .../gtest/test/gtest_xml_test_utils.py | 0 .../gmock-1.6.0/gtest/test/production.cc | 0 .../gmock-1.6.0/gtest/test/production.h | 0 .../gtest/xcode/Config/DebugProject.xcconfig | 0 .../xcode/Config/FrameworkTarget.xcconfig | 0 .../gtest/xcode/Config/General.xcconfig | 0 .../xcode/Config/ReleaseProject.xcconfig | 0 .../xcode/Config/StaticLibraryTarget.xcconfig | 0 .../gtest/xcode/Config/TestTarget.xcconfig | 0 .../gtest/xcode/Resources/Info.plist | 0 .../xcode/Samples/FrameworkSample/Info.plist | 0 .../WidgetFramework.xcodeproj/project.pbxproj | 0 .../xcode/Samples/FrameworkSample/runtests.sh | 0 .../xcode/Samples/FrameworkSample/widget.cc | 0 .../xcode/Samples/FrameworkSample/widget.h | 0 .../Samples/FrameworkSample/widget_test.cc | 0 .../gtest/xcode/Scripts/runtests.sh | 0 .../gtest/xcode/Scripts/versiongenerate.py | 0 .../xcode/gtest.xcodeproj/project.pbxproj | 0 .../gmock-1.6.0/include/gmock/gmock-actions.h | 0 .../include/gmock/gmock-cardinalities.h | 0 .../include/gmock/gmock-generated-actions.h | 0 .../gmock/gmock-generated-actions.h.pump | 0 .../gmock/gmock-generated-function-mockers.h | 0 .../gmock-generated-function-mockers.h.pump | 0 .../include/gmock/gmock-generated-matchers.h | 0 .../gmock/gmock-generated-matchers.h.pump | 0 .../gmock/gmock-generated-nice-strict.h | 0 .../gmock/gmock-generated-nice-strict.h.pump | 0 .../include/gmock/gmock-matchers.h | 0 .../include/gmock/gmock-more-actions.h | 0 .../include/gmock/gmock-spec-builders.h | 0 .../native/gmock-1.6.0/include/gmock/gmock.h | 0 .../internal/gmock-generated-internal-utils.h | 0 .../gmock-generated-internal-utils.h.pump | 0 .../gmock/internal/gmock-internal-utils.h | 0 .../include/gmock/internal/gmock-port.h | 0 .../src/test/native/gmock-1.6.0/make/Makefile | 0 .../native/gmock-1.6.0/msvc/2005/gmock.sln | 0 .../native/gmock-1.6.0/msvc/2005/gmock.vcproj | 0 .../msvc/2005/gmock_config.vsprops | 0 .../gmock-1.6.0/msvc/2005/gmock_main.vcproj | 0 .../gmock-1.6.0/msvc/2005/gmock_test.vcproj | 0 .../native/gmock-1.6.0/msvc/2010/gmock.sln | 0 .../gmock-1.6.0/msvc/2010/gmock.vcxproj | 0 .../gmock-1.6.0/msvc/2010/gmock_config.props | 0 .../gmock-1.6.0/msvc/2010/gmock_main.vcxproj | 0 .../gmock-1.6.0/msvc/2010/gmock_test.vcxproj | 0 .../gmock-1.6.0/scripts/fuse_gmock_files.py | 0 .../gmock-1.6.0/scripts/generator/COPYING | 0 .../gmock-1.6.0/scripts/generator/README | 0 .../scripts/generator/README.cppclean | 0 .../scripts/generator/cpp/__init__.py | 0 .../gmock-1.6.0/scripts/generator/cpp/ast.py | 0 .../scripts/generator/cpp/gmock_class.py | 0 .../scripts/generator/cpp/keywords.py | 0 .../scripts/generator/cpp/tokenize.py | 0 .../scripts/generator/cpp/utils.py | 0 .../scripts/generator/gmock_gen.py | 0 .../gmock-1.6.0/scripts/gmock-config.in | 0 .../test/native/gmock-1.6.0/src/gmock-all.cc | 0 .../gmock-1.6.0/src/gmock-cardinalities.cc | 0 .../gmock-1.6.0/src/gmock-internal-utils.cc | 0 .../native/gmock-1.6.0/src/gmock-matchers.cc | 0 .../gmock-1.6.0/src/gmock-spec-builders.cc | 0 .../src/test/native/gmock-1.6.0/src/gmock.cc | 0 .../test/native/gmock-1.6.0/src/gmock_main.cc | 0 .../gmock-1.6.0/test/gmock-actions_test.cc | 0 .../test/gmock-cardinalities_test.cc | 0 .../test/gmock-generated-actions_test.cc | 0 .../gmock-generated-function-mockers_test.cc | 0 .../gmock-generated-internal-utils_test.cc | 0 .../test/gmock-generated-matchers_test.cc | 0 .../test/gmock-internal-utils_test.cc | 0 .../gmock-1.6.0/test/gmock-matchers_test.cc | 0 .../test/gmock-more-actions_test.cc | 0 .../test/gmock-nice-strict_test.cc | 0 .../gmock-1.6.0/test/gmock-port_test.cc | 0 .../test/gmock-spec-builders_test.cc | 0 .../native/gmock-1.6.0/test/gmock_all_test.cc | 0 .../gmock-1.6.0/test/gmock_leak_test.py | 0 .../gmock-1.6.0/test/gmock_leak_test_.cc | 0 .../gmock-1.6.0/test/gmock_link2_test.cc | 0 .../gmock-1.6.0/test/gmock_link_test.cc | 0 .../native/gmock-1.6.0/test/gmock_link_test.h | 0 .../gmock-1.6.0/test/gmock_output_test.py | 0 .../gmock-1.6.0/test/gmock_output_test_.cc | 0 .../test/gmock_output_test_golden.txt | 0 .../native/gmock-1.6.0/test/gmock_test.cc | 0 .../gmock-1.6.0/test/gmock_test_utils.py | 0 .../test/native/test-client/test-client.cpp | 0 .../test/native/test-server/test-server.cpp | 0 .../src/main/native/OSAL/Synchronized.cpp | 0 .../Win32/src/main/native/OSAL/System.cpp | 0 .../Win32/src/main/native/OSAL/Task.cpp | 0 .../networktables2/stream/FDIOStream.cpp | 0 .../stream/SocketServerStreamProvider.cpp | 0 .../stream/SocketStreamFactory.cpp | 0 .../networktables2/stream/SocketStreams.cpp | 0 .../thread/DefaultThreadManager.cpp | 0 .../share}/networktables/NetworkTable.cpp | 0 .../NetworkTableConnectionListenerAdapter.cpp | 0 .../NetworkTableKeyListenerAdapter.cpp | 0 .../NetworkTableListenerAdapter.cpp | 0 .../share}/networktables/NetworkTableMode.cpp | 0 .../networktables/NetworkTableProvider.cpp | 0 .../NetworkTableSubListenerAdapter.cpp | 0 .../AbstractNetworkTableEntryStore.cpp | 0 .../networktables2/NetworkTableEntry.cpp | 0 .../networktables2/NetworkTableNode.cpp | 0 .../networktables2/OutgoingEntryReciever.cpp | 0 ...bleKeyExistsWithDifferentTypeException.cpp | 0 .../networktables2/TransactionDirtier.cpp | 0 .../share}/networktables2/WriteManager.cpp | 0 .../client/ClientConnectionAdapter.cpp | 0 .../client/ClientConnectionState.cpp | 0 .../client/ClientNetworkTableEntryStore.cpp | 0 .../client/NetworkTableClient.cpp | 0 .../connection/BadMessageException.cpp | 0 .../connection/ConnectionMonitorThread.cpp | 0 .../connection/DataIOStream.cpp | 0 .../connection/NetworkTableConnection.cpp | 0 .../server/NetworkTableServer.cpp | 0 .../server/ServerConnectionAdapter.cpp | 0 .../server/ServerConnectionList.cpp | 0 .../server/ServerConnectionState.cpp | 0 .../server/ServerIncomingStreamMonitor.cpp | 0 .../server/ServerNetworkTableEntryStore.cpp | 0 .../share}/networktables2/type/ArrayData.cpp | 0 .../networktables2/type/ArrayEntryType.cpp | 0 .../networktables2/type/BooleanArray.cpp | 0 .../networktables2/type/ComplexData.cpp | 0 .../networktables2/type/ComplexEntryType.cpp | 0 .../networktables2/type/DefaultEntryTypes.cpp | 0 .../type/NetworkTableEntryType.cpp | 0 .../type/NetworkTableEntryTypeManager.cpp | 0 .../networktables2/type/NumberArray.cpp | 0 .../networktables2/type/StringArray.cpp | 0 .../networktables2/util/EOFException.cpp | 0 .../networktables2/util/IOException.cpp | 0 .../util/IllegalStateException.cpp | 0 .../networktables2/util/StringCache.cpp | 0 .../tables/TableKeyNotDefinedException.cpp | 0 networktables/cpp/parent/pom.xml | 40 - networktables/cpp/pom.xml | 27 - networktables/pom.xml | 1 - ni-libraries/README.org | 11 - ...pObject.so => libFRC_FPGA_ChipObject.so.1} | Bin ni-libraries/libFRC_FPGA_ChipObject/pom.xml | 33 - ...on.so => libFRC_NetworkCommunication.so.1} | Bin .../libFRC_NetworkCommunication/pom.xml | 39 - .../libNiFpga.so => libNiFpga.so.13} | Bin ni-libraries/libNiFpga/pom.xml | 18 - .../libNiFpgaLv.so => libNiFpgaLv.so.13} | Bin ni-libraries/libNiFpgaLv/pom.xml | 18 - .../libNiRioSrv.so => libNiRioSrv.so.13} | Bin ni-libraries/libNiRioSrv/pom.xml | 18 - ...ject.so => libRoboRIO_FRC_ChipObject.so.1} | Bin .../libRoboRIO_FRC_ChipObject/pom.xml | 33 - ni-libraries/libfrccansae/libfrccansae.so | Bin 215996 -> 0 bytes ni-libraries/libfrccansae/pom.xml | 18 - .../{libi2c/libi2c.so => libi2c.so.1} | Bin ni-libraries/libi2c/pom.xml | 18 - .../libni_emb.so => libni_emb.so.6} | Bin ni-libraries/libni_emb/pom.xml | 28 - .../libni_rtlog.so => libni_rtlog.so.2} | Bin ni-libraries/libni_rtlog/pom.xml | 18 - ...irio_emb_can.so => libnirio_emb_can.so.14} | Bin ni-libraries/libnirio_emb_can/pom.xml | 28 - .../{libspi/libspi.so => libspi.so.1} | Bin ni-libraries/libspi/pom.xml | 18 - ni-libraries/libvisa.so | Bin 0 -> 192976 bytes ni-libraries/parent/pom.xml | 57 - ni-libraries/pom.xml | 25 - pom.xml | 83 +- wpilibc/.cproject | 31 - wpilibc/.project | 20 - wpilibc/.settings/Makefile | 2184 ----------------- .../org.eclipse.ltk.core.refactoring.prefs | 3 - wpilibc/.wrmakefile | 48 - wpilibc/.wrproject | 1414 ----------- wpilibc/Athena/pom.xml | 58 - wpilibc/CMakeLists.txt | 13 + wpilibc/Eclipse.cproject | 109 - wpilibc/Eclipse.project | 27 - wpilibc/Makefile | 34 - wpilibc/{src/main => }/include/ADXL345_I2C.h | 0 wpilibc/{src/main => }/include/ADXL345_SPI.h | 0 .../{src/main => }/include/Accelerometer.h | 0 .../{src/main => }/include/AnalogChannel.h | 0 wpilibc/{src/main => }/include/AnalogModule.h | 0 .../{src/main => }/include/AnalogTrigger.h | 0 .../main => }/include/AnalogTriggerOutput.h | 0 wpilibc/{src/main => }/include/Base.h | 0 .../include/Buttons/AnalogIOButton.h | 0 .../{src/main => }/include/Buttons/Button.h | 0 .../include/Buttons/ButtonScheduler.h | 0 .../include/Buttons/CancelButtonScheduler.h | 0 .../include/Buttons/DigitalIOButton.h | 0 .../include/Buttons/HeldButtonScheduler.h | 0 .../include/Buttons/InternalButton.h | 0 .../include/Buttons/JoystickButton.h | 0 .../main => }/include/Buttons/NetworkButton.h | 0 .../include/Buttons/PressedButtonScheduler.h | 0 .../include/Buttons/ReleasedButtonScheduler.h | 0 .../include/Buttons/ToggleButtonScheduler.h | 0 .../{src/main => }/include/Buttons/Trigger.h | 0 .../main => }/include/CAN/JaguarCANDriver.h | 0 .../{src/main => }/include/CAN/can_proto.h | 0 wpilibc/{src/main => }/include/CANJaguar.h | 0 .../{src/main => }/include/Commands/Command.h | 0 .../main => }/include/Commands/CommandGroup.h | 0 .../include/Commands/CommandGroupEntry.h | 0 .../main => }/include/Commands/PIDCommand.h | 0 .../main => }/include/Commands/PIDSubsystem.h | 0 .../main => }/include/Commands/PrintCommand.h | 0 .../main => }/include/Commands/Scheduler.h | 0 .../main => }/include/Commands/StartCommand.h | 0 .../main => }/include/Commands/Subsystem.h | 0 .../main => }/include/Commands/WaitCommand.h | 0 .../include/Commands/WaitForChildren.h | 0 .../include/Commands/WaitUntilCommand.h | 0 wpilibc/{src/main => }/include/Compressor.h | 0 wpilibc/{src/main => }/include/Controller.h | 0 wpilibc/{src/main => }/include/Counter.h | 0 wpilibc/{src/main => }/include/CounterBase.h | 0 wpilibc/{src/main => }/include/Dashboard.h | 0 .../{src/main => }/include/DashboardBase.h | 0 wpilibc/{src/main => }/include/DigitalInput.h | 0 .../{src/main => }/include/DigitalModule.h | 0 .../{src/main => }/include/DigitalOutput.h | 0 .../{src/main => }/include/DigitalSource.h | 0 .../{src/main => }/include/DoubleSolenoid.h | 0 .../{src/main => }/include/DriverStation.h | 0 .../include/DriverStationEnhancedIO.h | 0 .../{src/main => }/include/DriverStationLCD.h | 0 wpilibc/{src/main => }/include/Encoder.h | 0 wpilibc/{src/main => }/include/Error.h | 0 wpilibc/{src/main => }/include/ErrorBase.h | 0 wpilibc/{src/main => }/include/GearTooth.h | 0 wpilibc/{src/main => }/include/GenericHID.h | 0 wpilibc/{src/main => }/include/Gyro.h | 0 .../main => }/include/HiTechnicColorSensor.h | 0 .../{src/main => }/include/HiTechnicCompass.h | 0 wpilibc/{src/main => }/include/I2C.h | 0 .../include/InterruptableSensorBase.h | 0 .../{src/main => }/include/IterativeRobot.h | 0 wpilibc/{src/main => }/include/Jaguar.h | 0 wpilibc/{src/main => }/include/Joystick.h | 0 wpilibc/{src/main => }/include/Kinect.h | 0 wpilibc/{src/main => }/include/KinectStick.h | 0 .../main => }/include/LiveWindow/LiveWindow.h | 0 .../include/LiveWindow/LiveWindowSendable.h | 0 .../LiveWindow/LiveWindowStatusListener.h | 0 wpilibc/{src/main => }/include/Module.h | 0 wpilibc/{src/main => }/include/MotorSafety.h | 0 .../main => }/include/MotorSafetyHelper.h | 0 .../NetworkCommunication/AICalibration.h | 0 .../include/NetworkCommunication/FRCComm.h | 0 .../include/NetworkCommunication/LoadOut.h | 0 .../NetworkCommunication/UsageReporting.h | 0 .../NetworkCommunication/symModuleLink.h | 0 wpilibc/{src/main => }/include/Notifier.h | 0 .../{src/main => }/include/PIDController.h | 0 wpilibc/{src/main => }/include/PIDOutput.h | 0 wpilibc/{src/main => }/include/PIDSource.h | 0 wpilibc/{src/main => }/include/PWM.h | 0 wpilibc/{src/main => }/include/Preferences.h | 0 wpilibc/{src/main => }/include/Relay.h | 0 wpilibc/{src/main => }/include/Resource.h | 0 wpilibc/{src/main => }/include/RobotBase.h | 0 wpilibc/{src/main => }/include/RobotDrive.h | 0 wpilibc/{src/main => }/include/SPI.h | 0 wpilibc/{src/main => }/include/SafePWM.h | 0 wpilibc/{src/main => }/include/SensorBase.h | 0 wpilibc/{src/main => }/include/SerialPort.h | 0 wpilibc/{src/main => }/include/Servo.h | 0 wpilibc/{src/main => }/include/SimpleRobot.h | 0 wpilibc/{src/main => }/include/Skeleton.h | 0 .../include/SmartDashboard/NamedSendable.h | 0 .../include/SmartDashboard/Sendable.h | 0 .../include/SmartDashboard/SendableChooser.h | 0 .../include/SmartDashboard/SmartDashboard.h | 0 wpilibc/{src/main => }/include/Solenoid.h | 0 wpilibc/{src/main => }/include/SolenoidBase.h | 0 .../{src/main => }/include/SpeedController.h | 0 wpilibc/{src/main => }/include/Talon.h | 0 wpilibc/{src/main => }/include/Task.h | 0 wpilibc/{src/main => }/include/Timer.h | 0 wpilibc/{src/main => }/include/Ultrasonic.h | 0 wpilibc/{src/main => }/include/Utility.h | 0 wpilibc/{src/main => }/include/Victor.h | 0 wpilibc/{src/main => }/include/WPIErrors.h | 0 wpilibc/{src/main => }/include/WPILib.h | 0 wpilibc/{src/main => }/include/nivision.h | 0 wpilibc/{src/main => }/include/pcre.h | 0 wpilibc/{src/main => }/include/visa/visa.h | 0 .../{src/main => }/include/visa/visatype.h | 0 .../{src/main/native => lib}/ADXL345_I2C.cpp | 0 .../{src/main/native => lib}/ADXL345_SPI.cpp | 0 .../main/native => lib}/Accelerometer.cpp | 0 .../main/native => lib}/AnalogChannel.cpp | 0 .../{src/main/native => lib}/AnalogModule.cpp | 0 .../main/native => lib}/AnalogTrigger.cpp | 0 .../native => lib}/AnalogTriggerOutput.cpp | 0 .../native => lib}/Buttons/AnalogIOButton.cpp | 0 .../main/native => lib}/Buttons/Button.cpp | 0 .../Buttons/ButtonScheduler.cpp | 0 .../Buttons/CancelButtonScheduler.cpp | 0 .../Buttons/DigitalIOButton.cpp | 0 .../Buttons/HeldButtonScheduler.cpp | 0 .../native => lib}/Buttons/InternalButton.cpp | 0 .../native => lib}/Buttons/JoystickButton.cpp | 0 .../native => lib}/Buttons/NetworkButton.cpp | 0 .../Buttons/PressedButtonScheduler.cpp | 0 .../Buttons/ReleasedButtonScheduler.cpp | 0 .../Buttons/ToggleButtonScheduler.cpp | 0 .../main/native => lib}/Buttons/Trigger.cpp | 0 .../{src/main/native => lib}/CANJaguar.cpp | 0 .../main/native => lib}/Commands/Command.cpp | 0 .../native => lib}/Commands/CommandGroup.cpp | 0 .../Commands/CommandGroupEntry.cpp | 0 .../native => lib}/Commands/PIDCommand.cpp | 0 .../native => lib}/Commands/PIDSubsystem.cpp | 0 .../native => lib}/Commands/PrintCommand.cpp | 0 .../native => lib}/Commands/Scheduler.cpp | 0 .../native => lib}/Commands/StartCommand.cpp | 0 .../native => lib}/Commands/Subsystem.cpp | 0 .../native => lib}/Commands/WaitCommand.cpp | 0 .../Commands/WaitForChildren.cpp | 0 .../Commands/WaitUntilCommand.cpp | 0 .../{src/main/native => lib}/Compressor.cpp | 0 wpilibc/{src/main/native => lib}/Counter.cpp | 0 .../{src/main/native => lib}/Dashboard.cpp | 0 .../{src/main/native => lib}/DigitalInput.cpp | 0 .../main/native => lib}/DigitalModule.cpp | 0 .../main/native => lib}/DigitalOutput.cpp | 0 .../main/native => lib}/DigitalSource.cpp | 0 .../main/native => lib}/DoubleSolenoid.cpp | 0 .../main/native => lib}/DriverStation.cpp | 0 .../DriverStationEnhancedIO.cpp | 0 .../main/native => lib}/DriverStationLCD.cpp | 0 wpilibc/{src/main/native => lib}/Encoder.cpp | 0 wpilibc/{src/main/native => lib}/Error.cpp | 0 .../{src/main/native => lib}/ErrorBase.cpp | 0 .../{src/main/native => lib}/GearTooth.cpp | 0 wpilibc/{src/main/native => lib}/Gyro.cpp | 0 .../native => lib}/HiTechnicColorSensor.cpp | 0 .../main/native => lib}/HiTechnicCompass.cpp | 0 wpilibc/{src/main/native => lib}/I2C.cpp | 0 .../InterruptableSensorBase.cpp | 0 .../main/native => lib}/IterativeRobot.cpp | 0 wpilibc/{src/main/native => lib}/Jaguar.cpp | 0 wpilibc/{src/main/native => lib}/Joystick.cpp | 0 wpilibc/{src/main/native => lib}/Kinect.cpp | 0 .../{src/main/native => lib}/KinectStick.cpp | 0 .../native => lib}/LiveWindow/LiveWindow.cpp | 0 .../LiveWindow/LiveWindowStatusListener.cpp | 0 wpilibc/{src/main/native => lib}/Module.cpp | 0 .../main/native => lib}/MotorSafetyHelper.cpp | 0 wpilibc/{src/main/native => lib}/Notifier.cpp | 0 .../main/native => lib}/PIDController.cpp | 0 wpilibc/{src/main/native => lib}/PWM.cpp | 0 .../{src/main/native => lib}/Preferences.cpp | 4 - wpilibc/{src/main/native => lib}/Relay.cpp | 0 wpilibc/{src/main/native => lib}/Resource.cpp | 0 .../{src/main/native => lib}/RobotBase.cpp | 0 .../{src/main/native => lib}/RobotDrive.cpp | 0 wpilibc/{src/main/native => lib}/SPI.cpp | 0 wpilibc/{src/main/native => lib}/SafePWM.cpp | 0 .../{src/main/native => lib}/SensorBase.cpp | 0 .../{src/main/native => lib}/SerialPort.cpp | 0 wpilibc/{src/main/native => lib}/Servo.cpp | 0 .../{src/main/native => lib}/SimpleRobot.cpp | 0 .../SmartDashboard/SendableChooser.cpp | 0 .../SmartDashboard/SmartDashboard.cpp | 0 wpilibc/{src/main/native => lib}/Solenoid.cpp | 0 .../{src/main/native => lib}/SolenoidBase.cpp | 0 wpilibc/{src/main/native => lib}/Talon.cpp | 0 wpilibc/{src/main/native => lib}/Task.cpp | 0 wpilibc/{src/main/native => lib}/Timer.cpp | 0 .../{src/main/native => lib}/Ultrasonic.cpp | 0 wpilibc/{src/main/native => lib}/Utility.cpp | 0 wpilibc/{src/main/native => lib}/Victor.cpp | 0 wpilibc/pom.xml | 13 - wpilibc/src/main/include/Vision/AxisCamera.h | 114 - .../main/include/Vision/AxisCameraParams.h | 91 - wpilibc/src/main/include/Vision/BinaryImage.h | 42 - wpilibc/src/main/include/Vision/ColorImage.h | 68 - .../main/include/Vision/EnumCameraParameter.h | 28 - wpilibc/src/main/include/Vision/HSLImage.h | 24 - wpilibc/src/main/include/Vision/ImageBase.h | 29 - .../main/include/Vision/IntCameraParameter.h | 36 - wpilibc/src/main/include/Vision/MonoImage.h | 29 - .../src/main/include/Vision/PCVideoServer.h | 39 - wpilibc/src/main/include/Vision/RGBImage.h | 23 - wpilibc/src/main/include/Vision/Threshold.h | 30 - wpilibc/src/main/native/Vision/AxisCamera.cpp | 502 ---- .../main/native/Vision/AxisCameraParams.cpp | 469 ---- .../src/main/native/Vision/BinaryImage.cpp | 223 -- wpilibc/src/main/native/Vision/ColorImage.cpp | 465 ---- .../native/Vision/EnumCameraParameter.cpp | 67 - wpilibc/src/main/native/Vision/HSLImage.cpp | 28 - wpilibc/src/main/native/Vision/ImageBase.cpp | 77 - .../main/native/Vision/IntCameraParameter.cpp | 111 - wpilibc/src/main/native/Vision/MonoImage.cpp | 53 - .../src/main/native/Vision/PCVideoServer.cpp | 283 --- wpilibc/src/main/native/Vision/RGBImage.cpp | 28 - wpilibc/src/main/native/Vision/Threshold.cpp | 18 - .../scripts/CopyWPILibToUpdateDirectory.cmd | 83 - .../src/main/scripts/updateBuiltInLibrary.cmd | 61 - wpilibj/wpilibJava/.gitignore | 2 + wpilibj/wpilibJavaFinal/.gitignore | 2 + wpilibj/wpilibJavaFinal/pom.xml | 4 +- wpilibj/wpilibJavaJNI/.gitignore | 2 + wpilibj/wpilibJavaJNI/CMakeLists.txt | 23 + .../{src/main/native => lib}/AnalogJNI.cpp | 0 .../{src/main/native => lib}/CANJNI.cpp | 0 .../{src/main/native => lib}/CounterJNI.cpp | 0 .../{src/main/native => lib}/DIOJNI.cpp | 0 .../{src/main/native => lib}/EncoderJNI.cpp | 0 .../FRCNetworkCommunicationsLibrary.cpp | 0 .../{src/main/native => lib}/HALUtil.cpp | 0 .../{src/main/native => lib}/I2CJNI.cpp | 0 .../{src/main/native => lib}/InterruptJNI.cpp | 0 .../{src/main/native => lib}/JNIWrapper.cpp | 0 .../{src/main/native => lib}/PWMJNI.cpp | 0 .../{src/main/native => lib}/RelayJNI.cpp | 0 .../{src/main/native => lib}/SPIJNI.cpp | 0 wpilibj/wpilibJavaJNI/pom.xml | 343 ++- 804 files changed, 586 insertions(+), 9377 deletions(-) create mode 100644 CMakeLists.txt rename {ni-libraries => cmake}/.gitignore (100%) create mode 100644 cmake/pom.xml delete mode 100644 hal/.cproject delete mode 100644 hal/.gitignore delete mode 100644 hal/.project delete mode 100644 hal/Athena/pom.xml delete mode 100644 hal/Athena/src/main/native/NetworkCommunication/AICalibration.h delete mode 100644 hal/Athena/src/main/native/NetworkCommunication/CANInterfacePlugin.h delete mode 100644 hal/Athena/src/main/native/NetworkCommunication/FRCComm.h delete mode 100644 hal/Athena/src/main/native/NetworkCommunication/JaguarCANDriver.h delete mode 100644 hal/Athena/src/main/native/NetworkCommunication/LoadOut.h delete mode 100644 hal/Athena/src/main/native/NetworkCommunication/UsageReporting.h rename hal/include/{src/main/include => }/HAL/Analog.h (100%) rename hal/include/{src/main/include => }/HAL/CAN.h (100%) rename hal/include/{src/main/include => }/HAL/Digital.h (100%) rename hal/include/{src/main/include => }/HAL/Errors.h (100%) rename hal/include/{src/main/include => }/HAL/HAL.h (100%) rename hal/include/{src/main/include => }/HAL/Interrupts.h (100%) rename hal/include/{src/main/include => }/HAL/Notifier.h (100%) rename hal/include/{src/main/include => }/HAL/Semaphore.h (100%) rename hal/include/{src/main/include => }/HAL/Solenoid.h (100%) rename hal/include/{src/main/include => }/HAL/Task.h (100%) rename hal/include/{src/main/include => }/HAL/Utilities.h (100%) rename hal/include/{src/main/include => }/HAL/cpp/Resource.h (100%) rename hal/include/{src/main/include => }/HAL/cpp/StackTrace.h (100%) rename hal/include/{src/main/include => }/HAL/cpp/Synchronized.h (100%) rename hal/include/{src/main/include => }/Log.h (100%) delete mode 100644 hal/include/pom.xml rename hal/{Athena/src/main/native => lib/Athena}/Analog.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/FRC_FPGA_ChipObject_Aliases.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/RoboRIO_FRC_ChipObject_Aliases.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/fpgainterfacecapi/NiFpga.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/nInterfaceGlobals.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/printFpgaVersion.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tAI.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tAO.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tAccel.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tAccumulator.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tAlarm.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tAnalogTrigger.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tBIST.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tCounter.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tDIO.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tDMA.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tDMAManager.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tEncoder.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tGlobal.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tInterrupt.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tInterruptManager.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tPWM.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tPower.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tRelay.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tSPI.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tSysWatchdog.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tSystem.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/ChipObject/tSystemInterface.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/Digital.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/HAL.cpp (98%) rename hal/{Athena/src/main/native => lib/Athena}/Interrupts.cpp (100%) rename hal/{Athena/src/main/include => lib/Athena}/NetworkCommunication/AICalibration.h (100%) rename hal/{Athena/src/main/include => lib/Athena}/NetworkCommunication/CANInterfacePlugin.h (100%) rename hal/{Athena/src/main/include => lib/Athena}/NetworkCommunication/FRCComm.h (100%) rename hal/{Athena/src/main/include => lib/Athena}/NetworkCommunication/JaguarCANDriver.h (100%) rename hal/{Athena/src/main/include => lib/Athena}/NetworkCommunication/LoadOut.h (100%) rename hal/{Athena/src/main/include => lib/Athena}/NetworkCommunication/UsageReporting.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/Notifier.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/Port.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/Semaphore.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/Solenoid.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/Task.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/Utilities.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/cpp/Resource.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/cpp/StackTrace.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/cpp/Synchronized.cpp (100%) rename hal/{Athena/src/main/native => lib/Athena}/i2clib/i2c-lib.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/i2clib/i2clib/environs.h (100%) rename hal/{Athena/src/main/native => lib/Athena}/spilib/spi-lib.h (100%) delete mode 100644 hal/pom.xml delete mode 100644 maven-utilities/athena/cpp-executable/pom.xml delete mode 100644 maven-utilities/athena/shared-library/pom.xml delete mode 100644 maven-utilities/athena/static-library/pom.xml delete mode 100644 networktables/cpp/.cproject delete mode 100644 networktables/cpp/.project delete mode 100644 networktables/cpp/.settings/org.eclipse.cdt.managedbuilder.core.prefs delete mode 100644 networktables/cpp/Athena/pom.xml create mode 100644 networktables/cpp/CMakeLists.txt rename networktables/cpp/include/{src/main/include => }/NTErrorBase.h (100%) rename networktables/cpp/include/{src/main/include => }/OSAL/Synchronized.h (100%) rename networktables/cpp/include/{src/main/include => }/OSAL/Task.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables/NetworkTable.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables/NetworkTableConnectionListenerAdapter.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables/NetworkTableKeyListenerAdapter.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables/NetworkTableListenerAdapter.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables/NetworkTableMode.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables/NetworkTableProvider.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables/NetworkTableSubListenerAdapter.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/AbstractNetworkTableEntryStore.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/FlushableOutgoingEntryReceiver.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/IncomingEntryReceiver.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/NetworkTableEntry.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/NetworkTableMessageType.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/NetworkTableNode.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/OutgoingEntryReceiver.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/TableKeyExistsWithDifferentTypeException.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/TransactionDirtier.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/WriteManager.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/client/ClientConnectionAdapter.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/client/ClientConnectionListenerManager.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/client/ClientConnectionState.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/client/ClientNetworkTableEntryStore.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/client/NetworkTableClient.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/connection/BadMessageException.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/connection/ConnectionAdapter.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/connection/ConnectionMonitorThread.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/connection/DataIOStream.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/connection/NetworkTableConnection.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/NetworkTableServer.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/ServerAdapterManager.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/ServerConnectionAdapter.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/ServerConnectionList.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/ServerConnectionState.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/ServerIncomingConnectionListener.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/ServerIncomingStreamMonitor.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/server/ServerNetworkTableEntryStore.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/stream/FDIOStream.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/stream/IOStream.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/stream/IOStreamFactory.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/stream/IOStreamProvider.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/stream/SocketServerStreamProvider.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/stream/SocketStreamFactory.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/stream/SocketStreams.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/thread/DefaultThreadManager.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/thread/NTThread.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/thread/NTThreadManager.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/thread/PeriodicRunnable.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/ArrayData.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/ArrayEntryType.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/BooleanArray.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/ComplexData.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/ComplexEntryType.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/DefaultEntryTypes.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/NetworkTableEntryType.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/NetworkTableEntryTypeManager.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/NumberArray.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/type/StringArray.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/util/EOFException.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/util/IOException.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/util/IllegalStateException.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/util/StringCache.h (100%) rename networktables/cpp/include/{src/main/include => }/networktables2/util/System.h (100%) delete mode 100644 networktables/cpp/include/pom.xml rename networktables/cpp/include/{src/main/include => }/tables/IRemote.h (100%) rename networktables/cpp/include/{src/main/include => }/tables/IRemoteConnectionListener.h (100%) rename networktables/cpp/include/{src/main/include => }/tables/ITable.h (100%) rename networktables/cpp/include/{src/main/include => }/tables/ITableListener.h (100%) rename networktables/cpp/include/{src/main/include => }/tables/ITableProvider.h (100%) rename networktables/cpp/include/{src/main/include => }/tables/TableKeyNotDefinedException.h (100%) rename networktables/cpp/{Athena/src/main/native => lib/Athena}/OSAL/Synchronized.cpp (100%) rename networktables/cpp/{Athena/src/main/native => lib/Athena}/OSAL/System.cpp (100%) rename networktables/cpp/{Athena/src/main/native => lib/Athena}/networktables2/stream/FDIOStream.cpp (100%) rename networktables/cpp/{Athena/src/main/native => lib/Athena}/networktables2/stream/SocketServerStreamProvider.cpp (100%) rename networktables/cpp/{Athena/src/main/native => lib/Athena}/networktables2/stream/SocketStreamFactory.cpp (100%) rename networktables/cpp/{Athena/src/main/native => lib/Athena}/networktables2/stream/SocketStreams.cpp (100%) rename networktables/cpp/{Athena/src/main/native => lib/Athena}/networktables2/thread/DefaultThreadManager.cpp (100%) rename networktables/cpp/{ => lib}/Desktop/pom.xml (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/ant/ant/cpptasks.jar (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/ant/build.properties (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/ant/build.xml (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/ant/test.xml (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/broken-tests/ConnectionListTests.cpp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/broken-tests/include/mocks/networktables2/MockNetworkTableEntry.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/broken-tests/include/mocks/networktables2/MockOutgoingEntryReceiver.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/broken-tests/tests/networktables2/util/UStringTest.cpp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/include/ByteArrayIOStream.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/include/TesterTemplate.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/include/mocks/networktables2/IOStreamProviderMock.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/include/mocks/networktables2/MockServerConnectionAdapter.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/include/mocks/networktables2/NTThreadManagerMock.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/include/mocks/networktables2/NTThreadMock.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/include/mocks/networktables2/NetworkTableEntry.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/tests/ByteArrayIOStream.cpp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/tests/networktables2/server/ServerTest.cpp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/desktop-test/tests/networktables2/type/EntryTypeTest.cpp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/CHANGES (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/CMakeLists.txt (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/CONTRIBUTORS (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/COPYING (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/Makefile.am (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/Makefile.in (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/README (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/aclocal.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/build-aux/config.guess (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/build-aux/config.h.in (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/build-aux/config.sub (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/build-aux/depcomp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/build-aux/install-sh (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/build-aux/ltmain.sh (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/build-aux/missing (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/configure (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/configure.ac (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/fused-src/gmock-gtest-all.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/fused-src/gmock/gmock.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/fused-src/gmock_main.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/fused-src/gtest/gtest.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/CHANGES (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/CMakeLists.txt (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/CONTRIBUTORS (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/COPYING (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/Makefile.am (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/Makefile.in (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/README (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/aclocal.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/build-aux/config.guess (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/build-aux/config.h.in (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/build-aux/config.sub (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/build-aux/depcomp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/build-aux/install-sh (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/build-aux/ltmain.sh (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/build-aux/missing (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/cmake/internal_utils.cmake (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/codegear/gtest.cbproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/codegear/gtest.groupproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/codegear/gtest_all.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/codegear/gtest_link.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/codegear/gtest_main.cbproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/codegear/gtest_unittest.cbproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/configure (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/configure.ac (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/fused-src/gtest/gtest-all.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/fused-src/gtest/gtest.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/fused-src/gtest/gtest_main.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-death-test.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-message.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-printers.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-spi.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-test-part.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest-typed-test.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest_pred_impl.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/gtest_prod.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-death-test-internal.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-filepath.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-internal.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-linked_ptr.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-port.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-string.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/m4/acx_pthread.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/m4/gtest.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/m4/libtool.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/m4/ltoptions.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/m4/ltsugar.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/m4/ltversion.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/m4/lt~obsolete.m4 (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/make/Makefile (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest-md.sln (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest-md.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest.sln (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest_main-md.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest_main.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest_prod_test-md.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest_prod_test.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest_unittest-md.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/msvc/gtest_unittest.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/prime_tables.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample1.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample1.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample10_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample1_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample2.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample2.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample2_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample3-inl.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample3_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample4.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample4.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample4_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample5_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample6_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample7_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample8_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/samples/sample9_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/scripts/fuse_gtest_files.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/scripts/gen_gtest_pred_impl.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/scripts/gtest-config.in (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/scripts/pump.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/scripts/test/Makefile (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-all.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-death-test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-filepath.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-internal-inl.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-port.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-printers.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-test-part.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest-typed-test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/src/gtest_main.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-death-test_ex_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-death-test_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-filepath_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-linked_ptr_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-listener_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-message_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-options_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-param-test2_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-param-test_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-param-test_test.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-port_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-printers_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-test-part_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-tuple_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-typed-test2_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-typed-test_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-typed-test_test.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest-unittest-api_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_all_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_color_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_color_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_env_var_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_env_var_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_environment_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_filter_unittest.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_filter_unittest_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_help_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_help_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_list_tests_unittest.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_list_tests_unittest_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_main_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_no_test_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_output_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_output_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_output_test_golden_lin.txt (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_pred_impl_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_prod_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_repeat_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_shuffle_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_shuffle_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_sole_header_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_stress_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_test_utils.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_throw_on_failure_ex_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_uninitialized_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_uninitialized_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_unittest.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_xml_outfile1_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_xml_outfile2_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_xml_outfiles_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_xml_output_unittest.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_xml_output_unittest_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/gtest_xml_test_utils.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/production.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/test/production.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Config/DebugProject.xcconfig (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Config/FrameworkTarget.xcconfig (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Config/General.xcconfig (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Config/ReleaseProject.xcconfig (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Config/TestTarget.xcconfig (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Resources/Info.plist (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/Info.plist (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/runtests.sh (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Scripts/runtests.sh (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/Scripts/versiongenerate.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/gtest/xcode/gtest.xcodeproj/project.pbxproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-actions.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-cardinalities.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-actions.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-actions.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-matchers.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-matchers.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-matchers.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-more-actions.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock-spec-builders.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/gmock.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h.pump (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/internal/gmock-internal-utils.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/include/gmock/internal/gmock-port.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/make/Makefile (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2005/gmock.sln (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2005/gmock.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2005/gmock_config.vsprops (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2005/gmock_main.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2005/gmock_test.vcproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2010/gmock.sln (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2010/gmock.vcxproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2010/gmock_config.props (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2010/gmock_main.vcxproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/msvc/2010/gmock_test.vcxproj (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/fuse_gmock_files.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/COPYING (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/README (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/README.cppclean (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/cpp/__init__.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/cpp/ast.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/cpp/gmock_class.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/cpp/keywords.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/cpp/tokenize.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/cpp/utils.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/generator/gmock_gen.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/scripts/gmock-config.in (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/src/gmock-all.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/src/gmock-cardinalities.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/src/gmock-internal-utils.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/src/gmock-matchers.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/src/gmock-spec-builders.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/src/gmock.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/src/gmock_main.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-actions_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-cardinalities_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-generated-actions_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-generated-function-mockers_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-generated-internal-utils_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-generated-matchers_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-internal-utils_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-matchers_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-more-actions_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-nice-strict_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-port_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock-spec-builders_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_all_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_leak_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_leak_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_link2_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_link_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_link_test.h (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_output_test.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_output_test_.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_output_test_golden.txt (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_test.cc (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/gmock-1.6.0/test/gmock_test_utils.py (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/test-client/test-client.cpp (100%) rename networktables/cpp/{ => lib}/Desktop/src/test/native/test-server/test-server.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/OSAL/Synchronized.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/OSAL/System.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/OSAL/Task.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/networktables2/stream/FDIOStream.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/networktables2/stream/SocketServerStreamProvider.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/networktables2/stream/SocketStreamFactory.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/networktables2/stream/SocketStreams.cpp (100%) rename networktables/cpp/{ => lib}/Win32/src/main/native/networktables2/thread/DefaultThreadManager.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables/NetworkTable.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables/NetworkTableConnectionListenerAdapter.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables/NetworkTableKeyListenerAdapter.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables/NetworkTableListenerAdapter.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables/NetworkTableMode.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables/NetworkTableProvider.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables/NetworkTableSubListenerAdapter.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/AbstractNetworkTableEntryStore.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/NetworkTableEntry.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/NetworkTableNode.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/OutgoingEntryReciever.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/TableKeyExistsWithDifferentTypeException.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/TransactionDirtier.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/WriteManager.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/client/ClientConnectionAdapter.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/client/ClientConnectionState.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/client/ClientNetworkTableEntryStore.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/client/NetworkTableClient.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/connection/BadMessageException.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/connection/ConnectionMonitorThread.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/connection/DataIOStream.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/connection/NetworkTableConnection.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/server/NetworkTableServer.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/server/ServerConnectionAdapter.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/server/ServerConnectionList.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/server/ServerConnectionState.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/server/ServerIncomingStreamMonitor.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/server/ServerNetworkTableEntryStore.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/ArrayData.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/ArrayEntryType.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/BooleanArray.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/ComplexData.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/ComplexEntryType.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/DefaultEntryTypes.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/NetworkTableEntryType.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/NetworkTableEntryTypeManager.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/NumberArray.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/type/StringArray.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/util/EOFException.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/util/IOException.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/util/IllegalStateException.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/networktables2/util/StringCache.cpp (100%) rename networktables/cpp/{parent/src/main/native => lib/share}/tables/TableKeyNotDefinedException.cpp (100%) delete mode 100644 networktables/cpp/parent/pom.xml delete mode 100644 networktables/cpp/pom.xml delete mode 100644 ni-libraries/README.org rename ni-libraries/{libFRC_FPGA_ChipObject/libFRC_FPGA_ChipObject.so => libFRC_FPGA_ChipObject.so.1} (100%) delete mode 100644 ni-libraries/libFRC_FPGA_ChipObject/pom.xml rename ni-libraries/{libFRC_NetworkCommunication/libFRC_NetworkCommunication.so => libFRC_NetworkCommunication.so.1} (100%) delete mode 100644 ni-libraries/libFRC_NetworkCommunication/pom.xml rename ni-libraries/{libNiFpga/libNiFpga.so => libNiFpga.so.13} (100%) delete mode 100644 ni-libraries/libNiFpga/pom.xml rename ni-libraries/{libNiFpgaLv/libNiFpgaLv.so => libNiFpgaLv.so.13} (100%) delete mode 100644 ni-libraries/libNiFpgaLv/pom.xml rename ni-libraries/{libNiRioSrv/libNiRioSrv.so => libNiRioSrv.so.13} (100%) delete mode 100644 ni-libraries/libNiRioSrv/pom.xml rename ni-libraries/{libRoboRIO_FRC_ChipObject/libRoboRIO_FRC_ChipObject.so => libRoboRIO_FRC_ChipObject.so.1} (100%) delete mode 100644 ni-libraries/libRoboRIO_FRC_ChipObject/pom.xml delete mode 100644 ni-libraries/libfrccansae/libfrccansae.so delete mode 100644 ni-libraries/libfrccansae/pom.xml rename ni-libraries/{libi2c/libi2c.so => libi2c.so.1} (100%) delete mode 100644 ni-libraries/libi2c/pom.xml rename ni-libraries/{libni_emb/libni_emb.so => libni_emb.so.6} (100%) delete mode 100644 ni-libraries/libni_emb/pom.xml rename ni-libraries/{libni_rtlog/libni_rtlog.so => libni_rtlog.so.2} (100%) delete mode 100644 ni-libraries/libni_rtlog/pom.xml rename ni-libraries/{libnirio_emb_can/libnirio_emb_can.so => libnirio_emb_can.so.14} (100%) delete mode 100644 ni-libraries/libnirio_emb_can/pom.xml rename ni-libraries/{libspi/libspi.so => libspi.so.1} (100%) delete mode 100644 ni-libraries/libspi/pom.xml create mode 100644 ni-libraries/libvisa.so delete mode 100644 ni-libraries/parent/pom.xml delete mode 100644 ni-libraries/pom.xml delete mode 100644 wpilibc/.cproject delete mode 100644 wpilibc/.project delete mode 100644 wpilibc/.settings/Makefile delete mode 100644 wpilibc/.settings/org.eclipse.ltk.core.refactoring.prefs delete mode 100644 wpilibc/.wrmakefile delete mode 100644 wpilibc/.wrproject delete mode 100644 wpilibc/Athena/pom.xml create mode 100644 wpilibc/CMakeLists.txt delete mode 100644 wpilibc/Eclipse.cproject delete mode 100644 wpilibc/Eclipse.project delete mode 100644 wpilibc/Makefile rename wpilibc/{src/main => }/include/ADXL345_I2C.h (100%) rename wpilibc/{src/main => }/include/ADXL345_SPI.h (100%) rename wpilibc/{src/main => }/include/Accelerometer.h (100%) rename wpilibc/{src/main => }/include/AnalogChannel.h (100%) rename wpilibc/{src/main => }/include/AnalogModule.h (100%) rename wpilibc/{src/main => }/include/AnalogTrigger.h (100%) rename wpilibc/{src/main => }/include/AnalogTriggerOutput.h (100%) rename wpilibc/{src/main => }/include/Base.h (100%) rename wpilibc/{src/main => }/include/Buttons/AnalogIOButton.h (100%) rename wpilibc/{src/main => }/include/Buttons/Button.h (100%) rename wpilibc/{src/main => }/include/Buttons/ButtonScheduler.h (100%) rename wpilibc/{src/main => }/include/Buttons/CancelButtonScheduler.h (100%) rename wpilibc/{src/main => }/include/Buttons/DigitalIOButton.h (100%) rename wpilibc/{src/main => }/include/Buttons/HeldButtonScheduler.h (100%) rename wpilibc/{src/main => }/include/Buttons/InternalButton.h (100%) rename wpilibc/{src/main => }/include/Buttons/JoystickButton.h (100%) rename wpilibc/{src/main => }/include/Buttons/NetworkButton.h (100%) rename wpilibc/{src/main => }/include/Buttons/PressedButtonScheduler.h (100%) rename wpilibc/{src/main => }/include/Buttons/ReleasedButtonScheduler.h (100%) rename wpilibc/{src/main => }/include/Buttons/ToggleButtonScheduler.h (100%) rename wpilibc/{src/main => }/include/Buttons/Trigger.h (100%) rename wpilibc/{src/main => }/include/CAN/JaguarCANDriver.h (100%) rename wpilibc/{src/main => }/include/CAN/can_proto.h (100%) rename wpilibc/{src/main => }/include/CANJaguar.h (100%) rename wpilibc/{src/main => }/include/Commands/Command.h (100%) rename wpilibc/{src/main => }/include/Commands/CommandGroup.h (100%) rename wpilibc/{src/main => }/include/Commands/CommandGroupEntry.h (100%) rename wpilibc/{src/main => }/include/Commands/PIDCommand.h (100%) rename wpilibc/{src/main => }/include/Commands/PIDSubsystem.h (100%) rename wpilibc/{src/main => }/include/Commands/PrintCommand.h (100%) rename wpilibc/{src/main => }/include/Commands/Scheduler.h (100%) rename wpilibc/{src/main => }/include/Commands/StartCommand.h (100%) rename wpilibc/{src/main => }/include/Commands/Subsystem.h (100%) rename wpilibc/{src/main => }/include/Commands/WaitCommand.h (100%) rename wpilibc/{src/main => }/include/Commands/WaitForChildren.h (100%) rename wpilibc/{src/main => }/include/Commands/WaitUntilCommand.h (100%) rename wpilibc/{src/main => }/include/Compressor.h (100%) rename wpilibc/{src/main => }/include/Controller.h (100%) rename wpilibc/{src/main => }/include/Counter.h (100%) rename wpilibc/{src/main => }/include/CounterBase.h (100%) rename wpilibc/{src/main => }/include/Dashboard.h (100%) rename wpilibc/{src/main => }/include/DashboardBase.h (100%) rename wpilibc/{src/main => }/include/DigitalInput.h (100%) rename wpilibc/{src/main => }/include/DigitalModule.h (100%) rename wpilibc/{src/main => }/include/DigitalOutput.h (100%) rename wpilibc/{src/main => }/include/DigitalSource.h (100%) rename wpilibc/{src/main => }/include/DoubleSolenoid.h (100%) rename wpilibc/{src/main => }/include/DriverStation.h (100%) rename wpilibc/{src/main => }/include/DriverStationEnhancedIO.h (100%) rename wpilibc/{src/main => }/include/DriverStationLCD.h (100%) rename wpilibc/{src/main => }/include/Encoder.h (100%) rename wpilibc/{src/main => }/include/Error.h (100%) rename wpilibc/{src/main => }/include/ErrorBase.h (100%) rename wpilibc/{src/main => }/include/GearTooth.h (100%) rename wpilibc/{src/main => }/include/GenericHID.h (100%) rename wpilibc/{src/main => }/include/Gyro.h (100%) rename wpilibc/{src/main => }/include/HiTechnicColorSensor.h (100%) rename wpilibc/{src/main => }/include/HiTechnicCompass.h (100%) rename wpilibc/{src/main => }/include/I2C.h (100%) rename wpilibc/{src/main => }/include/InterruptableSensorBase.h (100%) rename wpilibc/{src/main => }/include/IterativeRobot.h (100%) rename wpilibc/{src/main => }/include/Jaguar.h (100%) rename wpilibc/{src/main => }/include/Joystick.h (100%) rename wpilibc/{src/main => }/include/Kinect.h (100%) rename wpilibc/{src/main => }/include/KinectStick.h (100%) rename wpilibc/{src/main => }/include/LiveWindow/LiveWindow.h (100%) rename wpilibc/{src/main => }/include/LiveWindow/LiveWindowSendable.h (100%) rename wpilibc/{src/main => }/include/LiveWindow/LiveWindowStatusListener.h (100%) rename wpilibc/{src/main => }/include/Module.h (100%) rename wpilibc/{src/main => }/include/MotorSafety.h (100%) rename wpilibc/{src/main => }/include/MotorSafetyHelper.h (100%) rename wpilibc/{src/main => }/include/NetworkCommunication/AICalibration.h (100%) rename wpilibc/{src/main => }/include/NetworkCommunication/FRCComm.h (100%) rename wpilibc/{src/main => }/include/NetworkCommunication/LoadOut.h (100%) rename wpilibc/{src/main => }/include/NetworkCommunication/UsageReporting.h (100%) rename wpilibc/{src/main => }/include/NetworkCommunication/symModuleLink.h (100%) rename wpilibc/{src/main => }/include/Notifier.h (100%) rename wpilibc/{src/main => }/include/PIDController.h (100%) rename wpilibc/{src/main => }/include/PIDOutput.h (100%) rename wpilibc/{src/main => }/include/PIDSource.h (100%) rename wpilibc/{src/main => }/include/PWM.h (100%) rename wpilibc/{src/main => }/include/Preferences.h (100%) rename wpilibc/{src/main => }/include/Relay.h (100%) rename wpilibc/{src/main => }/include/Resource.h (100%) rename wpilibc/{src/main => }/include/RobotBase.h (100%) rename wpilibc/{src/main => }/include/RobotDrive.h (100%) rename wpilibc/{src/main => }/include/SPI.h (100%) rename wpilibc/{src/main => }/include/SafePWM.h (100%) rename wpilibc/{src/main => }/include/SensorBase.h (100%) rename wpilibc/{src/main => }/include/SerialPort.h (100%) rename wpilibc/{src/main => }/include/Servo.h (100%) rename wpilibc/{src/main => }/include/SimpleRobot.h (100%) rename wpilibc/{src/main => }/include/Skeleton.h (100%) rename wpilibc/{src/main => }/include/SmartDashboard/NamedSendable.h (100%) rename wpilibc/{src/main => }/include/SmartDashboard/Sendable.h (100%) rename wpilibc/{src/main => }/include/SmartDashboard/SendableChooser.h (100%) rename wpilibc/{src/main => }/include/SmartDashboard/SmartDashboard.h (100%) rename wpilibc/{src/main => }/include/Solenoid.h (100%) rename wpilibc/{src/main => }/include/SolenoidBase.h (100%) rename wpilibc/{src/main => }/include/SpeedController.h (100%) rename wpilibc/{src/main => }/include/Talon.h (100%) rename wpilibc/{src/main => }/include/Task.h (100%) rename wpilibc/{src/main => }/include/Timer.h (100%) rename wpilibc/{src/main => }/include/Ultrasonic.h (100%) rename wpilibc/{src/main => }/include/Utility.h (100%) rename wpilibc/{src/main => }/include/Victor.h (100%) rename wpilibc/{src/main => }/include/WPIErrors.h (100%) rename wpilibc/{src/main => }/include/WPILib.h (100%) rename wpilibc/{src/main => }/include/nivision.h (100%) rename wpilibc/{src/main => }/include/pcre.h (100%) rename wpilibc/{src/main => }/include/visa/visa.h (100%) rename wpilibc/{src/main => }/include/visa/visatype.h (100%) rename wpilibc/{src/main/native => lib}/ADXL345_I2C.cpp (100%) rename wpilibc/{src/main/native => lib}/ADXL345_SPI.cpp (100%) rename wpilibc/{src/main/native => lib}/Accelerometer.cpp (100%) rename wpilibc/{src/main/native => lib}/AnalogChannel.cpp (100%) rename wpilibc/{src/main/native => lib}/AnalogModule.cpp (100%) rename wpilibc/{src/main/native => lib}/AnalogTrigger.cpp (100%) rename wpilibc/{src/main/native => lib}/AnalogTriggerOutput.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/AnalogIOButton.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/Button.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/ButtonScheduler.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/CancelButtonScheduler.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/DigitalIOButton.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/HeldButtonScheduler.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/InternalButton.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/JoystickButton.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/NetworkButton.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/PressedButtonScheduler.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/ReleasedButtonScheduler.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/ToggleButtonScheduler.cpp (100%) rename wpilibc/{src/main/native => lib}/Buttons/Trigger.cpp (100%) rename wpilibc/{src/main/native => lib}/CANJaguar.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/Command.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/CommandGroup.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/CommandGroupEntry.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/PIDCommand.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/PIDSubsystem.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/PrintCommand.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/Scheduler.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/StartCommand.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/Subsystem.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/WaitCommand.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/WaitForChildren.cpp (100%) rename wpilibc/{src/main/native => lib}/Commands/WaitUntilCommand.cpp (100%) rename wpilibc/{src/main/native => lib}/Compressor.cpp (100%) rename wpilibc/{src/main/native => lib}/Counter.cpp (100%) rename wpilibc/{src/main/native => lib}/Dashboard.cpp (100%) rename wpilibc/{src/main/native => lib}/DigitalInput.cpp (100%) rename wpilibc/{src/main/native => lib}/DigitalModule.cpp (100%) rename wpilibc/{src/main/native => lib}/DigitalOutput.cpp (100%) rename wpilibc/{src/main/native => lib}/DigitalSource.cpp (100%) rename wpilibc/{src/main/native => lib}/DoubleSolenoid.cpp (100%) rename wpilibc/{src/main/native => lib}/DriverStation.cpp (100%) rename wpilibc/{src/main/native => lib}/DriverStationEnhancedIO.cpp (100%) rename wpilibc/{src/main/native => lib}/DriverStationLCD.cpp (100%) rename wpilibc/{src/main/native => lib}/Encoder.cpp (100%) rename wpilibc/{src/main/native => lib}/Error.cpp (100%) rename wpilibc/{src/main/native => lib}/ErrorBase.cpp (100%) rename wpilibc/{src/main/native => lib}/GearTooth.cpp (100%) rename wpilibc/{src/main/native => lib}/Gyro.cpp (100%) rename wpilibc/{src/main/native => lib}/HiTechnicColorSensor.cpp (100%) rename wpilibc/{src/main/native => lib}/HiTechnicCompass.cpp (100%) rename wpilibc/{src/main/native => lib}/I2C.cpp (100%) rename wpilibc/{src/main/native => lib}/InterruptableSensorBase.cpp (100%) rename wpilibc/{src/main/native => lib}/IterativeRobot.cpp (100%) rename wpilibc/{src/main/native => lib}/Jaguar.cpp (100%) rename wpilibc/{src/main/native => lib}/Joystick.cpp (100%) rename wpilibc/{src/main/native => lib}/Kinect.cpp (100%) rename wpilibc/{src/main/native => lib}/KinectStick.cpp (100%) rename wpilibc/{src/main/native => lib}/LiveWindow/LiveWindow.cpp (100%) rename wpilibc/{src/main/native => lib}/LiveWindow/LiveWindowStatusListener.cpp (100%) rename wpilibc/{src/main/native => lib}/Module.cpp (100%) rename wpilibc/{src/main/native => lib}/MotorSafetyHelper.cpp (100%) rename wpilibc/{src/main/native => lib}/Notifier.cpp (100%) rename wpilibc/{src/main/native => lib}/PIDController.cpp (100%) rename wpilibc/{src/main/native => lib}/PWM.cpp (100%) rename wpilibc/{src/main/native => lib}/Preferences.cpp (99%) rename wpilibc/{src/main/native => lib}/Relay.cpp (100%) rename wpilibc/{src/main/native => lib}/Resource.cpp (100%) rename wpilibc/{src/main/native => lib}/RobotBase.cpp (100%) rename wpilibc/{src/main/native => lib}/RobotDrive.cpp (100%) rename wpilibc/{src/main/native => lib}/SPI.cpp (100%) rename wpilibc/{src/main/native => lib}/SafePWM.cpp (100%) rename wpilibc/{src/main/native => lib}/SensorBase.cpp (100%) rename wpilibc/{src/main/native => lib}/SerialPort.cpp (100%) rename wpilibc/{src/main/native => lib}/Servo.cpp (100%) rename wpilibc/{src/main/native => lib}/SimpleRobot.cpp (100%) rename wpilibc/{src/main/native => lib}/SmartDashboard/SendableChooser.cpp (100%) rename wpilibc/{src/main/native => lib}/SmartDashboard/SmartDashboard.cpp (100%) rename wpilibc/{src/main/native => lib}/Solenoid.cpp (100%) rename wpilibc/{src/main/native => lib}/SolenoidBase.cpp (100%) rename wpilibc/{src/main/native => lib}/Talon.cpp (100%) rename wpilibc/{src/main/native => lib}/Task.cpp (100%) rename wpilibc/{src/main/native => lib}/Timer.cpp (100%) rename wpilibc/{src/main/native => lib}/Ultrasonic.cpp (100%) rename wpilibc/{src/main/native => lib}/Utility.cpp (100%) rename wpilibc/{src/main/native => lib}/Victor.cpp (100%) delete mode 100644 wpilibc/pom.xml delete mode 100644 wpilibc/src/main/include/Vision/AxisCamera.h delete mode 100644 wpilibc/src/main/include/Vision/AxisCameraParams.h delete mode 100644 wpilibc/src/main/include/Vision/BinaryImage.h delete mode 100644 wpilibc/src/main/include/Vision/ColorImage.h delete mode 100644 wpilibc/src/main/include/Vision/EnumCameraParameter.h delete mode 100644 wpilibc/src/main/include/Vision/HSLImage.h delete mode 100644 wpilibc/src/main/include/Vision/ImageBase.h delete mode 100644 wpilibc/src/main/include/Vision/IntCameraParameter.h delete mode 100644 wpilibc/src/main/include/Vision/MonoImage.h delete mode 100644 wpilibc/src/main/include/Vision/PCVideoServer.h delete mode 100644 wpilibc/src/main/include/Vision/RGBImage.h delete mode 100644 wpilibc/src/main/include/Vision/Threshold.h delete mode 100644 wpilibc/src/main/native/Vision/AxisCamera.cpp delete mode 100644 wpilibc/src/main/native/Vision/AxisCameraParams.cpp delete mode 100644 wpilibc/src/main/native/Vision/BinaryImage.cpp delete mode 100644 wpilibc/src/main/native/Vision/ColorImage.cpp delete mode 100644 wpilibc/src/main/native/Vision/EnumCameraParameter.cpp delete mode 100644 wpilibc/src/main/native/Vision/HSLImage.cpp delete mode 100644 wpilibc/src/main/native/Vision/ImageBase.cpp delete mode 100644 wpilibc/src/main/native/Vision/IntCameraParameter.cpp delete mode 100644 wpilibc/src/main/native/Vision/MonoImage.cpp delete mode 100644 wpilibc/src/main/native/Vision/PCVideoServer.cpp delete mode 100644 wpilibc/src/main/native/Vision/RGBImage.cpp delete mode 100644 wpilibc/src/main/native/Vision/Threshold.cpp delete mode 100644 wpilibc/src/main/scripts/CopyWPILibToUpdateDirectory.cmd delete mode 100644 wpilibc/src/main/scripts/updateBuiltInLibrary.cmd create mode 100644 wpilibj/wpilibJava/.gitignore create mode 100644 wpilibj/wpilibJavaFinal/.gitignore create mode 100644 wpilibj/wpilibJavaJNI/.gitignore create mode 100644 wpilibj/wpilibJavaJNI/CMakeLists.txt rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/AnalogJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/CANJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/CounterJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/DIOJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/EncoderJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/FRCNetworkCommunicationsLibrary.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/HALUtil.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/I2CJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/InterruptJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/JNIWrapper.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/PWMJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/RelayJNI.cpp (100%) rename wpilibj/wpilibJavaJNI/{src/main/native => lib}/SPIJNI.cpp (100%) diff --git a/.hgignore b/.hgignore index d855f99c8c..1ae5e257d1 100644 --- a/.hgignore +++ b/.hgignore @@ -1,24 +1,13 @@ -# auto-generated from .gitignore files by build-hgignore.py syntax: re ^\.hgignore$ -.*/.*~$ # '*~' in 'eclipse-plugins' -eclipse-plugins/.*/target(?:/|$) # 'target/' in 'eclipse-plugins' -eclipse-plugins/.*/bin(?:/|$) # 'bin/' in 'eclipse-plugins' -eclipse-plugins/.*/\.settings(?:/|$) # '.settings/' in 'eclipse-plugins' -networktables/.*/target(?:/|$) # 'target/' in 'networktables' -networktables/.*/build(?:/|$) # 'build/' in 'networktables' -networktables/.*/dist(?:/|$) # 'dist/' in 'networktables' -^networktables/OutlineViewer/nbproject/private(?:/|$) # '/OutlineViewer/nbproject/private/' in 'networktables' -maven-utilities/.*/target(?:/|$) # 'target/' in 'maven-utilities' -hal/.*/.*#$ # '*#' in 'hal' -hal/.*/PPC603gnu(?:/|$) # 'PPC603gnu/' in 'hal' -hal/.*/Debug(?:/|$) # 'Debug/' in 'hal' -hal/.*/target(?:/|$) # 'target/' in 'hal' -hal/.*/tmp(?:/|$) # 'tmp/' in 'hal' -hal/.*/GPATH$ # 'GPATH' in 'hal' -hal/.*/GRTAGS$ # 'GRTAGS' in 'hal' -hal/.*/GSYMS$ # 'GSYMS' in 'hal' -hal/.*/GTAGS$ # 'GTAGS' in 'hal' -ni-libraries/.*/target(?:/|$) # 'target/' in 'ni-libraries' -wpilib.?/.*/target(?:/|$) +.*/target(?:/|$) +.*/dist(?:/|$) +eclipse-plugins/.*/bin(?:/|$) +syntax: glob +wpilibc/build/ +hal/build/ +networktables/cpp/build/ +build/ +networktables/OutlineViewer/nbproject/private +*~ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..1d4db94500 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,12 @@ +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_SKIP_BUILD_RPATH TRUE) + +file(GLOB_RECURSE NI_LIBS ni-libraries/*.so*) +get_filename_component(HAL_API_INCLUDES hal/include REALPATH) +get_filename_component(NWT_API_INCLUDES networktables/cpp/include REALPATH) +add_subdirectory(hal) +add_subdirectory(networktables/cpp) +add_subdirectory(wpilibc) diff --git a/arm-toolchain.cmake b/arm-toolchain.cmake index 3a278ba21f..6835466c91 100644 --- a/arm-toolchain.cmake +++ b/arm-toolchain.cmake @@ -1,9 +1,10 @@ cmake_minimum_required(VERSION 2.8) INCLUDE(CMakeForceCompiler) -set(ARM_PREFIX arm-linux-gnueabi) +set(ARM_PREFIX arm-none-linux-gnueabi) set(CMAKE_SYSTEM_NAME Linux) CMAKE_FORCE_CXX_COMPILER(${ARM_PREFIX}-g++ GNU) +CMAKE_FORCE_C_COMPILER(${ARM_PREFIX}-gcc GNU) set(CMAKE_CXX_FLAGS "-march=armv7-a -mcpu=cortex-a9 -mfloat-abi=softfp -Wall" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_RELEASE "-O3 -g" CACHE STRING "" FORCE) # still want debugging for release? -SET(CMAKE_FIND_ROOT_PATH /home/patrick/wpilib/toolchains/arm-none-linux-gnueabi-4.4.1/arm-none-linux-gnueabi/libc) +SET(CMAKE_FIND_ROOT_PATH $ENV{USER_HOME}/wpilib/toolchains/arm-none-linux-gnueabi-4.4.1/arm-none-linux-gnueabi/libc) diff --git a/ni-libraries/.gitignore b/cmake/.gitignore similarity index 100% rename from ni-libraries/.gitignore rename to cmake/.gitignore diff --git a/cmake/pom.xml b/cmake/pom.xml new file mode 100644 index 0000000000..f74b997ae5 --- /dev/null +++ b/cmake/pom.xml @@ -0,0 +1,92 @@ + + + 4.0.0 + edu.wpi.first.wpilib.cmake + cpp-root + 1.0.0 + jar + + Unix Makefiles + + + + + com.googlecode.cmake-maven-project + cmake-maven-plugin + 2.8.11-b4 + + + cmake + generate-resources + + generate + + + + + + + + + + cmake2 + generate-resources + + compile + + + install + + + + + .. + ${project.build.directory}/cmake + ${project.build.directory}/cmake + ${cmakeGenerator} + release + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.7 + + + + set-version-info + + run + + process-sources + + + + + + + + + + + true + + + + + unzip-cpp-includes + compile + + run + + + + + + + + + + + + diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/pom.xml b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/pom.xml index a481b064e0..1b4187538c 100644 --- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/pom.xml +++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/pom.xml @@ -1,358 +1,145 @@ - - 4.0.0 - edu.wpi.first.wpilib.plugins.cpp - eclipse-plugin - - - edu.wpi.first.wpilib.plugins - edu.wpi.first.wpilib.plugins - 0.1.0.qualifier - .. - - - - DEVELOPMENT - ${project.build.directory}/cpp-zip - - - - - - . - - resources/configuration.properties - - true - - - - - maven-resources-plugin - 2.6 - - - copy-ant-resources-to-cpp-zip - generate-sources - - copy-resources - - - ${cpp-zip} - - - src/main/resources/cpp-zip - - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - 2.8 - - - - - fetch-cpp-zip-dependencies - compile - - copy - - - - - - edu.wpi.first.wpilib.networktables.cpp - libNetworkTablesAthena - 0.1.0-SNAPSHOT - a - libNetworkTables.a - - - edu.wpi.first.wpilib.hal - libHALAthena - 0.1.0-SNAPSHOT - a - libHAL.a - - - edu.wpi.first.wpilib.cpp - libWPILibAthena - 0.1.0-SNAPSHOT - a - libWPILib.a - - - com.ni.first.libraries - libFRC_NetworkCommunication - 0.1.0-SNAPSHOT - so - libFRC_NetworkCommunication.so - - - - com.ni.first.libraries - libRoboRIO_FRC_ChipObject - 0.1.0-SNAPSHOT - so - libRoboRIO_FRC_ChipObject.so - - - com.ni.first.libraries - libFRC_FPGA_ChipObject - 0.1.0-SNAPSHOT - so - libFRC_FPGA_ChipObject.so - - - com.ni.first.libraries - libNiFpga - 0.1.0-SNAPSHOT - so - libNiFpga.so - - - com.ni.first.libraries - libni_emb - 0.1.0-SNAPSHOT - so - libni_emb.so - - - com.ni.first.libraries - libnirio_emb_can - 0.1.0-SNAPSHOT - so - libnirio_emb_can.so - - - com.ni.first.libraries - libNiFpgaLv - 0.1.0-SNAPSHOT - so - libNiFpgaLv.so - - - com.ni.first.libraries - libNiRioSrv - 0.1.0-SNAPSHOT - so - libNiRioSrv.so - - - com.ni.first.libraries - libni_rtlog - 0.1.0-SNAPSHOT - so - libni_rtlog.so - - - - - edu.wpi.first.wpilib.hal - include - 0.1.0-SNAPSHOT - inczip - ${cpp-zip}/inczip - - - edu.wpi.first.wpilib.networktables.cpp - include - 0.1.0-SNAPSHOT - inczip - ${cpp-zip}/inczip - - - edu.wpi.first.wpilib.cpp - libWPILibAthena - 0.1.0-SNAPSHOT - inczip - ${cpp-zip}/inczip - - - ${cpp-zip}/lib - false - true - true - - - - - - org.apache.maven.plugins - maven-antrun-plugin - 1.7 - - - - - set-version-info - - run - - process-sources - - - - - - - - - - - true - - - - - - unzip-cpp-includes - compile - - run - - - - - - - - - - - - - - - - - - - generate-cpp-zip - compile - - run - - - - - - - - - - - - - - - - - edu.wpi.first.wpilib.networktables.cpp - libNetworkTablesAthena - 0.1.0-SNAPSHOT - a - - - edu.wpi.first.wpilib.hal - libHALAthena - 0.1.0-SNAPSHOT - a - - - edu.wpi.first.wpilib.cpp - libWPILibAthena - 0.1.0-SNAPSHOT - a - - - com.ni.first.libraries - libFRC_NetworkCommunication - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libRoboRIO_FRC_ChipObject - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libFRC_FPGA_ChipObject - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libNiFpga - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libni_emb - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libnirio_emb_can - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libNiFpgaLv - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libNiRioSrv - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libni_rtlog - 0.1.0-SNAPSHOT - so - - - - - edu.wpi.first.wpilib.hal - include - 0.1.0-SNAPSHOT - inczip - - - edu.wpi.first.wpilib.networktables.cpp - include - 0.1.0-SNAPSHOT - inczip - - - edu.wpi.first.wpilib.cpp - libWPILibAthena - 0.1.0-SNAPSHOT - inczip - - - + + 4.0.0 + edu.wpi.first.wpilib.plugins.cpp + eclipse-plugin + + edu.wpi.first.wpilib.plugins + edu.wpi.first.wpilib.plugins + 0.1.0.qualifier + .. + + + DEVELOPMENT + ${project.build.directory}/cpp-zip + + + + + . + + resources/configuration.properties + + true + + + + + maven-resources-plugin + 2.6 + + + copy-ant-resources-to-cpp-zip + generate-sources + + copy-resources + + + ${cpp-zip} + + + src/main/resources/cpp-zip + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.8 + + + + fetch-cpp-zip-dependencies + compile + + copy + + + + + edu.wpi.first.wpilib.cmake + cpp-root + 1.0.0 + jar + cpp-root.jar + + + ${project.build.directory} + false + true + true + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.7 + + + + set-version-info + + run + + process-sources + + + + + + + + + + + true + + + + + unzip-cpp-includes + compile + + run + + + + + + + + + + + + + + generate-cpp-zip + compile + + run + + + + + + + + + + + + + + edu.wpi.first.wpilib.cmake + cpp-root + 1.0.0 + jar + + 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 f05fb0ea8a..bfc041ab71 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 @@ -38,22 +38,11 @@ + + diff --git a/ni-libraries/README.org b/ni-libraries/README.org deleted file mode 100644 index c95e4b1737..0000000000 --- a/ni-libraries/README.org +++ /dev/null @@ -1,11 +0,0 @@ - -* Purpose -This project provides the NI =*.so= files that need to be linked -against to build programs in a Maven friendly way. It use =cp= or -=copy= as a fake linker to copy the =so= files as Maven artifacts. - -* Building and Installing with Maven -To build everything with Maven: -1. Run the following maven command: - =mvn clean install= -2. Success diff --git a/ni-libraries/libFRC_FPGA_ChipObject/libFRC_FPGA_ChipObject.so b/ni-libraries/libFRC_FPGA_ChipObject.so.1 similarity index 100% rename from ni-libraries/libFRC_FPGA_ChipObject/libFRC_FPGA_ChipObject.so rename to ni-libraries/libFRC_FPGA_ChipObject.so.1 diff --git a/ni-libraries/libFRC_FPGA_ChipObject/pom.xml b/ni-libraries/libFRC_FPGA_ChipObject/pom.xml deleted file mode 100644 index a540b4e5ae..0000000000 --- a/ni-libraries/libFRC_FPGA_ChipObject/pom.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - 4.0.0 - libFRC_FPGA_ChipObject - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - - com.ni.first.libraries - libNiFpgaLv - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libNiRioSrv - 0.1.0-SNAPSHOT - so - - - - - libFRC_FPGA_ChipObject.so - - diff --git a/ni-libraries/libFRC_NetworkCommunication/libFRC_NetworkCommunication.so b/ni-libraries/libFRC_NetworkCommunication.so.1 similarity index 100% rename from ni-libraries/libFRC_NetworkCommunication/libFRC_NetworkCommunication.so rename to ni-libraries/libFRC_NetworkCommunication.so.1 diff --git a/ni-libraries/libFRC_NetworkCommunication/pom.xml b/ni-libraries/libFRC_NetworkCommunication/pom.xml deleted file mode 100644 index bfb1f732d8..0000000000 --- a/ni-libraries/libFRC_NetworkCommunication/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 4.0.0 - libFRC_NetworkCommunication - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - - com.ni.first.libraries - libFRC_FPGA_ChipObject - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libNiFpga - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libni_emb - 0.1.0-SNAPSHOT - so - - - - - libFRC_NetworkCommunication.so - - diff --git a/ni-libraries/libNiFpga/libNiFpga.so b/ni-libraries/libNiFpga.so.13 similarity index 100% rename from ni-libraries/libNiFpga/libNiFpga.so rename to ni-libraries/libNiFpga.so.13 diff --git a/ni-libraries/libNiFpga/pom.xml b/ni-libraries/libNiFpga/pom.xml deleted file mode 100644 index 1f3a91f112..0000000000 --- a/ni-libraries/libNiFpga/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - libNiFpga - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - libNiFpga.so - - diff --git a/ni-libraries/libNiFpgaLv/libNiFpgaLv.so b/ni-libraries/libNiFpgaLv.so.13 similarity index 100% rename from ni-libraries/libNiFpgaLv/libNiFpgaLv.so rename to ni-libraries/libNiFpgaLv.so.13 diff --git a/ni-libraries/libNiFpgaLv/pom.xml b/ni-libraries/libNiFpgaLv/pom.xml deleted file mode 100644 index 2989312fe6..0000000000 --- a/ni-libraries/libNiFpgaLv/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - libNiFpgaLv - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - libNiFpgaLv.so - - diff --git a/ni-libraries/libNiRioSrv/libNiRioSrv.so b/ni-libraries/libNiRioSrv.so.13 similarity index 100% rename from ni-libraries/libNiRioSrv/libNiRioSrv.so rename to ni-libraries/libNiRioSrv.so.13 diff --git a/ni-libraries/libNiRioSrv/pom.xml b/ni-libraries/libNiRioSrv/pom.xml deleted file mode 100644 index d379c34dae..0000000000 --- a/ni-libraries/libNiRioSrv/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - libNiRioSrv - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - libNiRioSrv.so - - diff --git a/ni-libraries/libRoboRIO_FRC_ChipObject/libRoboRIO_FRC_ChipObject.so b/ni-libraries/libRoboRIO_FRC_ChipObject.so.1 similarity index 100% rename from ni-libraries/libRoboRIO_FRC_ChipObject/libRoboRIO_FRC_ChipObject.so rename to ni-libraries/libRoboRIO_FRC_ChipObject.so.1 diff --git a/ni-libraries/libRoboRIO_FRC_ChipObject/pom.xml b/ni-libraries/libRoboRIO_FRC_ChipObject/pom.xml deleted file mode 100644 index 1a3cbfe430..0000000000 --- a/ni-libraries/libRoboRIO_FRC_ChipObject/pom.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - 4.0.0 - libRoboRIO_FRC_ChipObject - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - - com.ni.first.libraries - libNiFpgaLv - 0.1.0-SNAPSHOT - so - - - com.ni.first.libraries - libNiRioSrv - 0.1.0-SNAPSHOT - so - - - - - libRoboRIO_FRC_ChipObject.so - - diff --git a/ni-libraries/libfrccansae/libfrccansae.so b/ni-libraries/libfrccansae/libfrccansae.so deleted file mode 100644 index 7de8dc3885b376dfaf96e386b270b88ab09e8883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215996 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 - - 4.0.0 - libfrccansae - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - libfrccansae.so - - diff --git a/ni-libraries/libi2c/libi2c.so b/ni-libraries/libi2c.so.1 similarity index 100% rename from ni-libraries/libi2c/libi2c.so rename to ni-libraries/libi2c.so.1 diff --git a/ni-libraries/libi2c/pom.xml b/ni-libraries/libi2c/pom.xml deleted file mode 100644 index d74a5b91de..0000000000 --- a/ni-libraries/libi2c/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - libi2c - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - libi2c.so - - diff --git a/ni-libraries/libni_emb/libni_emb.so b/ni-libraries/libni_emb.so.6 similarity index 100% rename from ni-libraries/libni_emb/libni_emb.so rename to ni-libraries/libni_emb.so.6 diff --git a/ni-libraries/libni_emb/pom.xml b/ni-libraries/libni_emb/pom.xml deleted file mode 100644 index 89c8f22340..0000000000 --- a/ni-libraries/libni_emb/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - 4.0.0 - libni_emb - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - - - com.ni.first.libraries - libni_rtlog - 0.1.0-SNAPSHOT - so - - - - - libni_emb.so - - diff --git a/ni-libraries/libni_rtlog/libni_rtlog.so b/ni-libraries/libni_rtlog.so.2 similarity index 100% rename from ni-libraries/libni_rtlog/libni_rtlog.so rename to ni-libraries/libni_rtlog.so.2 diff --git a/ni-libraries/libni_rtlog/pom.xml b/ni-libraries/libni_rtlog/pom.xml deleted file mode 100644 index 13dc7e2c50..0000000000 --- a/ni-libraries/libni_rtlog/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - libni_rtlog - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - libni_rtlog.so - - diff --git a/ni-libraries/libnirio_emb_can/libnirio_emb_can.so b/ni-libraries/libnirio_emb_can.so.14 similarity index 100% rename from ni-libraries/libnirio_emb_can/libnirio_emb_can.so rename to ni-libraries/libnirio_emb_can.so.14 diff --git a/ni-libraries/libnirio_emb_can/pom.xml b/ni-libraries/libnirio_emb_can/pom.xml deleted file mode 100644 index 1b7debb317..0000000000 --- a/ni-libraries/libnirio_emb_can/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - 4.0.0 - libnirio_emb_can - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - - - com.ni.first.libraries - libni_rtlog - 0.1.0-SNAPSHOT - so - - - - - libnirio_emb_can.so - - diff --git a/ni-libraries/libspi/libspi.so b/ni-libraries/libspi.so.1 similarity index 100% rename from ni-libraries/libspi/libspi.so rename to ni-libraries/libspi.so.1 diff --git a/ni-libraries/libspi/pom.xml b/ni-libraries/libspi/pom.xml deleted file mode 100644 index d362cdedf1..0000000000 --- a/ni-libraries/libspi/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - libspi - so - - - com.ni.first.libraries - parent - 0.1.0-SNAPSHOT - ../parent - - - - libspi.so - - diff --git a/ni-libraries/libvisa.so b/ni-libraries/libvisa.so new file mode 100644 index 0000000000000000000000000000000000000000..9edd2eaa0b913f208e1c87a08b4ca705ae0e8049 GIT binary patch literal 192976 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 >&zr=JlS?RpH@(9)G`#V%uzeH#GUh0v2FyFcc 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 eeV;fq8a{K0?y4XH3~~f*3zB{gU4IZMp! - - 4.0.0 - com.ni.first.libraries - parent - pom - 0.1.0-SNAPSHOT - - - UTF-8 - UTF-8 - - - - - - org.codehaus.mojo - native-maven-plugin - 1.0-alpha-7 - true - - ar - echo - cp - - - ${library} - - - - - - - - - windows-builder - - - Windows - - - - - - org.codehaus.mojo - native-maven-plugin - true - - copy - - - - - - - diff --git a/ni-libraries/pom.xml b/ni-libraries/pom.xml deleted file mode 100644 index 69c08da92b..0000000000 --- a/ni-libraries/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - 4.0.0 - com.ni.first.libraries - com.ni.first.libraries - pom - 0.1.0-SNAPSHOT - - - parent - libFRC_NetworkCommunication - libRoboRIO_FRC_ChipObject - libFRC_FPGA_ChipObject - libNiFpga - libni_emb - libNiFpgaLv - libNiRioSrv - libni_rtlog - libnirio_emb_can - libfrccansae - libi2c - libspi - - diff --git a/pom.xml b/pom.xml index 6f3a67f23e..7f55040250 100644 --- a/pom.xml +++ b/pom.xml @@ -1,51 +1,46 @@ - - 4.0.0 - edu.wpi.first.wpilib - aggregator-pom - 1.0.0 - pom - - - eclipse-plugins - hal - maven-utilities - networktables - ni-libraries - wpilibc - wpilibj - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 1.3.1 - - - enforce-maven - - enforce - - - - - - [3.0.0,3.1.0), (3.1.0,) - WPILib has been tested with Maven 3.0.0+. + [3.0.0,3.1.0), (3.1.0,) + WPILib has been tested with Maven 3.0.0+. Note: Maven 3.1.0 is not supported due to Maven bug MNG-5503 (http://jira.codehaus.org/browse/MNG-5503). Please upgrade to Maven 3.1.1 or later. - - - - - - - - + + + + + + + + diff --git a/wpilibc/.cproject b/wpilibc/.cproject deleted file mode 100644 index 97b7354a84..0000000000 --- a/wpilibc/.cproject +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wpilibc/.project b/wpilibc/.project deleted file mode 100644 index 134c1cd73d..0000000000 --- a/wpilibc/.project +++ /dev/null @@ -1,20 +0,0 @@ - - - WPILib - - - - - - com.windriver.ide.core.wrbuilder - - - - - - com.windriver.ide.core.wrnature - com.windriver.ide.core.wrcorenature - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - - diff --git a/wpilibc/.settings/Makefile b/wpilibc/.settings/Makefile deleted file mode 100644 index bc1916495a..0000000000 --- a/wpilibc/.settings/Makefile +++ /dev/null @@ -1,2184 +0,0 @@ -# Wind River Workbench generated Makefile. -# Do not edit!!! -# -# The file ".wrmakefile" is the template used by the Wind River Workbench to -# generate the makefiles of this project. Add user-specific build targets and -# make rules only(!) in this project's ".wrmakefile" file. These will then be -# automatically dumped into the makefiles. - -WIND_HOME := $(subst \,/,$(WIND_HOME)) -WIND_BASE := $(subst \,/,$(WIND_BASE)) -WIND_USR := $(subst \,/,$(WIND_USR)) - -all : pre_build main_all post_build - -_clean :: - @echo "make: removing targets and objects of `pwd`" - -TRACE=0 -TRACEON=$(TRACE:0=@) -TRACE_FLAG=$(TRACEON:1=) - -MAKEFILE := Makefile - -BUILD_SPEC = PPC603gnu -DEBUG_MODE = 1 -SRC_DIR := . -BUILD_ROOT_DIR := -PRJ_ROOT_DIR := C:/windriver/workspace/WPILib -WS_ROOT_DIR := C:/windriver/workspace - -ALL_BUILD_SPECS := PPC32diab PPC32gnu PPC32sfdiab PPC32sfgnu \ - PPC403diab PPC403gnu PPC405diab PPC405gnu \ - PPC405sfdiab PPC405sfgnu PPC440diab PPC440gnu \ - PPC440sfdiab PPC440sfgnu PPC603diab PPC603gnu \ - PPC604diab PPC604gnu PPC85XXdiab PPC85XXgnu \ - PPC85XXsfdiab PPC85XXsfgnu PPC860sfdiab PPC860sfgnu \ - SIMLINUXdiab SIMLINUXgnu SIMNTdiab SIMNTgnu \ - SIMSPARCSOLARISdiab SIMSPARCSOLARISgnu -ENABLED_BUILD_SPECS := PPC603gnu - -ifeq ($(BUILD_SPEC),PPC32diab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC32diab_DEBUG -else -OBJ_DIR := PPC32diab -endif -endif -ifeq ($(BUILD_SPEC),PPC32gnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC32gnu_DEBUG -else -OBJ_DIR := PPC32gnu -endif -endif -ifeq ($(BUILD_SPEC),PPC32sfdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC32sfdiab_DEBUG -else -OBJ_DIR := PPC32sfdiab -endif -endif -ifeq ($(BUILD_SPEC),PPC32sfgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC32sfgnu_DEBUG -else -OBJ_DIR := PPC32sfgnu -endif -endif -ifeq ($(BUILD_SPEC),PPC403diab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC403diab_DEBUG -else -OBJ_DIR := PPC403diab -endif -endif -ifeq ($(BUILD_SPEC),PPC403gnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC403gnu_DEBUG -else -OBJ_DIR := PPC403gnu -endif -endif -ifeq ($(BUILD_SPEC),PPC405diab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC405diab_DEBUG -else -OBJ_DIR := PPC405diab -endif -endif -ifeq ($(BUILD_SPEC),PPC405gnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC405gnu_DEBUG -else -OBJ_DIR := PPC405gnu -endif -endif -ifeq ($(BUILD_SPEC),PPC405sfdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC405sfdiab_DEBUG -else -OBJ_DIR := PPC405sfdiab -endif -endif -ifeq ($(BUILD_SPEC),PPC405sfgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC405sfgnu_DEBUG -else -OBJ_DIR := PPC405sfgnu -endif -endif -ifeq ($(BUILD_SPEC),PPC440diab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC440diab_DEBUG -else -OBJ_DIR := PPC440diab -endif -endif -ifeq ($(BUILD_SPEC),PPC440gnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC440gnu_DEBUG -else -OBJ_DIR := PPC440gnu -endif -endif -ifeq ($(BUILD_SPEC),PPC440sfdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC440sfdiab_DEBUG -else -OBJ_DIR := PPC440sfdiab -endif -endif -ifeq ($(BUILD_SPEC),PPC440sfgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC440sfgnu_DEBUG -else -OBJ_DIR := PPC440sfgnu -endif -endif -ifeq ($(BUILD_SPEC),PPC603diab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC603diab_DEBUG -else -OBJ_DIR := PPC603diab -endif -endif -ifeq ($(BUILD_SPEC),PPC603gnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC603gnu_DEBUG -else -OBJ_DIR := PPC603gnu -endif -endif -ifeq ($(BUILD_SPEC),PPC604diab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC604diab_DEBUG -else -OBJ_DIR := PPC604diab -endif -endif -ifeq ($(BUILD_SPEC),PPC604gnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC604gnu_DEBUG -else -OBJ_DIR := PPC604gnu -endif -endif -ifeq ($(BUILD_SPEC),PPC85XXdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC85XXdiab_DEBUG -else -OBJ_DIR := PPC85XXdiab -endif -endif -ifeq ($(BUILD_SPEC),PPC85XXgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC85XXgnu_DEBUG -else -OBJ_DIR := PPC85XXgnu -endif -endif -ifeq ($(BUILD_SPEC),PPC85XXsfdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC85XXsfdiab_DEBUG -else -OBJ_DIR := PPC85XXsfdiab -endif -endif -ifeq ($(BUILD_SPEC),PPC85XXsfgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC85XXsfgnu_DEBUG -else -OBJ_DIR := PPC85XXsfgnu -endif -endif -ifeq ($(BUILD_SPEC),PPC860sfdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC860sfdiab_DEBUG -else -OBJ_DIR := PPC860sfdiab -endif -endif -ifeq ($(BUILD_SPEC),PPC860sfgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := PPC860sfgnu_DEBUG -else -OBJ_DIR := PPC860sfgnu -endif -endif -ifeq ($(BUILD_SPEC),SIMLINUXdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := SIMLINUXdiab_DEBUG -else -OBJ_DIR := SIMLINUXdiab -endif -endif -ifeq ($(BUILD_SPEC),SIMLINUXgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := SIMLINUXgnu_DEBUG -else -OBJ_DIR := SIMLINUXgnu -endif -endif -ifeq ($(BUILD_SPEC),SIMNTdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := SIMNTdiab_DEBUG -else -OBJ_DIR := SIMNTdiab -endif -endif -ifeq ($(BUILD_SPEC),SIMNTgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := SIMNTgnu_DEBUG -else -OBJ_DIR := SIMNTgnu -endif -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := SIMSPARCSOLARISdiab_DEBUG -else -OBJ_DIR := SIMSPARCSOLARISdiab -endif -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu) -ifeq ($(DEBUG_MODE),1) -OBJ_DIR := SIMSPARCSOLARISgnu_DEBUG -else -OBJ_DIR := SIMSPARCSOLARISgnu -endif -endif - -ifeq ($(BUILD_SPEC),PPC32diab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC32gnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC32sfdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC32sfgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC403diab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC403gnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC405diab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC405gnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC405sfdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC405sfgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC440diab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC440gnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC440sfdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC440sfgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC603diab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC603gnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC604diab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC604gnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC85XXdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC85XXgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC85XXsfdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC85XXsfgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC860sfdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),PPC860sfgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),SIMLINUXdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),SIMLINUXgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),SIMNTdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),SIMNTgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu) -SUBDIRS := -OBJECTS := - -PROJECT_TARGETS := $(OBJECTS) - -SUB_OBJECTS := -SUB_TARGETS := -endif - -PROJECT_TYPE = DKM -DEFINES = -EXPAND_DBG = 0 - -ifeq ($(BUILD_SPEC),PPC32diab) -VX_CPU_FAMILY = ppc -CPU = PPC32 -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tPPCFH:vxworks63 -Xstmw-slow -DPPC32_fp60x -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC32gnu) -VX_CPU_FAMILY = ppc -CPU = PPC32 -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mhard-float -mstrict-align -mno-implicit-fp -DPPC32_fp60x -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC32sfdiab) -VX_CPU_FAMILY = ppc -CPU = PPC32 -TOOL_FAMILY = diab -TOOL = sfdiab -TOOL_PATH = -CC_ARCH_SPEC = -tPPCFS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC32sfgnu) -VX_CPU_FAMILY = ppc -CPU = PPC32 -TOOL_FAMILY = gnu -TOOL = sfgnu -TOOL_PATH = -CC_ARCH_SPEC = -msoft-float -mstrict-align -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC403diab) -VX_CPU_FAMILY = ppc -CPU = PPC403 -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC403FS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC403gnu) -VX_CPU_FAMILY = ppc -CPU = PPC403 -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=403 -mstrict-align -msoft-float -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC405diab) -VX_CPU_FAMILY = ppc -CPU = PPC405 -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC405FS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC405gnu) -VX_CPU_FAMILY = ppc -CPU = PPC405 -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=405 -mstrict-align -msoft-float -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC405sfdiab) -VX_CPU_FAMILY = ppc -CPU = PPC405 -TOOL_FAMILY = diab -TOOL = sfdiab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC405FS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC405sfgnu) -VX_CPU_FAMILY = ppc -CPU = PPC405 -TOOL_FAMILY = gnu -TOOL = sfgnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=405 -mstrict-align -msoft-float -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC440diab) -VX_CPU_FAMILY = ppc -CPU = PPC440 -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC440FH:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC440gnu) -VX_CPU_FAMILY = ppc -CPU = PPC440 -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=440 -mstrict-align -msoft-float -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC440sfdiab) -VX_CPU_FAMILY = ppc -CPU = PPC440 -TOOL_FAMILY = diab -TOOL = sfdiab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC440FS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC440sfgnu) -VX_CPU_FAMILY = ppc -CPU = PPC440 -TOOL_FAMILY = gnu -TOOL = sfgnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=440 -mstrict-align -msoft-float -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC603diab) -VX_CPU_FAMILY = ppc -CPU = PPC603 -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC603FH:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC603gnu) -VX_CPU_FAMILY = ppc -CPU = PPC603 -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=603 -mstrict-align -mno-implicit-fp -mlongcall -LIBPATH = -LIBS = - -IDE_INCLUDES = -I.. -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC604diab) -VX_CPU_FAMILY = ppc -CPU = PPC604 -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC604FH:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC604gnu) -VX_CPU_FAMILY = ppc -CPU = PPC604 -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=604 -mstrict-align -mno-implicit-fp -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC85XXdiab) -VX_CPU_FAMILY = ppc -CPU = PPC85XX -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tPPCE500FS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC85XXgnu) -VX_CPU_FAMILY = ppc -CPU = PPC85XX -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC85XXsfdiab) -VX_CPU_FAMILY = ppc -CPU = PPC85XX -TOOL_FAMILY = diab -TOOL = sfdiab -TOOL_PATH = -CC_ARCH_SPEC = -tPPCE500FS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC85XXsfgnu) -VX_CPU_FAMILY = ppc -CPU = PPC85XX -TOOL_FAMILY = gnu -TOOL = sfgnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=8540 -mstrict-align -msoft-float -mabi=no-spe -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC860sfdiab) -VX_CPU_FAMILY = ppc -CPU = PPC860 -TOOL_FAMILY = diab -TOOL = sfdiab -TOOL_PATH = -CC_ARCH_SPEC = -tPPC860FS:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),PPC860sfgnu) -VX_CPU_FAMILY = ppc -CPU = PPC860 -TOOL_FAMILY = gnu -TOOL = sfgnu -TOOL_PATH = -CC_ARCH_SPEC = -mcpu=860 -mstrict-align -msoft-float -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),SIMLINUXdiab) -VX_CPU_FAMILY = simlinux -CPU = SIMLINUX -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tX86LH:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),SIMLINUXgnu) -VX_CPU_FAMILY = simlinux -CPU = SIMLINUX -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mtune=i486 -march=i486 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),SIMNTdiab) -VX_CPU_FAMILY = simpc -CPU = SIMNT -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tX86LH:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),SIMNTgnu) -VX_CPU_FAMILY = simpc -CPU = SIMNT -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -mtune=i486 -march=i486 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab) -VX_CPU_FAMILY = simso -CPU = SIMSPARCSOLARIS -TOOL_FAMILY = diab -TOOL = diab -TOOL_PATH = -CC_ARCH_SPEC = -tSPARCFH:vxworks63 -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu) -VX_CPU_FAMILY = simso -CPU = SIMSPARCSOLARIS -TOOL_FAMILY = gnu -TOOL = gnu -TOOL_PATH = -CC_ARCH_SPEC = -LIBPATH = -LIBS = - -IDE_INCLUDES = -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip - -IDE_LIBRARIES = -endif - - -ifeq ($(BUILD_SPEC),PPC32diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC403diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC403gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC603diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC603gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC604diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC604gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXsfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXsfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC860sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC860sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMLINUXdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMLINUXgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMNTdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMNTgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C-Compiler = -g -else -DEBUGFLAGS_C-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC403diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC403gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC603diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC603gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG) $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL -D'SVN_REV="$(shell svnversion -n ..)"' $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC604diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC604gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXsfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXsfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC860sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC860sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMLINUXdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMLINUXgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMNTdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMNTgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -nostdlib -fno-builtin -fno-defer-pop -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_C++-Compiler = -g -else -DEBUGFLAGS_C++-Compiler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.C - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cxx - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_C++-Compiler) $(CC_ARCH_SPEC) -ansi -Wall -MD -MP $(ADDED_C++FLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xstsw-slow -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC32sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC403diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC403gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC405sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC440sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC603diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC603gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC604diab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC604gnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXsfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC85XXsfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC860sfdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),PPC860sfgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccppc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMLINUXdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMLINUXgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -nostdlib -fno-builtin -fno-defer-pop -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMNTdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Wa,-Xmnem-mit -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMNTgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -nostdlib -fno-builtin -fno-defer-pop -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccpentium $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISdiab) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -XO -Xsize-opt -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)dcc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xpreprocess-assembly -Xcpp-no-space -Xmake-dependency=0xd $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif -ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu) -ifeq ($(DEBUG_MODE),1) -DEBUGFLAGS_Assembler = -g -else -DEBUGFLAGS_Assembler = -O2 -fstrength-reduce -fno-builtin -endif -$(OBJ_DIR)/%.o : $(SRC_DIR)/%.s - $(TRACE_FLAG)echo "building $@"; $(TOOL_PATH)ccsparc $(DEBUGFLAGS_Assembler) $(CC_ARCH_SPEC) -ansi -xassembler-with-cpp -MD -MP $(ADDED_CFLAGS) $(IDE_INCLUDES) $(ADDED_INCLUDES) -DCPU=$(CPU) -DTOOL_FAMILY=$(TOOL_FAMILY) -DTOOL=$(TOOL) -D_WRS_KERNEL $(DEFINES) -o "$@" -c "$<" - -endif - - - - - --include $(PRJ_ROOT_DIR)/*.makefile - --include *.makefile - -main_all : external_build $(PROJECT_TARGETS) - @echo "make: built targets of `pwd`" - -# entry point for extending the build -external_build :: - @echo "" - -# main entry point for pre processing prior to the build -pre_build :: $(PRE_BUILD_STEP) generate_sources - @echo "" - -# entry point for generating sources prior to the build -generate_sources :: - @echo "" - -# main entry point for post processing after the build -post_build :: $(POST_BUILD_STEP) deploy_output - @echo "" - -# entry point for deploying output after the build -deploy_output :: - @echo "" - -clean :: external_clean $(CLEAN_STEP) _clean - -# entry point for extending the build clean -external_clean :: - @echo "" diff --git a/wpilibc/.settings/org.eclipse.ltk.core.refactoring.prefs b/wpilibc/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index f59d2e6968..0000000000 --- a/wpilibc/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Tue Sep 14 17:17:39 EDT 2010 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/wpilibc/.wrmakefile b/wpilibc/.wrmakefile deleted file mode 100644 index 6ad1e05a50..0000000000 --- a/wpilibc/.wrmakefile +++ /dev/null @@ -1,48 +0,0 @@ -# The file ".wrmakefile" is the template used by the Wind River Workbench to -# generate the makefiles of this project. Add user-specific build targets and -# make rules only(!) in this project's ".wrmakefile" file. These will then be -# automatically dumped into the makefiles. - -WIND_HOME := $(subst \,/,$(WIND_HOME)) -WIND_BASE := $(subst \,/,$(WIND_BASE)) -WIND_USR := $(subst \,/,$(WIND_USR)) - -all : pre_build main_all post_build - -_clean :: - @echo "make: removing targets and objects of `pwd`" - -%IDE_GENERATED% - --include $(PRJ_ROOT_DIR)/*.makefile - --include *.makefile - -main_all : external_build $(PROJECT_TARGETS) - @echo "make: built targets of `pwd`" - -# entry point for extending the build -external_build :: - @echo "" - -# main entry point for pre processing prior to the build -pre_build :: $(PRE_BUILD_STEP) generate_sources - @echo "" - -# entry point for generating sources prior to the build -generate_sources :: - @echo "" - -# main entry point for post processing after the build -post_build :: $(POST_BUILD_STEP) deploy_output - @echo "" - -# entry point for deploying output after the build -deploy_output :: - @echo "" - -clean :: external_clean $(CLEAN_STEP) _clean - -# entry point for extending the build clean -external_clean :: - @echo "" diff --git a/wpilibc/.wrproject b/wpilibc/.wrproject deleted file mode 100644 index d148c97164..0000000000 --- a/wpilibc/.wrproject +++ /dev/null @@ -1,1414 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wpilibc/Athena/pom.xml b/wpilibc/Athena/pom.xml deleted file mode 100644 index 11c0c993ed..0000000000 --- a/wpilibc/Athena/pom.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - 4.0.0 - edu.wpi.first.wpilib.cpp - libWPILibAthena - a - - - edu.wpi.first.wpilib.templates.athena - static-library - 0.1.0-SNAPSHOT - ../../maven-utilities/athena/static-library/pom.xml - - - - - edu.wpi.first.wpilib.hal - include - 0.1.0-SNAPSHOT - inczip - - - edu.wpi.first.wpilib.networktables.cpp - include - 0.1.0-SNAPSHOT - inczip - - - - - - - org.codehaus.mojo - native-maven-plugin - - - - ../src/main/native - - **/*.cpp - - - Vision/* - - - - ../src/main/include - - - true - - - - - - - diff --git a/wpilibc/CMakeLists.txt b/wpilibc/CMakeLists.txt new file mode 100644 index 0000000000..f93cd46cd1 --- /dev/null +++ b/wpilibc/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 2.8) +project(WPILib) + +file(GLOB_RECURSE SRC_FILES lib/*.cpp) +include_directories(include/ ${HAL_API_INCLUDES} ${NWT_API_INCLUDES}) +add_library(WPILibAthena SHARED ${SRC_FILES}) +target_link_libraries(WPILibAthena HALAthena NetworkTables ${NI_LIBS}) +INSTALL(TARGETS WPILibAthena LIBRARY DESTINATION lib) +INSTALL(DIRECTORY include DESTINATION ${CMAKE_INSTALL_PREFIX}) +# lib/ c m gcc_s ld-linux +# usr/lib stdc++ +# ni_emb +# HAL NWT diff --git a/wpilibc/Eclipse.cproject b/wpilibc/Eclipse.cproject deleted file mode 100644 index 8447cbb650..0000000000 --- a/wpilibc/Eclipse.cproject +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wpilibc/Eclipse.project b/wpilibc/Eclipse.project deleted file mode 100644 index 2a7f5d16c0..0000000000 --- a/wpilibc/Eclipse.project +++ /dev/null @@ -1,27 +0,0 @@ - - - WPILib - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/wpilibc/Makefile b/wpilibc/Makefile deleted file mode 100644 index 598ecf39c8..0000000000 --- a/wpilibc/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# force powerpc compilers -CXX=powerpc-wrs-vxworks-g++ -AR=powerpc-wrs-vxworks-ar - -CPPFILES := $(shell find -name '*.cpp' | sort | sed 's/\.\///g') -OBJS = $(CPPFILES:.cpp=.o) - -WPILib.a: $(OBJS) - @echo " [AR] WPILib.a" - @$(AR) crus WPILib.a $(OBJS) - -%.o: %.cpp - @echo " [G++] "$? - @mkdir -p `dirname Debug/$@` - @$(CXX) -o $@ -c $? -g -I. -mcpu=603 -mstrict-align -mlongcall -Wall -DTOOL=GNU -D'SVN_REV="3623+1"' -std=c++11 - -clean-objects: - @$(foreach obf, $(shell find -name '*.o' | sort | sed 's/\.\///g'), echo " [RM] "$(obf);rm -rf $(obf);) - -clean-wpilib: - @echo " [RM] WPILib.a" - @rm -rf WPILib.a - -clean: clean-objects clean-wpilib - -install: - mkdir -p $(DESTDIR)$(PREFIX)/lib - cp WPILib.a $(DESTDIR)$(PREFIX)/lib/libWPILib.a - $(foreach hdir,$(shell find -name '*.h' | sed 's/\.\///g' | xargs -L 1 dirname | sort | uniq),mkdir -p $(DESTDIR)$(PREFIX)/include/WPILib/$(hdir);) - $(foreach header, $(shell find -name '*.h' | sed 's/\.\///g'), cp $(header) $(DESTDIR)$(PREFIX)/include/WPILib/$(header);) - -rebuild: clean all - -all: WPILib.a diff --git a/wpilibc/src/main/include/ADXL345_I2C.h b/wpilibc/include/ADXL345_I2C.h similarity index 100% rename from wpilibc/src/main/include/ADXL345_I2C.h rename to wpilibc/include/ADXL345_I2C.h diff --git a/wpilibc/src/main/include/ADXL345_SPI.h b/wpilibc/include/ADXL345_SPI.h similarity index 100% rename from wpilibc/src/main/include/ADXL345_SPI.h rename to wpilibc/include/ADXL345_SPI.h diff --git a/wpilibc/src/main/include/Accelerometer.h b/wpilibc/include/Accelerometer.h similarity index 100% rename from wpilibc/src/main/include/Accelerometer.h rename to wpilibc/include/Accelerometer.h diff --git a/wpilibc/src/main/include/AnalogChannel.h b/wpilibc/include/AnalogChannel.h similarity index 100% rename from wpilibc/src/main/include/AnalogChannel.h rename to wpilibc/include/AnalogChannel.h diff --git a/wpilibc/src/main/include/AnalogModule.h b/wpilibc/include/AnalogModule.h similarity index 100% rename from wpilibc/src/main/include/AnalogModule.h rename to wpilibc/include/AnalogModule.h diff --git a/wpilibc/src/main/include/AnalogTrigger.h b/wpilibc/include/AnalogTrigger.h similarity index 100% rename from wpilibc/src/main/include/AnalogTrigger.h rename to wpilibc/include/AnalogTrigger.h diff --git a/wpilibc/src/main/include/AnalogTriggerOutput.h b/wpilibc/include/AnalogTriggerOutput.h similarity index 100% rename from wpilibc/src/main/include/AnalogTriggerOutput.h rename to wpilibc/include/AnalogTriggerOutput.h diff --git a/wpilibc/src/main/include/Base.h b/wpilibc/include/Base.h similarity index 100% rename from wpilibc/src/main/include/Base.h rename to wpilibc/include/Base.h diff --git a/wpilibc/src/main/include/Buttons/AnalogIOButton.h b/wpilibc/include/Buttons/AnalogIOButton.h similarity index 100% rename from wpilibc/src/main/include/Buttons/AnalogIOButton.h rename to wpilibc/include/Buttons/AnalogIOButton.h diff --git a/wpilibc/src/main/include/Buttons/Button.h b/wpilibc/include/Buttons/Button.h similarity index 100% rename from wpilibc/src/main/include/Buttons/Button.h rename to wpilibc/include/Buttons/Button.h diff --git a/wpilibc/src/main/include/Buttons/ButtonScheduler.h b/wpilibc/include/Buttons/ButtonScheduler.h similarity index 100% rename from wpilibc/src/main/include/Buttons/ButtonScheduler.h rename to wpilibc/include/Buttons/ButtonScheduler.h diff --git a/wpilibc/src/main/include/Buttons/CancelButtonScheduler.h b/wpilibc/include/Buttons/CancelButtonScheduler.h similarity index 100% rename from wpilibc/src/main/include/Buttons/CancelButtonScheduler.h rename to wpilibc/include/Buttons/CancelButtonScheduler.h diff --git a/wpilibc/src/main/include/Buttons/DigitalIOButton.h b/wpilibc/include/Buttons/DigitalIOButton.h similarity index 100% rename from wpilibc/src/main/include/Buttons/DigitalIOButton.h rename to wpilibc/include/Buttons/DigitalIOButton.h diff --git a/wpilibc/src/main/include/Buttons/HeldButtonScheduler.h b/wpilibc/include/Buttons/HeldButtonScheduler.h similarity index 100% rename from wpilibc/src/main/include/Buttons/HeldButtonScheduler.h rename to wpilibc/include/Buttons/HeldButtonScheduler.h diff --git a/wpilibc/src/main/include/Buttons/InternalButton.h b/wpilibc/include/Buttons/InternalButton.h similarity index 100% rename from wpilibc/src/main/include/Buttons/InternalButton.h rename to wpilibc/include/Buttons/InternalButton.h diff --git a/wpilibc/src/main/include/Buttons/JoystickButton.h b/wpilibc/include/Buttons/JoystickButton.h similarity index 100% rename from wpilibc/src/main/include/Buttons/JoystickButton.h rename to wpilibc/include/Buttons/JoystickButton.h diff --git a/wpilibc/src/main/include/Buttons/NetworkButton.h b/wpilibc/include/Buttons/NetworkButton.h similarity index 100% rename from wpilibc/src/main/include/Buttons/NetworkButton.h rename to wpilibc/include/Buttons/NetworkButton.h diff --git a/wpilibc/src/main/include/Buttons/PressedButtonScheduler.h b/wpilibc/include/Buttons/PressedButtonScheduler.h similarity index 100% rename from wpilibc/src/main/include/Buttons/PressedButtonScheduler.h rename to wpilibc/include/Buttons/PressedButtonScheduler.h diff --git a/wpilibc/src/main/include/Buttons/ReleasedButtonScheduler.h b/wpilibc/include/Buttons/ReleasedButtonScheduler.h similarity index 100% rename from wpilibc/src/main/include/Buttons/ReleasedButtonScheduler.h rename to wpilibc/include/Buttons/ReleasedButtonScheduler.h diff --git a/wpilibc/src/main/include/Buttons/ToggleButtonScheduler.h b/wpilibc/include/Buttons/ToggleButtonScheduler.h similarity index 100% rename from wpilibc/src/main/include/Buttons/ToggleButtonScheduler.h rename to wpilibc/include/Buttons/ToggleButtonScheduler.h diff --git a/wpilibc/src/main/include/Buttons/Trigger.h b/wpilibc/include/Buttons/Trigger.h similarity index 100% rename from wpilibc/src/main/include/Buttons/Trigger.h rename to wpilibc/include/Buttons/Trigger.h diff --git a/wpilibc/src/main/include/CAN/JaguarCANDriver.h b/wpilibc/include/CAN/JaguarCANDriver.h similarity index 100% rename from wpilibc/src/main/include/CAN/JaguarCANDriver.h rename to wpilibc/include/CAN/JaguarCANDriver.h diff --git a/wpilibc/src/main/include/CAN/can_proto.h b/wpilibc/include/CAN/can_proto.h similarity index 100% rename from wpilibc/src/main/include/CAN/can_proto.h rename to wpilibc/include/CAN/can_proto.h diff --git a/wpilibc/src/main/include/CANJaguar.h b/wpilibc/include/CANJaguar.h similarity index 100% rename from wpilibc/src/main/include/CANJaguar.h rename to wpilibc/include/CANJaguar.h diff --git a/wpilibc/src/main/include/Commands/Command.h b/wpilibc/include/Commands/Command.h similarity index 100% rename from wpilibc/src/main/include/Commands/Command.h rename to wpilibc/include/Commands/Command.h diff --git a/wpilibc/src/main/include/Commands/CommandGroup.h b/wpilibc/include/Commands/CommandGroup.h similarity index 100% rename from wpilibc/src/main/include/Commands/CommandGroup.h rename to wpilibc/include/Commands/CommandGroup.h diff --git a/wpilibc/src/main/include/Commands/CommandGroupEntry.h b/wpilibc/include/Commands/CommandGroupEntry.h similarity index 100% rename from wpilibc/src/main/include/Commands/CommandGroupEntry.h rename to wpilibc/include/Commands/CommandGroupEntry.h diff --git a/wpilibc/src/main/include/Commands/PIDCommand.h b/wpilibc/include/Commands/PIDCommand.h similarity index 100% rename from wpilibc/src/main/include/Commands/PIDCommand.h rename to wpilibc/include/Commands/PIDCommand.h diff --git a/wpilibc/src/main/include/Commands/PIDSubsystem.h b/wpilibc/include/Commands/PIDSubsystem.h similarity index 100% rename from wpilibc/src/main/include/Commands/PIDSubsystem.h rename to wpilibc/include/Commands/PIDSubsystem.h diff --git a/wpilibc/src/main/include/Commands/PrintCommand.h b/wpilibc/include/Commands/PrintCommand.h similarity index 100% rename from wpilibc/src/main/include/Commands/PrintCommand.h rename to wpilibc/include/Commands/PrintCommand.h diff --git a/wpilibc/src/main/include/Commands/Scheduler.h b/wpilibc/include/Commands/Scheduler.h similarity index 100% rename from wpilibc/src/main/include/Commands/Scheduler.h rename to wpilibc/include/Commands/Scheduler.h diff --git a/wpilibc/src/main/include/Commands/StartCommand.h b/wpilibc/include/Commands/StartCommand.h similarity index 100% rename from wpilibc/src/main/include/Commands/StartCommand.h rename to wpilibc/include/Commands/StartCommand.h diff --git a/wpilibc/src/main/include/Commands/Subsystem.h b/wpilibc/include/Commands/Subsystem.h similarity index 100% rename from wpilibc/src/main/include/Commands/Subsystem.h rename to wpilibc/include/Commands/Subsystem.h diff --git a/wpilibc/src/main/include/Commands/WaitCommand.h b/wpilibc/include/Commands/WaitCommand.h similarity index 100% rename from wpilibc/src/main/include/Commands/WaitCommand.h rename to wpilibc/include/Commands/WaitCommand.h diff --git a/wpilibc/src/main/include/Commands/WaitForChildren.h b/wpilibc/include/Commands/WaitForChildren.h similarity index 100% rename from wpilibc/src/main/include/Commands/WaitForChildren.h rename to wpilibc/include/Commands/WaitForChildren.h diff --git a/wpilibc/src/main/include/Commands/WaitUntilCommand.h b/wpilibc/include/Commands/WaitUntilCommand.h similarity index 100% rename from wpilibc/src/main/include/Commands/WaitUntilCommand.h rename to wpilibc/include/Commands/WaitUntilCommand.h diff --git a/wpilibc/src/main/include/Compressor.h b/wpilibc/include/Compressor.h similarity index 100% rename from wpilibc/src/main/include/Compressor.h rename to wpilibc/include/Compressor.h diff --git a/wpilibc/src/main/include/Controller.h b/wpilibc/include/Controller.h similarity index 100% rename from wpilibc/src/main/include/Controller.h rename to wpilibc/include/Controller.h diff --git a/wpilibc/src/main/include/Counter.h b/wpilibc/include/Counter.h similarity index 100% rename from wpilibc/src/main/include/Counter.h rename to wpilibc/include/Counter.h diff --git a/wpilibc/src/main/include/CounterBase.h b/wpilibc/include/CounterBase.h similarity index 100% rename from wpilibc/src/main/include/CounterBase.h rename to wpilibc/include/CounterBase.h diff --git a/wpilibc/src/main/include/Dashboard.h b/wpilibc/include/Dashboard.h similarity index 100% rename from wpilibc/src/main/include/Dashboard.h rename to wpilibc/include/Dashboard.h diff --git a/wpilibc/src/main/include/DashboardBase.h b/wpilibc/include/DashboardBase.h similarity index 100% rename from wpilibc/src/main/include/DashboardBase.h rename to wpilibc/include/DashboardBase.h diff --git a/wpilibc/src/main/include/DigitalInput.h b/wpilibc/include/DigitalInput.h similarity index 100% rename from wpilibc/src/main/include/DigitalInput.h rename to wpilibc/include/DigitalInput.h diff --git a/wpilibc/src/main/include/DigitalModule.h b/wpilibc/include/DigitalModule.h similarity index 100% rename from wpilibc/src/main/include/DigitalModule.h rename to wpilibc/include/DigitalModule.h diff --git a/wpilibc/src/main/include/DigitalOutput.h b/wpilibc/include/DigitalOutput.h similarity index 100% rename from wpilibc/src/main/include/DigitalOutput.h rename to wpilibc/include/DigitalOutput.h diff --git a/wpilibc/src/main/include/DigitalSource.h b/wpilibc/include/DigitalSource.h similarity index 100% rename from wpilibc/src/main/include/DigitalSource.h rename to wpilibc/include/DigitalSource.h diff --git a/wpilibc/src/main/include/DoubleSolenoid.h b/wpilibc/include/DoubleSolenoid.h similarity index 100% rename from wpilibc/src/main/include/DoubleSolenoid.h rename to wpilibc/include/DoubleSolenoid.h diff --git a/wpilibc/src/main/include/DriverStation.h b/wpilibc/include/DriverStation.h similarity index 100% rename from wpilibc/src/main/include/DriverStation.h rename to wpilibc/include/DriverStation.h diff --git a/wpilibc/src/main/include/DriverStationEnhancedIO.h b/wpilibc/include/DriverStationEnhancedIO.h similarity index 100% rename from wpilibc/src/main/include/DriverStationEnhancedIO.h rename to wpilibc/include/DriverStationEnhancedIO.h diff --git a/wpilibc/src/main/include/DriverStationLCD.h b/wpilibc/include/DriverStationLCD.h similarity index 100% rename from wpilibc/src/main/include/DriverStationLCD.h rename to wpilibc/include/DriverStationLCD.h diff --git a/wpilibc/src/main/include/Encoder.h b/wpilibc/include/Encoder.h similarity index 100% rename from wpilibc/src/main/include/Encoder.h rename to wpilibc/include/Encoder.h diff --git a/wpilibc/src/main/include/Error.h b/wpilibc/include/Error.h similarity index 100% rename from wpilibc/src/main/include/Error.h rename to wpilibc/include/Error.h diff --git a/wpilibc/src/main/include/ErrorBase.h b/wpilibc/include/ErrorBase.h similarity index 100% rename from wpilibc/src/main/include/ErrorBase.h rename to wpilibc/include/ErrorBase.h diff --git a/wpilibc/src/main/include/GearTooth.h b/wpilibc/include/GearTooth.h similarity index 100% rename from wpilibc/src/main/include/GearTooth.h rename to wpilibc/include/GearTooth.h diff --git a/wpilibc/src/main/include/GenericHID.h b/wpilibc/include/GenericHID.h similarity index 100% rename from wpilibc/src/main/include/GenericHID.h rename to wpilibc/include/GenericHID.h diff --git a/wpilibc/src/main/include/Gyro.h b/wpilibc/include/Gyro.h similarity index 100% rename from wpilibc/src/main/include/Gyro.h rename to wpilibc/include/Gyro.h diff --git a/wpilibc/src/main/include/HiTechnicColorSensor.h b/wpilibc/include/HiTechnicColorSensor.h similarity index 100% rename from wpilibc/src/main/include/HiTechnicColorSensor.h rename to wpilibc/include/HiTechnicColorSensor.h diff --git a/wpilibc/src/main/include/HiTechnicCompass.h b/wpilibc/include/HiTechnicCompass.h similarity index 100% rename from wpilibc/src/main/include/HiTechnicCompass.h rename to wpilibc/include/HiTechnicCompass.h diff --git a/wpilibc/src/main/include/I2C.h b/wpilibc/include/I2C.h similarity index 100% rename from wpilibc/src/main/include/I2C.h rename to wpilibc/include/I2C.h diff --git a/wpilibc/src/main/include/InterruptableSensorBase.h b/wpilibc/include/InterruptableSensorBase.h similarity index 100% rename from wpilibc/src/main/include/InterruptableSensorBase.h rename to wpilibc/include/InterruptableSensorBase.h diff --git a/wpilibc/src/main/include/IterativeRobot.h b/wpilibc/include/IterativeRobot.h similarity index 100% rename from wpilibc/src/main/include/IterativeRobot.h rename to wpilibc/include/IterativeRobot.h diff --git a/wpilibc/src/main/include/Jaguar.h b/wpilibc/include/Jaguar.h similarity index 100% rename from wpilibc/src/main/include/Jaguar.h rename to wpilibc/include/Jaguar.h diff --git a/wpilibc/src/main/include/Joystick.h b/wpilibc/include/Joystick.h similarity index 100% rename from wpilibc/src/main/include/Joystick.h rename to wpilibc/include/Joystick.h diff --git a/wpilibc/src/main/include/Kinect.h b/wpilibc/include/Kinect.h similarity index 100% rename from wpilibc/src/main/include/Kinect.h rename to wpilibc/include/Kinect.h diff --git a/wpilibc/src/main/include/KinectStick.h b/wpilibc/include/KinectStick.h similarity index 100% rename from wpilibc/src/main/include/KinectStick.h rename to wpilibc/include/KinectStick.h diff --git a/wpilibc/src/main/include/LiveWindow/LiveWindow.h b/wpilibc/include/LiveWindow/LiveWindow.h similarity index 100% rename from wpilibc/src/main/include/LiveWindow/LiveWindow.h rename to wpilibc/include/LiveWindow/LiveWindow.h diff --git a/wpilibc/src/main/include/LiveWindow/LiveWindowSendable.h b/wpilibc/include/LiveWindow/LiveWindowSendable.h similarity index 100% rename from wpilibc/src/main/include/LiveWindow/LiveWindowSendable.h rename to wpilibc/include/LiveWindow/LiveWindowSendable.h diff --git a/wpilibc/src/main/include/LiveWindow/LiveWindowStatusListener.h b/wpilibc/include/LiveWindow/LiveWindowStatusListener.h similarity index 100% rename from wpilibc/src/main/include/LiveWindow/LiveWindowStatusListener.h rename to wpilibc/include/LiveWindow/LiveWindowStatusListener.h diff --git a/wpilibc/src/main/include/Module.h b/wpilibc/include/Module.h similarity index 100% rename from wpilibc/src/main/include/Module.h rename to wpilibc/include/Module.h diff --git a/wpilibc/src/main/include/MotorSafety.h b/wpilibc/include/MotorSafety.h similarity index 100% rename from wpilibc/src/main/include/MotorSafety.h rename to wpilibc/include/MotorSafety.h diff --git a/wpilibc/src/main/include/MotorSafetyHelper.h b/wpilibc/include/MotorSafetyHelper.h similarity index 100% rename from wpilibc/src/main/include/MotorSafetyHelper.h rename to wpilibc/include/MotorSafetyHelper.h diff --git a/wpilibc/src/main/include/NetworkCommunication/AICalibration.h b/wpilibc/include/NetworkCommunication/AICalibration.h similarity index 100% rename from wpilibc/src/main/include/NetworkCommunication/AICalibration.h rename to wpilibc/include/NetworkCommunication/AICalibration.h diff --git a/wpilibc/src/main/include/NetworkCommunication/FRCComm.h b/wpilibc/include/NetworkCommunication/FRCComm.h similarity index 100% rename from wpilibc/src/main/include/NetworkCommunication/FRCComm.h rename to wpilibc/include/NetworkCommunication/FRCComm.h diff --git a/wpilibc/src/main/include/NetworkCommunication/LoadOut.h b/wpilibc/include/NetworkCommunication/LoadOut.h similarity index 100% rename from wpilibc/src/main/include/NetworkCommunication/LoadOut.h rename to wpilibc/include/NetworkCommunication/LoadOut.h diff --git a/wpilibc/src/main/include/NetworkCommunication/UsageReporting.h b/wpilibc/include/NetworkCommunication/UsageReporting.h similarity index 100% rename from wpilibc/src/main/include/NetworkCommunication/UsageReporting.h rename to wpilibc/include/NetworkCommunication/UsageReporting.h diff --git a/wpilibc/src/main/include/NetworkCommunication/symModuleLink.h b/wpilibc/include/NetworkCommunication/symModuleLink.h similarity index 100% rename from wpilibc/src/main/include/NetworkCommunication/symModuleLink.h rename to wpilibc/include/NetworkCommunication/symModuleLink.h diff --git a/wpilibc/src/main/include/Notifier.h b/wpilibc/include/Notifier.h similarity index 100% rename from wpilibc/src/main/include/Notifier.h rename to wpilibc/include/Notifier.h diff --git a/wpilibc/src/main/include/PIDController.h b/wpilibc/include/PIDController.h similarity index 100% rename from wpilibc/src/main/include/PIDController.h rename to wpilibc/include/PIDController.h diff --git a/wpilibc/src/main/include/PIDOutput.h b/wpilibc/include/PIDOutput.h similarity index 100% rename from wpilibc/src/main/include/PIDOutput.h rename to wpilibc/include/PIDOutput.h diff --git a/wpilibc/src/main/include/PIDSource.h b/wpilibc/include/PIDSource.h similarity index 100% rename from wpilibc/src/main/include/PIDSource.h rename to wpilibc/include/PIDSource.h diff --git a/wpilibc/src/main/include/PWM.h b/wpilibc/include/PWM.h similarity index 100% rename from wpilibc/src/main/include/PWM.h rename to wpilibc/include/PWM.h diff --git a/wpilibc/src/main/include/Preferences.h b/wpilibc/include/Preferences.h similarity index 100% rename from wpilibc/src/main/include/Preferences.h rename to wpilibc/include/Preferences.h diff --git a/wpilibc/src/main/include/Relay.h b/wpilibc/include/Relay.h similarity index 100% rename from wpilibc/src/main/include/Relay.h rename to wpilibc/include/Relay.h diff --git a/wpilibc/src/main/include/Resource.h b/wpilibc/include/Resource.h similarity index 100% rename from wpilibc/src/main/include/Resource.h rename to wpilibc/include/Resource.h diff --git a/wpilibc/src/main/include/RobotBase.h b/wpilibc/include/RobotBase.h similarity index 100% rename from wpilibc/src/main/include/RobotBase.h rename to wpilibc/include/RobotBase.h diff --git a/wpilibc/src/main/include/RobotDrive.h b/wpilibc/include/RobotDrive.h similarity index 100% rename from wpilibc/src/main/include/RobotDrive.h rename to wpilibc/include/RobotDrive.h diff --git a/wpilibc/src/main/include/SPI.h b/wpilibc/include/SPI.h similarity index 100% rename from wpilibc/src/main/include/SPI.h rename to wpilibc/include/SPI.h diff --git a/wpilibc/src/main/include/SafePWM.h b/wpilibc/include/SafePWM.h similarity index 100% rename from wpilibc/src/main/include/SafePWM.h rename to wpilibc/include/SafePWM.h diff --git a/wpilibc/src/main/include/SensorBase.h b/wpilibc/include/SensorBase.h similarity index 100% rename from wpilibc/src/main/include/SensorBase.h rename to wpilibc/include/SensorBase.h diff --git a/wpilibc/src/main/include/SerialPort.h b/wpilibc/include/SerialPort.h similarity index 100% rename from wpilibc/src/main/include/SerialPort.h rename to wpilibc/include/SerialPort.h diff --git a/wpilibc/src/main/include/Servo.h b/wpilibc/include/Servo.h similarity index 100% rename from wpilibc/src/main/include/Servo.h rename to wpilibc/include/Servo.h diff --git a/wpilibc/src/main/include/SimpleRobot.h b/wpilibc/include/SimpleRobot.h similarity index 100% rename from wpilibc/src/main/include/SimpleRobot.h rename to wpilibc/include/SimpleRobot.h diff --git a/wpilibc/src/main/include/Skeleton.h b/wpilibc/include/Skeleton.h similarity index 100% rename from wpilibc/src/main/include/Skeleton.h rename to wpilibc/include/Skeleton.h diff --git a/wpilibc/src/main/include/SmartDashboard/NamedSendable.h b/wpilibc/include/SmartDashboard/NamedSendable.h similarity index 100% rename from wpilibc/src/main/include/SmartDashboard/NamedSendable.h rename to wpilibc/include/SmartDashboard/NamedSendable.h diff --git a/wpilibc/src/main/include/SmartDashboard/Sendable.h b/wpilibc/include/SmartDashboard/Sendable.h similarity index 100% rename from wpilibc/src/main/include/SmartDashboard/Sendable.h rename to wpilibc/include/SmartDashboard/Sendable.h diff --git a/wpilibc/src/main/include/SmartDashboard/SendableChooser.h b/wpilibc/include/SmartDashboard/SendableChooser.h similarity index 100% rename from wpilibc/src/main/include/SmartDashboard/SendableChooser.h rename to wpilibc/include/SmartDashboard/SendableChooser.h diff --git a/wpilibc/src/main/include/SmartDashboard/SmartDashboard.h b/wpilibc/include/SmartDashboard/SmartDashboard.h similarity index 100% rename from wpilibc/src/main/include/SmartDashboard/SmartDashboard.h rename to wpilibc/include/SmartDashboard/SmartDashboard.h diff --git a/wpilibc/src/main/include/Solenoid.h b/wpilibc/include/Solenoid.h similarity index 100% rename from wpilibc/src/main/include/Solenoid.h rename to wpilibc/include/Solenoid.h diff --git a/wpilibc/src/main/include/SolenoidBase.h b/wpilibc/include/SolenoidBase.h similarity index 100% rename from wpilibc/src/main/include/SolenoidBase.h rename to wpilibc/include/SolenoidBase.h diff --git a/wpilibc/src/main/include/SpeedController.h b/wpilibc/include/SpeedController.h similarity index 100% rename from wpilibc/src/main/include/SpeedController.h rename to wpilibc/include/SpeedController.h diff --git a/wpilibc/src/main/include/Talon.h b/wpilibc/include/Talon.h similarity index 100% rename from wpilibc/src/main/include/Talon.h rename to wpilibc/include/Talon.h diff --git a/wpilibc/src/main/include/Task.h b/wpilibc/include/Task.h similarity index 100% rename from wpilibc/src/main/include/Task.h rename to wpilibc/include/Task.h diff --git a/wpilibc/src/main/include/Timer.h b/wpilibc/include/Timer.h similarity index 100% rename from wpilibc/src/main/include/Timer.h rename to wpilibc/include/Timer.h diff --git a/wpilibc/src/main/include/Ultrasonic.h b/wpilibc/include/Ultrasonic.h similarity index 100% rename from wpilibc/src/main/include/Ultrasonic.h rename to wpilibc/include/Ultrasonic.h diff --git a/wpilibc/src/main/include/Utility.h b/wpilibc/include/Utility.h similarity index 100% rename from wpilibc/src/main/include/Utility.h rename to wpilibc/include/Utility.h diff --git a/wpilibc/src/main/include/Victor.h b/wpilibc/include/Victor.h similarity index 100% rename from wpilibc/src/main/include/Victor.h rename to wpilibc/include/Victor.h diff --git a/wpilibc/src/main/include/WPIErrors.h b/wpilibc/include/WPIErrors.h similarity index 100% rename from wpilibc/src/main/include/WPIErrors.h rename to wpilibc/include/WPIErrors.h diff --git a/wpilibc/src/main/include/WPILib.h b/wpilibc/include/WPILib.h similarity index 100% rename from wpilibc/src/main/include/WPILib.h rename to wpilibc/include/WPILib.h diff --git a/wpilibc/src/main/include/nivision.h b/wpilibc/include/nivision.h similarity index 100% rename from wpilibc/src/main/include/nivision.h rename to wpilibc/include/nivision.h diff --git a/wpilibc/src/main/include/pcre.h b/wpilibc/include/pcre.h similarity index 100% rename from wpilibc/src/main/include/pcre.h rename to wpilibc/include/pcre.h diff --git a/wpilibc/src/main/include/visa/visa.h b/wpilibc/include/visa/visa.h similarity index 100% rename from wpilibc/src/main/include/visa/visa.h rename to wpilibc/include/visa/visa.h diff --git a/wpilibc/src/main/include/visa/visatype.h b/wpilibc/include/visa/visatype.h similarity index 100% rename from wpilibc/src/main/include/visa/visatype.h rename to wpilibc/include/visa/visatype.h diff --git a/wpilibc/src/main/native/ADXL345_I2C.cpp b/wpilibc/lib/ADXL345_I2C.cpp similarity index 100% rename from wpilibc/src/main/native/ADXL345_I2C.cpp rename to wpilibc/lib/ADXL345_I2C.cpp diff --git a/wpilibc/src/main/native/ADXL345_SPI.cpp b/wpilibc/lib/ADXL345_SPI.cpp similarity index 100% rename from wpilibc/src/main/native/ADXL345_SPI.cpp rename to wpilibc/lib/ADXL345_SPI.cpp diff --git a/wpilibc/src/main/native/Accelerometer.cpp b/wpilibc/lib/Accelerometer.cpp similarity index 100% rename from wpilibc/src/main/native/Accelerometer.cpp rename to wpilibc/lib/Accelerometer.cpp diff --git a/wpilibc/src/main/native/AnalogChannel.cpp b/wpilibc/lib/AnalogChannel.cpp similarity index 100% rename from wpilibc/src/main/native/AnalogChannel.cpp rename to wpilibc/lib/AnalogChannel.cpp diff --git a/wpilibc/src/main/native/AnalogModule.cpp b/wpilibc/lib/AnalogModule.cpp similarity index 100% rename from wpilibc/src/main/native/AnalogModule.cpp rename to wpilibc/lib/AnalogModule.cpp diff --git a/wpilibc/src/main/native/AnalogTrigger.cpp b/wpilibc/lib/AnalogTrigger.cpp similarity index 100% rename from wpilibc/src/main/native/AnalogTrigger.cpp rename to wpilibc/lib/AnalogTrigger.cpp diff --git a/wpilibc/src/main/native/AnalogTriggerOutput.cpp b/wpilibc/lib/AnalogTriggerOutput.cpp similarity index 100% rename from wpilibc/src/main/native/AnalogTriggerOutput.cpp rename to wpilibc/lib/AnalogTriggerOutput.cpp diff --git a/wpilibc/src/main/native/Buttons/AnalogIOButton.cpp b/wpilibc/lib/Buttons/AnalogIOButton.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/AnalogIOButton.cpp rename to wpilibc/lib/Buttons/AnalogIOButton.cpp diff --git a/wpilibc/src/main/native/Buttons/Button.cpp b/wpilibc/lib/Buttons/Button.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/Button.cpp rename to wpilibc/lib/Buttons/Button.cpp diff --git a/wpilibc/src/main/native/Buttons/ButtonScheduler.cpp b/wpilibc/lib/Buttons/ButtonScheduler.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/ButtonScheduler.cpp rename to wpilibc/lib/Buttons/ButtonScheduler.cpp diff --git a/wpilibc/src/main/native/Buttons/CancelButtonScheduler.cpp b/wpilibc/lib/Buttons/CancelButtonScheduler.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/CancelButtonScheduler.cpp rename to wpilibc/lib/Buttons/CancelButtonScheduler.cpp diff --git a/wpilibc/src/main/native/Buttons/DigitalIOButton.cpp b/wpilibc/lib/Buttons/DigitalIOButton.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/DigitalIOButton.cpp rename to wpilibc/lib/Buttons/DigitalIOButton.cpp diff --git a/wpilibc/src/main/native/Buttons/HeldButtonScheduler.cpp b/wpilibc/lib/Buttons/HeldButtonScheduler.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/HeldButtonScheduler.cpp rename to wpilibc/lib/Buttons/HeldButtonScheduler.cpp diff --git a/wpilibc/src/main/native/Buttons/InternalButton.cpp b/wpilibc/lib/Buttons/InternalButton.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/InternalButton.cpp rename to wpilibc/lib/Buttons/InternalButton.cpp diff --git a/wpilibc/src/main/native/Buttons/JoystickButton.cpp b/wpilibc/lib/Buttons/JoystickButton.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/JoystickButton.cpp rename to wpilibc/lib/Buttons/JoystickButton.cpp diff --git a/wpilibc/src/main/native/Buttons/NetworkButton.cpp b/wpilibc/lib/Buttons/NetworkButton.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/NetworkButton.cpp rename to wpilibc/lib/Buttons/NetworkButton.cpp diff --git a/wpilibc/src/main/native/Buttons/PressedButtonScheduler.cpp b/wpilibc/lib/Buttons/PressedButtonScheduler.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/PressedButtonScheduler.cpp rename to wpilibc/lib/Buttons/PressedButtonScheduler.cpp diff --git a/wpilibc/src/main/native/Buttons/ReleasedButtonScheduler.cpp b/wpilibc/lib/Buttons/ReleasedButtonScheduler.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/ReleasedButtonScheduler.cpp rename to wpilibc/lib/Buttons/ReleasedButtonScheduler.cpp diff --git a/wpilibc/src/main/native/Buttons/ToggleButtonScheduler.cpp b/wpilibc/lib/Buttons/ToggleButtonScheduler.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/ToggleButtonScheduler.cpp rename to wpilibc/lib/Buttons/ToggleButtonScheduler.cpp diff --git a/wpilibc/src/main/native/Buttons/Trigger.cpp b/wpilibc/lib/Buttons/Trigger.cpp similarity index 100% rename from wpilibc/src/main/native/Buttons/Trigger.cpp rename to wpilibc/lib/Buttons/Trigger.cpp diff --git a/wpilibc/src/main/native/CANJaguar.cpp b/wpilibc/lib/CANJaguar.cpp similarity index 100% rename from wpilibc/src/main/native/CANJaguar.cpp rename to wpilibc/lib/CANJaguar.cpp diff --git a/wpilibc/src/main/native/Commands/Command.cpp b/wpilibc/lib/Commands/Command.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/Command.cpp rename to wpilibc/lib/Commands/Command.cpp diff --git a/wpilibc/src/main/native/Commands/CommandGroup.cpp b/wpilibc/lib/Commands/CommandGroup.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/CommandGroup.cpp rename to wpilibc/lib/Commands/CommandGroup.cpp diff --git a/wpilibc/src/main/native/Commands/CommandGroupEntry.cpp b/wpilibc/lib/Commands/CommandGroupEntry.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/CommandGroupEntry.cpp rename to wpilibc/lib/Commands/CommandGroupEntry.cpp diff --git a/wpilibc/src/main/native/Commands/PIDCommand.cpp b/wpilibc/lib/Commands/PIDCommand.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/PIDCommand.cpp rename to wpilibc/lib/Commands/PIDCommand.cpp diff --git a/wpilibc/src/main/native/Commands/PIDSubsystem.cpp b/wpilibc/lib/Commands/PIDSubsystem.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/PIDSubsystem.cpp rename to wpilibc/lib/Commands/PIDSubsystem.cpp diff --git a/wpilibc/src/main/native/Commands/PrintCommand.cpp b/wpilibc/lib/Commands/PrintCommand.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/PrintCommand.cpp rename to wpilibc/lib/Commands/PrintCommand.cpp diff --git a/wpilibc/src/main/native/Commands/Scheduler.cpp b/wpilibc/lib/Commands/Scheduler.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/Scheduler.cpp rename to wpilibc/lib/Commands/Scheduler.cpp diff --git a/wpilibc/src/main/native/Commands/StartCommand.cpp b/wpilibc/lib/Commands/StartCommand.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/StartCommand.cpp rename to wpilibc/lib/Commands/StartCommand.cpp diff --git a/wpilibc/src/main/native/Commands/Subsystem.cpp b/wpilibc/lib/Commands/Subsystem.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/Subsystem.cpp rename to wpilibc/lib/Commands/Subsystem.cpp diff --git a/wpilibc/src/main/native/Commands/WaitCommand.cpp b/wpilibc/lib/Commands/WaitCommand.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/WaitCommand.cpp rename to wpilibc/lib/Commands/WaitCommand.cpp diff --git a/wpilibc/src/main/native/Commands/WaitForChildren.cpp b/wpilibc/lib/Commands/WaitForChildren.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/WaitForChildren.cpp rename to wpilibc/lib/Commands/WaitForChildren.cpp diff --git a/wpilibc/src/main/native/Commands/WaitUntilCommand.cpp b/wpilibc/lib/Commands/WaitUntilCommand.cpp similarity index 100% rename from wpilibc/src/main/native/Commands/WaitUntilCommand.cpp rename to wpilibc/lib/Commands/WaitUntilCommand.cpp diff --git a/wpilibc/src/main/native/Compressor.cpp b/wpilibc/lib/Compressor.cpp similarity index 100% rename from wpilibc/src/main/native/Compressor.cpp rename to wpilibc/lib/Compressor.cpp diff --git a/wpilibc/src/main/native/Counter.cpp b/wpilibc/lib/Counter.cpp similarity index 100% rename from wpilibc/src/main/native/Counter.cpp rename to wpilibc/lib/Counter.cpp diff --git a/wpilibc/src/main/native/Dashboard.cpp b/wpilibc/lib/Dashboard.cpp similarity index 100% rename from wpilibc/src/main/native/Dashboard.cpp rename to wpilibc/lib/Dashboard.cpp diff --git a/wpilibc/src/main/native/DigitalInput.cpp b/wpilibc/lib/DigitalInput.cpp similarity index 100% rename from wpilibc/src/main/native/DigitalInput.cpp rename to wpilibc/lib/DigitalInput.cpp diff --git a/wpilibc/src/main/native/DigitalModule.cpp b/wpilibc/lib/DigitalModule.cpp similarity index 100% rename from wpilibc/src/main/native/DigitalModule.cpp rename to wpilibc/lib/DigitalModule.cpp diff --git a/wpilibc/src/main/native/DigitalOutput.cpp b/wpilibc/lib/DigitalOutput.cpp similarity index 100% rename from wpilibc/src/main/native/DigitalOutput.cpp rename to wpilibc/lib/DigitalOutput.cpp diff --git a/wpilibc/src/main/native/DigitalSource.cpp b/wpilibc/lib/DigitalSource.cpp similarity index 100% rename from wpilibc/src/main/native/DigitalSource.cpp rename to wpilibc/lib/DigitalSource.cpp diff --git a/wpilibc/src/main/native/DoubleSolenoid.cpp b/wpilibc/lib/DoubleSolenoid.cpp similarity index 100% rename from wpilibc/src/main/native/DoubleSolenoid.cpp rename to wpilibc/lib/DoubleSolenoid.cpp diff --git a/wpilibc/src/main/native/DriverStation.cpp b/wpilibc/lib/DriverStation.cpp similarity index 100% rename from wpilibc/src/main/native/DriverStation.cpp rename to wpilibc/lib/DriverStation.cpp diff --git a/wpilibc/src/main/native/DriverStationEnhancedIO.cpp b/wpilibc/lib/DriverStationEnhancedIO.cpp similarity index 100% rename from wpilibc/src/main/native/DriverStationEnhancedIO.cpp rename to wpilibc/lib/DriverStationEnhancedIO.cpp diff --git a/wpilibc/src/main/native/DriverStationLCD.cpp b/wpilibc/lib/DriverStationLCD.cpp similarity index 100% rename from wpilibc/src/main/native/DriverStationLCD.cpp rename to wpilibc/lib/DriverStationLCD.cpp diff --git a/wpilibc/src/main/native/Encoder.cpp b/wpilibc/lib/Encoder.cpp similarity index 100% rename from wpilibc/src/main/native/Encoder.cpp rename to wpilibc/lib/Encoder.cpp diff --git a/wpilibc/src/main/native/Error.cpp b/wpilibc/lib/Error.cpp similarity index 100% rename from wpilibc/src/main/native/Error.cpp rename to wpilibc/lib/Error.cpp diff --git a/wpilibc/src/main/native/ErrorBase.cpp b/wpilibc/lib/ErrorBase.cpp similarity index 100% rename from wpilibc/src/main/native/ErrorBase.cpp rename to wpilibc/lib/ErrorBase.cpp diff --git a/wpilibc/src/main/native/GearTooth.cpp b/wpilibc/lib/GearTooth.cpp similarity index 100% rename from wpilibc/src/main/native/GearTooth.cpp rename to wpilibc/lib/GearTooth.cpp diff --git a/wpilibc/src/main/native/Gyro.cpp b/wpilibc/lib/Gyro.cpp similarity index 100% rename from wpilibc/src/main/native/Gyro.cpp rename to wpilibc/lib/Gyro.cpp diff --git a/wpilibc/src/main/native/HiTechnicColorSensor.cpp b/wpilibc/lib/HiTechnicColorSensor.cpp similarity index 100% rename from wpilibc/src/main/native/HiTechnicColorSensor.cpp rename to wpilibc/lib/HiTechnicColorSensor.cpp diff --git a/wpilibc/src/main/native/HiTechnicCompass.cpp b/wpilibc/lib/HiTechnicCompass.cpp similarity index 100% rename from wpilibc/src/main/native/HiTechnicCompass.cpp rename to wpilibc/lib/HiTechnicCompass.cpp diff --git a/wpilibc/src/main/native/I2C.cpp b/wpilibc/lib/I2C.cpp similarity index 100% rename from wpilibc/src/main/native/I2C.cpp rename to wpilibc/lib/I2C.cpp diff --git a/wpilibc/src/main/native/InterruptableSensorBase.cpp b/wpilibc/lib/InterruptableSensorBase.cpp similarity index 100% rename from wpilibc/src/main/native/InterruptableSensorBase.cpp rename to wpilibc/lib/InterruptableSensorBase.cpp diff --git a/wpilibc/src/main/native/IterativeRobot.cpp b/wpilibc/lib/IterativeRobot.cpp similarity index 100% rename from wpilibc/src/main/native/IterativeRobot.cpp rename to wpilibc/lib/IterativeRobot.cpp diff --git a/wpilibc/src/main/native/Jaguar.cpp b/wpilibc/lib/Jaguar.cpp similarity index 100% rename from wpilibc/src/main/native/Jaguar.cpp rename to wpilibc/lib/Jaguar.cpp diff --git a/wpilibc/src/main/native/Joystick.cpp b/wpilibc/lib/Joystick.cpp similarity index 100% rename from wpilibc/src/main/native/Joystick.cpp rename to wpilibc/lib/Joystick.cpp diff --git a/wpilibc/src/main/native/Kinect.cpp b/wpilibc/lib/Kinect.cpp similarity index 100% rename from wpilibc/src/main/native/Kinect.cpp rename to wpilibc/lib/Kinect.cpp diff --git a/wpilibc/src/main/native/KinectStick.cpp b/wpilibc/lib/KinectStick.cpp similarity index 100% rename from wpilibc/src/main/native/KinectStick.cpp rename to wpilibc/lib/KinectStick.cpp diff --git a/wpilibc/src/main/native/LiveWindow/LiveWindow.cpp b/wpilibc/lib/LiveWindow/LiveWindow.cpp similarity index 100% rename from wpilibc/src/main/native/LiveWindow/LiveWindow.cpp rename to wpilibc/lib/LiveWindow/LiveWindow.cpp diff --git a/wpilibc/src/main/native/LiveWindow/LiveWindowStatusListener.cpp b/wpilibc/lib/LiveWindow/LiveWindowStatusListener.cpp similarity index 100% rename from wpilibc/src/main/native/LiveWindow/LiveWindowStatusListener.cpp rename to wpilibc/lib/LiveWindow/LiveWindowStatusListener.cpp diff --git a/wpilibc/src/main/native/Module.cpp b/wpilibc/lib/Module.cpp similarity index 100% rename from wpilibc/src/main/native/Module.cpp rename to wpilibc/lib/Module.cpp diff --git a/wpilibc/src/main/native/MotorSafetyHelper.cpp b/wpilibc/lib/MotorSafetyHelper.cpp similarity index 100% rename from wpilibc/src/main/native/MotorSafetyHelper.cpp rename to wpilibc/lib/MotorSafetyHelper.cpp diff --git a/wpilibc/src/main/native/Notifier.cpp b/wpilibc/lib/Notifier.cpp similarity index 100% rename from wpilibc/src/main/native/Notifier.cpp rename to wpilibc/lib/Notifier.cpp diff --git a/wpilibc/src/main/native/PIDController.cpp b/wpilibc/lib/PIDController.cpp similarity index 100% rename from wpilibc/src/main/native/PIDController.cpp rename to wpilibc/lib/PIDController.cpp diff --git a/wpilibc/src/main/native/PWM.cpp b/wpilibc/lib/PWM.cpp similarity index 100% rename from wpilibc/src/main/native/PWM.cpp rename to wpilibc/lib/PWM.cpp diff --git a/wpilibc/src/main/native/Preferences.cpp b/wpilibc/lib/Preferences.cpp similarity index 99% rename from wpilibc/src/main/native/Preferences.cpp rename to wpilibc/lib/Preferences.cpp index f492f97216..76379ec23f 100644 --- a/wpilibc/src/main/native/Preferences.cpp +++ b/wpilibc/lib/Preferences.cpp @@ -13,9 +13,6 @@ #include #include -/** Private NI function needed to write to the VxWorks target */ -extern "C" int Priv_SetWriteFileAllowed(uint32_t enable); - /** The Preferences table name */ static const char *kTableName = "Preferences"; /** The value of the save field */ @@ -537,7 +534,6 @@ void Preferences::WriteTaskRun() giveSemaphore(m_fileOpStarted); FILE *file = NULL; - Priv_SetWriteFileAllowed(1); file = fopen(kFileName, "w"); fputs("[Preferences]\n", file); diff --git a/wpilibc/src/main/native/Relay.cpp b/wpilibc/lib/Relay.cpp similarity index 100% rename from wpilibc/src/main/native/Relay.cpp rename to wpilibc/lib/Relay.cpp diff --git a/wpilibc/src/main/native/Resource.cpp b/wpilibc/lib/Resource.cpp similarity index 100% rename from wpilibc/src/main/native/Resource.cpp rename to wpilibc/lib/Resource.cpp diff --git a/wpilibc/src/main/native/RobotBase.cpp b/wpilibc/lib/RobotBase.cpp similarity index 100% rename from wpilibc/src/main/native/RobotBase.cpp rename to wpilibc/lib/RobotBase.cpp diff --git a/wpilibc/src/main/native/RobotDrive.cpp b/wpilibc/lib/RobotDrive.cpp similarity index 100% rename from wpilibc/src/main/native/RobotDrive.cpp rename to wpilibc/lib/RobotDrive.cpp diff --git a/wpilibc/src/main/native/SPI.cpp b/wpilibc/lib/SPI.cpp similarity index 100% rename from wpilibc/src/main/native/SPI.cpp rename to wpilibc/lib/SPI.cpp diff --git a/wpilibc/src/main/native/SafePWM.cpp b/wpilibc/lib/SafePWM.cpp similarity index 100% rename from wpilibc/src/main/native/SafePWM.cpp rename to wpilibc/lib/SafePWM.cpp diff --git a/wpilibc/src/main/native/SensorBase.cpp b/wpilibc/lib/SensorBase.cpp similarity index 100% rename from wpilibc/src/main/native/SensorBase.cpp rename to wpilibc/lib/SensorBase.cpp diff --git a/wpilibc/src/main/native/SerialPort.cpp b/wpilibc/lib/SerialPort.cpp similarity index 100% rename from wpilibc/src/main/native/SerialPort.cpp rename to wpilibc/lib/SerialPort.cpp diff --git a/wpilibc/src/main/native/Servo.cpp b/wpilibc/lib/Servo.cpp similarity index 100% rename from wpilibc/src/main/native/Servo.cpp rename to wpilibc/lib/Servo.cpp diff --git a/wpilibc/src/main/native/SimpleRobot.cpp b/wpilibc/lib/SimpleRobot.cpp similarity index 100% rename from wpilibc/src/main/native/SimpleRobot.cpp rename to wpilibc/lib/SimpleRobot.cpp diff --git a/wpilibc/src/main/native/SmartDashboard/SendableChooser.cpp b/wpilibc/lib/SmartDashboard/SendableChooser.cpp similarity index 100% rename from wpilibc/src/main/native/SmartDashboard/SendableChooser.cpp rename to wpilibc/lib/SmartDashboard/SendableChooser.cpp diff --git a/wpilibc/src/main/native/SmartDashboard/SmartDashboard.cpp b/wpilibc/lib/SmartDashboard/SmartDashboard.cpp similarity index 100% rename from wpilibc/src/main/native/SmartDashboard/SmartDashboard.cpp rename to wpilibc/lib/SmartDashboard/SmartDashboard.cpp diff --git a/wpilibc/src/main/native/Solenoid.cpp b/wpilibc/lib/Solenoid.cpp similarity index 100% rename from wpilibc/src/main/native/Solenoid.cpp rename to wpilibc/lib/Solenoid.cpp diff --git a/wpilibc/src/main/native/SolenoidBase.cpp b/wpilibc/lib/SolenoidBase.cpp similarity index 100% rename from wpilibc/src/main/native/SolenoidBase.cpp rename to wpilibc/lib/SolenoidBase.cpp diff --git a/wpilibc/src/main/native/Talon.cpp b/wpilibc/lib/Talon.cpp similarity index 100% rename from wpilibc/src/main/native/Talon.cpp rename to wpilibc/lib/Talon.cpp diff --git a/wpilibc/src/main/native/Task.cpp b/wpilibc/lib/Task.cpp similarity index 100% rename from wpilibc/src/main/native/Task.cpp rename to wpilibc/lib/Task.cpp diff --git a/wpilibc/src/main/native/Timer.cpp b/wpilibc/lib/Timer.cpp similarity index 100% rename from wpilibc/src/main/native/Timer.cpp rename to wpilibc/lib/Timer.cpp diff --git a/wpilibc/src/main/native/Ultrasonic.cpp b/wpilibc/lib/Ultrasonic.cpp similarity index 100% rename from wpilibc/src/main/native/Ultrasonic.cpp rename to wpilibc/lib/Ultrasonic.cpp diff --git a/wpilibc/src/main/native/Utility.cpp b/wpilibc/lib/Utility.cpp similarity index 100% rename from wpilibc/src/main/native/Utility.cpp rename to wpilibc/lib/Utility.cpp diff --git a/wpilibc/src/main/native/Victor.cpp b/wpilibc/lib/Victor.cpp similarity index 100% rename from wpilibc/src/main/native/Victor.cpp rename to wpilibc/lib/Victor.cpp diff --git a/wpilibc/pom.xml b/wpilibc/pom.xml deleted file mode 100644 index a4c9c42287..0000000000 --- a/wpilibc/pom.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - 4.0.0 - edu.wpi.first.wpilib - cpp - pom - 0.1.0-SNAPSHOT - - - Athena - - diff --git a/wpilibc/src/main/include/Vision/AxisCamera.h b/wpilibc/src/main/include/Vision/AxisCamera.h deleted file mode 100644 index c6939536d2..0000000000 --- a/wpilibc/src/main/include/Vision/AxisCamera.h +++ /dev/null @@ -1,114 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __AXIS_CAMERA_H__ -#define __AXIS_CAMERA_H__ - -#include "HAL/HAL.h" -#include -#include - -#include "Vision/AxisCameraParams.h" -#if JAVA_CAMERA_LIB != 1 -#include "Vision/ColorImage.h" -#include "Vision/HSLImage.h" -#endif -#include "nivision.h" -#include -#include "Task.h" -#include "HAL/Semaphore.h" - -class PCVideoServer; - -/** - * AxisCamera class. - * This class handles everything about the Axis 206 FRC Camera. - * It starts up 2 tasks each using a different connection to the camera: - * - image reading task that reads images repeatedly from the camera - * - parameter handler task in the base class that monitors for changes to - * parameters and updates the camera - */ -class AxisCamera : public AxisCameraParams -{ -private: - explicit AxisCamera(const char *cameraIP); -public: - virtual ~AxisCamera(); - static AxisCamera& GetInstance(const char *cameraIP = NULL); - static void DeleteInstance(); - - bool IsFreshImage(); - SEMAPHORE_ID GetNewImageSem(); - - int GetImage(Image *imaqImage); -#if JAVA_CAMERA_LIB != 1 - int GetImage(ColorImage *image); - HSLImage *GetImage(); -#endif - - int CopyJPEG(char **destImage, int &destImageSize, int &destImageBufferSize); - -private: - static int s_ImageStreamTaskFunction(AxisCamera *thisPtr); - int ImageStreamTaskFunction(); - - int ReadImagesFromCamera(); - void UpdatePublicImageFromCamera(char *imgBuffer, int imgSize); - - virtual void RestartCameraTask(); - - static AxisCamera *_instance; - int m_cameraSocket; - typedef std::set SemSet_t; - SemSet_t m_newImageSemSet; - - char* m_protectedImageBuffer; - int m_protectedImageBufferLength; - int m_protectedImageSize; - MUTEX_ID m_protectedImageSem; - bool m_freshImage; - - Task m_imageStreamTask; - - PCVideoServer *m_videoServer; -}; - -#if JAVA_CAMERA_LIB == 1 -#ifdef __cplusplus -extern "C" { -#endif - void AxisCameraStart(const char *IPAddress); - int AxisCameraGetImage(Image *image); - void AxisCameraDeleteInstance(); - int AxisCameraFreshImage(); - - // Mid-stream gets & writes - void AxisCameraWriteBrightness(int brightness); - int AxisCameraGetBrightness(); - void AxisCameraWriteWhiteBalance(AxisCameraParams::WhiteBalance_t whiteBalance); - AxisCameraParams::WhiteBalance_t AxisCameraGetWhiteBalance(); - void AxisCameraWriteColorLevel(int colorLevel); - int AxisCameraGetColorLevel(); - void AxisCameraWriteExposureControl(AxisCameraParams::Exposure_t exposure); - AxisCameraParams::Exposure_t AxisCameraGetExposureControl(); - void AxisCameraWriteExposurePriority(int exposurePriority); - int AxisCameraGetExposurePriority(); - void AxisCameraWriteMaxFPS(int maxFPS); - int AxisCameraGetMaxFPS(); - - // New-Stream gets & writes - void AxisCameraWriteResolution(AxisCameraParams::Resolution_t resolution); - AxisCameraParams::Resolution_t AxisCameraGetResolution(); - void AxisCameraWriteCompression(int compression); - int AxisCameraGetCompression(); - void AxisCameraWriteRotation(AxisCameraParams::Rotation_t rotation); - AxisCameraParams::Rotation_t AxisCameraGetRotation(); -#ifdef __cplusplus -} -#endif -#endif // JAVA_CAMERA_LIB == 1 - -#endif diff --git a/wpilibc/src/main/include/Vision/AxisCameraParams.h b/wpilibc/src/main/include/Vision/AxisCameraParams.h deleted file mode 100644 index 2986bfc0a9..0000000000 --- a/wpilibc/src/main/include/Vision/AxisCameraParams.h +++ /dev/null @@ -1,91 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __AXIS_CAMERA_PARAMS_H__ -#define __AXIS_CAMERA_PARAMS_H__ - -#include "EnumCameraParameter.h" -#include "ErrorBase.h" -#include "IntCameraParameter.h" -#include "Task.h" -#include "HAL/Semaphore.h" -#include - -/** - * AxisCameraParams class. - * This class handles parameter configuration the Axis 206 Ethernet Camera. - * It starts up a tasks with an independent connection to the camera that monitors - * for changes to parameters and updates the camera. - * It is only separate from AxisCamera to isolate the parameter code from the image streaming code. - */ -class AxisCameraParams : public ErrorBase -{ -public: - typedef enum Exposure_t {kExposure_Automatic, kExposure_Hold, kExposure_FlickerFree50Hz, kExposure_FlickerFree60Hz} Exposure; - typedef enum WhiteBalance_t {kWhiteBalance_Automatic, kWhiteBalance_Hold, kWhiteBalance_FixedOutdoor1, kWhiteBalance_FixedOutdoor2, kWhiteBalance_FixedIndoor, kWhiteBalance_FixedFlourescent1, kWhiteBalance_FixedFlourescent2} WhiteBalance; - typedef enum Resolution_t {kResolution_640x480, kResolution_640x360, kResolution_320x240, kResolution_160x120} Resolution; - typedef enum Rotation_t {kRotation_0, kRotation_180} Rotation; - -protected: - AxisCameraParams(const char* ipAddress); - virtual ~AxisCameraParams(); - -public: - // Mid-stream gets & writes - void WriteBrightness(int); - int GetBrightness(); - void WriteWhiteBalance(WhiteBalance_t whiteBalance); - WhiteBalance_t GetWhiteBalance(); - void WriteColorLevel(int); - int GetColorLevel(); - void WriteExposureControl(Exposure_t); - Exposure_t GetExposureControl(); - void WriteExposurePriority(int); - int GetExposurePriority(); - void WriteMaxFPS(int); - int GetMaxFPS(); - - // New-Stream gets & writes (i.e. require restart) - void WriteResolution(Resolution_t); - Resolution_t GetResolution(); - void WriteCompression(int); - int GetCompression(); - void WriteRotation(Rotation_t); - Rotation_t GetRotation(); - -protected: - virtual void RestartCameraTask() = 0; - int CreateCameraSocket(const char *requestString); - - static int s_ParamTaskFunction(AxisCameraParams* thisPtr); - int ParamTaskFunction(); - - int UpdateCamParam(const char *param); - int ReadCamParams(); - - Task m_paramTask; - uint32_t m_ipAddress; // IPv4 - SEMAPHORE_ID m_paramChangedSem; - SEMAPHORE_ID m_socketPossessionSem; - - //Camera Properties - IntCameraParameter *m_brightnessParam; - IntCameraParameter *m_compressionParam; - IntCameraParameter *m_exposurePriorityParam; - IntCameraParameter *m_colorLevelParam; - IntCameraParameter *m_maxFPSParam; - EnumCameraParameter *m_rotationParam; - EnumCameraParameter *m_resolutionParam; - EnumCameraParameter *m_exposureControlParam; - EnumCameraParameter *m_whiteBalanceParam; - - // A vector to access all properties simply. - typedef std::vector ParameterVector_t; - ParameterVector_t m_parameters; -}; - - -#endif diff --git a/wpilibc/src/main/include/Vision/BinaryImage.h b/wpilibc/src/main/include/Vision/BinaryImage.h deleted file mode 100644 index 23a8557392..0000000000 --- a/wpilibc/src/main/include/Vision/BinaryImage.h +++ /dev/null @@ -1,42 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __BINARY_IMAGE_H__ -#define __BINARY_IMAGE_H__ - -#include "MonoImage.h" -/** - * Included for ParticleAnalysisReport definition - * TODO: Eliminate this dependency! - */ -#include "Vision2009/VisionAPI.h" - -#include -#include -using namespace std; - -class BinaryImage : public MonoImage -{ -public: - BinaryImage(); - virtual ~BinaryImage(); - int GetNumberParticles(); - ParticleAnalysisReport GetParticleAnalysisReport(int particleNumber); - void GetParticleAnalysisReport(int particleNumber, ParticleAnalysisReport *par); - vector* GetOrderedParticleAnalysisReports(); - BinaryImage *RemoveSmallObjects(bool connectivity8, int erosions); - BinaryImage *RemoveLargeObjects(bool connectivity8, int erosions); - BinaryImage *ConvexHull(bool connectivity8); - BinaryImage *ParticleFilter(ParticleFilterCriteria2 *criteria, int criteriaCount); - virtual void Write(const char *fileName); -private: - bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, int *result); - bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, double *result); - static double NormalizeFromRange(double position, int range); - static bool CompareParticleSizes(ParticleAnalysisReport particle1, ParticleAnalysisReport particle2); -}; - -#endif diff --git a/wpilibc/src/main/include/Vision/ColorImage.h b/wpilibc/src/main/include/Vision/ColorImage.h deleted file mode 100644 index af71ce96b4..0000000000 --- a/wpilibc/src/main/include/Vision/ColorImage.h +++ /dev/null @@ -1,68 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __COLOR_IMAGE_H__ -#define __COLOR_IMAGE_H__ - -#include "ImageBase.h" -#include "BinaryImage.h" -#include "Threshold.h" - -class ColorImage : public ImageBase -{ -public: - ColorImage(ImageType type); - virtual ~ColorImage(); - BinaryImage *ThresholdRGB(int redLow, int redHigh, int greenLow, int greenHigh, int blueLow, int blueHigh); - BinaryImage *ThresholdHSL(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int luminenceLow, int luminenceHigh); - BinaryImage *ThresholdHSV(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int valueHigh, int valueLow); - BinaryImage *ThresholdHSI(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int intensityLow, int intensityHigh); - BinaryImage *ThresholdRGB(Threshold &threshold); - BinaryImage *ThresholdHSL(Threshold &threshold); - BinaryImage *ThresholdHSV(Threshold &threshold); - BinaryImage *ThresholdHSI(Threshold &threshold); - MonoImage *GetRedPlane(); - MonoImage *GetGreenPlane(); - MonoImage *GetBluePlane(); - MonoImage *GetHSLHuePlane(); - MonoImage *GetHSVHuePlane(); - MonoImage *GetHSIHuePlane(); - MonoImage *GetHSLSaturationPlane(); - MonoImage *GetHSVSaturationPlane(); - MonoImage *GetHSISaturationPlane(); - MonoImage *GetLuminancePlane(); - MonoImage *GetValuePlane(); - MonoImage *GetIntensityPlane(); - void ReplaceRedPlane(MonoImage *plane); - void ReplaceGreenPlane(MonoImage *plane); - void ReplaceBluePlane(MonoImage *plane); - void ReplaceHSLHuePlane(MonoImage *plane); - void ReplaceHSVHuePlane(MonoImage *plane); - void ReplaceHSIHuePlane(MonoImage *plane); - void ReplaceHSLSaturationPlane(MonoImage *plane); - void ReplaceHSVSaturationPlane(MonoImage *plane); - void ReplaceHSISaturationPlane(MonoImage *plane); - void ReplaceLuminancePlane(MonoImage *plane); - void ReplaceValuePlane(MonoImage *plane); - void ReplaceIntensityPlane(MonoImage *plane); - void ColorEqualize(); - void LuminanceEqualize(); - -private: - BinaryImage *ComputeThreshold(ColorMode colorMode, int low1, int high1, int low2, int high2, int low3, int high3); - void Equalize(bool allPlanes); - MonoImage * ExtractColorPlane(ColorMode mode, int planeNumber); - MonoImage * ExtractFirstColorPlane(ColorMode mode); - MonoImage * ExtractSecondColorPlane(ColorMode mode); - MonoImage * ExtractThirdColorPlane(ColorMode mode); - void ReplacePlane(ColorMode mode, MonoImage *plane, int planeNumber); - void ReplaceFirstColorPlane(ColorMode mode, MonoImage *plane); - void ReplaceSecondColorPlane(ColorMode mode, MonoImage *plane); - void ReplaceThirdColorPlane(ColorMode mode, MonoImage *plane); -}; - -#endif - diff --git a/wpilibc/src/main/include/Vision/EnumCameraParameter.h b/wpilibc/src/main/include/Vision/EnumCameraParameter.h deleted file mode 100644 index 543209f5c9..0000000000 --- a/wpilibc/src/main/include/Vision/EnumCameraParameter.h +++ /dev/null @@ -1,28 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __ENUM_CAMERA_PARAMETER_H__ -#define __ENUM_CAMERA_PARAMETER_H__ - -#include "IntCameraParameter.h" - -/** - * Enumerated camera parameter. - * This class represents a camera parameter that takes an enumerated type for a value. - */ -class EnumCameraParameter: public IntCameraParameter -{ -private: - const char *const*m_enumValues; - int m_numChoices; - -public: - EnumCameraParameter(const char *setString, const char *getString, bool requiresRestart, const char *const*choices, int numChoices); - virtual bool CheckChanged(bool &changed, char *param); - virtual void GetParamFromString(const char *string, int stringLength); -}; - -#endif diff --git a/wpilibc/src/main/include/Vision/HSLImage.h b/wpilibc/src/main/include/Vision/HSLImage.h deleted file mode 100644 index fb365adb9e..0000000000 --- a/wpilibc/src/main/include/Vision/HSLImage.h +++ /dev/null @@ -1,24 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __HSL_IMAGE_H__ -#define __HSL_IMAGE_H__ - -#include "ColorImage.h" - -/** - * A color image represented in HSL color space at 3 bytes per pixel. - */ -class HSLImage : public ColorImage -{ -public: - HSLImage(); - HSLImage(const char *fileName); - virtual ~HSLImage(); -}; - -#endif - diff --git a/wpilibc/src/main/include/Vision/ImageBase.h b/wpilibc/src/main/include/Vision/ImageBase.h deleted file mode 100644 index 6a45ec1876..0000000000 --- a/wpilibc/src/main/include/Vision/ImageBase.h +++ /dev/null @@ -1,29 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __IMAGE_BASE_H__ -#define __IMAGE_BASE_H__ - -#include -#include "nivision.h" -#include "ErrorBase.h" - -#define DEFAULT_BORDER_SIZE 3 - -class ImageBase : public ErrorBase -{ -public: - ImageBase(ImageType type); - virtual ~ImageBase(); - virtual void Write(const char *fileName); - int GetHeight(); - int GetWidth(); - Image *GetImaqImage(); -protected: - Image *m_imaqImage; -}; - -#endif diff --git a/wpilibc/src/main/include/Vision/IntCameraParameter.h b/wpilibc/src/main/include/Vision/IntCameraParameter.h deleted file mode 100644 index f4a5abb7d0..0000000000 --- a/wpilibc/src/main/include/Vision/IntCameraParameter.h +++ /dev/null @@ -1,36 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __INT_CAMERA_PARAMETER_H__ -#define __INT_CAMERA_PARAMETER_H__ - -#include "HAL/HAL.h" - -/** - * Integer camera parameter. - * This class represents a camera parameter that takes an integer value. - */ -class IntCameraParameter -{ -protected: - const char *m_setString; - const char *m_getString; - bool m_changed; - bool m_requiresRestart; - int m_value; // parameter value - - int SearchForParam(const char *pattern, const char *searchString, int searchStringLen, char *result); - -public: - IntCameraParameter(const char *setString, const char *getString, bool requiresRestart); - virtual ~IntCameraParameter(){} - int GetValue(); - void SetValue(int value); - virtual bool CheckChanged(bool &changed, char *param); - virtual void GetParamFromString(const char *string, int stringLength); -}; - -#endif diff --git a/wpilibc/src/main/include/Vision/MonoImage.h b/wpilibc/src/main/include/Vision/MonoImage.h deleted file mode 100644 index 277ff3a7e0..0000000000 --- a/wpilibc/src/main/include/Vision/MonoImage.h +++ /dev/null @@ -1,29 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __MONO_IMAGE_H__ -#define __MONO_IMAGE_H__ - -#include "ImageBase.h" - -#include - -using namespace std; - -class MonoImage : public ImageBase -{ -public: - MonoImage(); - virtual ~MonoImage(); - - vector * DetectEllipses(EllipseDescriptor *ellipseDescriptor, - CurveOptions *curveOptions, - ShapeDetectionOptions *shapeDetectionOptions, - ROI *roi); - vector * DetectEllipses(EllipseDescriptor *ellipseDescriptor); -}; - -#endif diff --git a/wpilibc/src/main/include/Vision/PCVideoServer.h b/wpilibc/src/main/include/Vision/PCVideoServer.h deleted file mode 100644 index 869223d5df..0000000000 --- a/wpilibc/src/main/include/Vision/PCVideoServer.h +++ /dev/null @@ -1,39 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __PC_VIDEO_SERVER_H__ -#define __PC_VIDEO_SERVER_H__ - -#include "Task.h" -#include - -/** port for sending video to laptop */ -#define VIDEO_TO_PC_PORT 1180 - -/** - * Class the serves images to the PC. - */ -class PCVideoServer : public ErrorBase { - -public: - PCVideoServer(); - ~PCVideoServer(); - unsigned int Release(); - void Start(); - void Stop(); - -private: - static int s_ServerTask(PCVideoServer *thisPtr); - int ServerTask(); - int StartServerTask(); - - Task m_serverTask; - SEMAPHORE_ID m_newImageSem; - bool m_stopServer; -}; - -#endif - diff --git a/wpilibc/src/main/include/Vision/RGBImage.h b/wpilibc/src/main/include/Vision/RGBImage.h deleted file mode 100644 index a92dc5822a..0000000000 --- a/wpilibc/src/main/include/Vision/RGBImage.h +++ /dev/null @@ -1,23 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __RGB_IMAGE_H__ -#define __RGB_IMAGE_H__ - -#include "ColorImage.h" - -/** - * A color image represented in RGB color space at 3 bytes per pixel. - */ -class RGBImage : public ColorImage -{ -public: - RGBImage(); - RGBImage(const char *fileName); - virtual ~RGBImage(); -}; - -#endif diff --git a/wpilibc/src/main/include/Vision/Threshold.h b/wpilibc/src/main/include/Vision/Threshold.h deleted file mode 100644 index c38d7ca6a6..0000000000 --- a/wpilibc/src/main/include/Vision/Threshold.h +++ /dev/null @@ -1,30 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#ifndef __THRESHOLD_H__ -#define __THRESHOLD_H__ - -/** - * Color threshold values. - * This object represnts the threshold values for any type of color object - * that is used in a threshhold operation. It simplifies passing values - * around in a program for color detection. - */ -class Threshold -{ -public: - int plane1Low; - int plane1High; - int plane2Low; - int plane2High; - int plane3Low; - int plane3High; - Threshold(int plane1Low, int plane1High, - int plane2Low, int plane2High, - int plane3Low, int plane3High); -}; - -#endif diff --git a/wpilibc/src/main/native/Vision/AxisCamera.cpp b/wpilibc/src/main/native/Vision/AxisCamera.cpp deleted file mode 100644 index 398cd38765..0000000000 --- a/wpilibc/src/main/native/Vision/AxisCamera.cpp +++ /dev/null @@ -1,502 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "Vision/AxisCamera.h" - -#include -#include "NetworkCommunication/UsageReporting.h" -#include "HAL/cpp/Synchronized.h" -#include "Vision/PCVideoServer.h" -#include "WPIErrors.h" - -/** Private NI function to decode JPEG */ -IMAQ_FUNC int Priv_ReadJPEGString_C(Image* _image, const unsigned char* _string, uint32_t _stringLength); - -// Max packet without jumbo frames is 1500... add 36 because?? -#define kMaxPacketSize 1536 -#define kImageBufferAllocationIncrement 1000 - -AxisCamera *AxisCamera::_instance = NULL; - -/** - * AxisCamera constructor - */ -AxisCamera::AxisCamera(const char *ipAddress) - : AxisCameraParams(ipAddress) - , m_cameraSocket(ERROR) - , m_protectedImageBuffer(NULL) - , m_protectedImageBufferLength(0) - , m_protectedImageSize(0) - , m_protectedImageSem(NULL) - , m_freshImage(false) - , m_imageStreamTask("cameraTask", (FUNCPTR)s_ImageStreamTaskFunction) - , m_videoServer(NULL) -{ - m_protectedImageSem = initializeMutex(SEMAPHORE_Q_PRIORITY | SEMAPHORE_INVERSION_SAFE | SEMAPHORE_DELETE_SAFE); - -#if JAVA_CAMERA_LIB != 1 - nUsageReporting::report(nUsageReporting::kResourceType_AxisCamera, ipAddress == NULL ? 1 : 2); -#endif - - if (!StatusIsFatal()) - m_imageStreamTask.Start((int)this); -} - -/** - * Destructor - */ -AxisCamera::~AxisCamera() -{ - delete m_videoServer; - m_videoServer = NULL; - - m_imageStreamTask.Stop(); - close(m_cameraSocket); - - SemSet_t::iterator it = m_newImageSemSet.begin(); - SemSet_t::iterator end = m_newImageSemSet.end(); - for (;it != end; it++) - { - deleteSemaphore(*it); - } - m_newImageSemSet.clear(); - - deleteMutex(m_protectedImageSem); -} - -/** - * Get a pointer to the AxisCamera object, if the object does not exist, create it - * To use the camera on port 2 of a cRIO-FRC, pass "192.168.0.90" to the first GetInstance call. - * @return reference to AxisCamera object - */ -AxisCamera &AxisCamera::GetInstance(const char *cameraIP) -{ - if (NULL == _instance) - { - _instance = new AxisCamera(cameraIP); - - _instance->m_videoServer = new PCVideoServer(); - } - - return *_instance; -} - -/** - * Called by Java to delete the camera... how thoughtful - */ -void AxisCamera::DeleteInstance() -{ - delete _instance; - _instance = NULL; -} - -/** - * Return true if the latest image from the camera has not been retrieved by calling GetImage() yet. - * @return true if the image has not been retrieved yet. - */ -bool AxisCamera::IsFreshImage() -{ - return m_freshImage; -} - -/** - * Get the semaphore to be used to synchronize image access with camera acquisition - * - * Call semTake on the returned semaphore to block until a new image is acquired. - * - * The semaphore is owned by the AxisCamera class and will be deleted when the class is destroyed. - * @return A semaphore to notify when new image is received - */ -SEMAPHORE_ID AxisCamera::GetNewImageSem() -{ - SEMAPHORE_ID sem = initializeSemaphore(SEMAPHORE_Q_PRIORITY, SEMAPHORE_EMPTY); - m_newImageSemSet.insert(sem); - return sem; -} - -/** - * Get an image from the camera and store it in the provided image. - * @param image The imaq image to store the result in. This must be an HSL or RGB image - * This function is called by Java. - * @return 1 upon success, zero on a failure - */ -int AxisCamera::GetImage(Image* imaqImage) -{ - if (m_protectedImageBuffer == NULL) - return 0; - Synchronized sync(m_protectedImageSem); - Priv_ReadJPEGString_C(imaqImage, - (unsigned char*)m_protectedImageBuffer, m_protectedImageSize); - m_freshImage = false; - return 1; -} - -#if JAVA_CAMERA_LIB != 1 -/** - * Get an image from the camera and store it in the provided image. - * @param image The image to store the result in. This must be an HSL or RGB image - * @return 1 upon success, zero on a failure - */ -int AxisCamera::GetImage(ColorImage* image) -{ - return GetImage(image->GetImaqImage()); -} - -/** - * Instantiate a new image object and fill it with the latest image from the camera. - * - * The returned pointer is owned by the caller and is their responsibility to delete. - * @return a pointer to an HSLImage object - */ -HSLImage* AxisCamera::GetImage() -{ - HSLImage *image = new HSLImage(); - GetImage(image); - return image; -} -#endif - -/** - * Copy an image into an existing buffer. - * This copies an image into an existing buffer rather than creating a new image - * in memory. That way a new image is only allocated when the image being copied is - * larger than the destination. - * This method is called by the PCVideoServer class. - * @param imageData The destination image. - * @param numBytes The size of the destination image. - * @return 0 if failed (no source image or no memory), 1 if success. - */ -int AxisCamera::CopyJPEG(char **destImage, int &destImageSize, int &destImageBufferSize) -{ - Synchronized sync(m_protectedImageSem); - if (destImage == NULL) - wpi_setWPIErrorWithContext(NullParameter, "destImage must not be NULL"); - - if (m_protectedImageBuffer == NULL || m_protectedImageSize <= 0) - return 0; // if no source image - - if (destImageBufferSize < m_protectedImageSize) // if current destination buffer too small - { - if (*destImage != NULL) delete [] *destImage; - destImageBufferSize = m_protectedImageSize + kImageBufferAllocationIncrement; - *destImage = new char[destImageBufferSize]; - if (*destImage == NULL) return 0; - } - // copy this image into destination buffer - if (*destImage == NULL) - { - wpi_setWPIErrorWithContext(NullParameter, "*destImage must not be NULL"); - } - // TODO: Is this copy realy necessary... perhaps we can simply transmit while holding the protected buffer - memcpy(*destImage, m_protectedImageBuffer, m_protectedImageSize); - destImageSize = m_protectedImageSize; - return 1; -} - -/** - * Static interface that will cause an instantiation if necessary. - * This static stub is directly spawned as a task to read images from the camera. - */ -int AxisCamera::s_ImageStreamTaskFunction(AxisCamera *thisPtr) -{ - return thisPtr->ImageStreamTaskFunction(); -} - -/** - * Task spawned by AxisCamera constructor to receive images from cam - * If setNewImageSem has been called, this function does a semGive on each new image - * Images can be accessed by calling getImage() - */ -int AxisCamera::ImageStreamTaskFunction() -{ - // Loop on trying to setup the camera connection. This happens in a background - // thread so it shouldn't effect the operation of user programs. - while (1) - { - const char *requestString = "GET /mjpg/video.mjpg HTTP/1.1\n\ -User-Agent: HTTPStreamClient\n\ -Connection: Keep-Alive\n\ -Cache-Control: no-cache\n\ -Authorization: Basic RlJDOkZSQw==\n\n"; - takeSemaphore(m_socketPossessionSem, SEMAPHORE_WAIT_FOREVER); - m_cameraSocket = CreateCameraSocket(requestString); - if (m_cameraSocket == ERROR) - { - // Don't hammer the camera if it isn't ready. - giveSemaphore(m_socketPossessionSem); - delayTicks(1000); - } - else - { - ReadImagesFromCamera(); - } - } - return 0; -} - -/** - * This function actually reads the images from the camera. - */ -int AxisCamera::ReadImagesFromCamera() -{ - char *imgBuffer = NULL; - int imgBufferLength = 0; - //Infinite loop, task deletion handled by taskDeleteHook - // Socket cleanup handled by destructor - - // TODO: these recv calls must be non-blocking. Otherwise if the camera - // fails during a read, the code hangs and never retries when the camera comes - // back up. - - int counter = 2; - while (1) - { - char initialReadBuffer[kMaxPacketSize] = ""; - char intermediateBuffer[1]; - char *trailingPtr = initialReadBuffer; - int trailingCounter = 0; - while (counter) - { - // TODO: fix me... this cannot be the most efficient way to approach this, reading one byte at a time. - if(recv(m_cameraSocket, intermediateBuffer, 1, 0) == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to read image header"); - close (m_cameraSocket); - return ERROR; - } - strncat(initialReadBuffer, intermediateBuffer, 1); - // trailingCounter ensures that we start looking for the 4 byte string after - // there is at least 4 bytes total. Kind of obscure. - // look for 2 blank lines (\r\n) - if (NULL != strstr(trailingPtr, "\r\n\r\n")) - { - --counter; - } - if (++trailingCounter >= 4) - { - trailingPtr++; - } - } - counter = 1; - char *contentLength = strstr(initialReadBuffer, "Content-Length: "); - if (contentLength == NULL) - { - wpi_setWPIErrorWithContext(IncompatibleMode, "No content-length token found in packet"); - close(m_cameraSocket); - return ERROR; - } - contentLength = contentLength + 16; // skip past "content length" - int readLength = atol(contentLength); // get the image byte count - - // Make sure buffer is large enough - if (imgBufferLength < readLength) - { - if (imgBuffer) delete[] imgBuffer; - imgBufferLength = readLength + kImageBufferAllocationIncrement; - imgBuffer = new char[imgBufferLength]; - if (imgBuffer == NULL) - { - imgBufferLength = 0; - continue; - } - } - - // Read the image data for "Content-Length" bytes - int bytesRead = 0; - int remaining = readLength; - while(bytesRead < readLength) - { - int bytesThisRecv = recv(m_cameraSocket, &imgBuffer[bytesRead], remaining, 0); - bytesRead += bytesThisRecv; - remaining -= bytesThisRecv; - } - // Update image - UpdatePublicImageFromCamera(imgBuffer, readLength); - if (takeSemaphore(m_paramChangedSem, SEMAPHORE_NO_WAIT) == OK) - { - // params need to be updated: close the video stream; release the camera. - close(m_cameraSocket); - giveSemaphore(m_socketPossessionSem); - return 0; - } - } -} - -/** - * Copy the image from private buffer to shared buffer. - * @param imgBuffer The buffer containing the image - * @param bufLength The length of the image - */ -void AxisCamera::UpdatePublicImageFromCamera(char *imgBuffer, int imgSize) -{ - { - Synchronized sync(m_protectedImageSem); - - // Adjust the buffer size if current destination buffer is too small. - if (m_protectedImageBufferLength < imgSize) - { - if (m_protectedImageBuffer != NULL) delete [] m_protectedImageBuffer; - m_protectedImageBufferLength = imgSize + kImageBufferAllocationIncrement; - m_protectedImageBuffer = new char[m_protectedImageBufferLength]; - if (m_protectedImageBuffer == NULL) - { - m_protectedImageBufferLength = 0; - return; - } - } - - memcpy(m_protectedImageBuffer, imgBuffer, imgSize); - m_protectedImageSize = imgSize; - } - - m_freshImage = true; - // Notify everyone who is interested. - SemSet_t::iterator it = m_newImageSemSet.begin(); - SemSet_t::iterator end = m_newImageSemSet.end(); - for (;it != end; it++) - { - giveSemaphore(*it); - } -} - -/** - * Implement the pure virtual interface so that when parameter changes require a restart, the image task can be bounced. - */ -void AxisCamera::RestartCameraTask() -{ - m_imageStreamTask.Stop(); - m_imageStreamTask.Start((int)this); -} - -#if JAVA_CAMERA_LIB == 1 - -// C bindings used by Java -// These need to stay as is or Java has to change - -void AxisCameraStart(const char *IPAddress) -{ -#ifdef SVN_REV - if (strlen(SVN_REV)) - { - printf("JavaCameraLib was compiled from SVN revision %s\n", SVN_REV); - } - else - { - printf("JavaCameraLib was compiled from a location that is not source controlled.\n"); - } -#else - printf("JavaCameraLib was compiled without -D'SVN_REV=nnnn'\n"); -#endif - AxisCamera::GetInstance(IPAddress); -} - -int AxisCameraGetImage (Image* image) -{ - return AxisCamera::GetInstance().GetImage(image); -} - -void AxisCameraWriteBrightness(int brightness) -{ - AxisCamera::GetInstance().WriteBrightness(brightness); -} - -int AxisCameraGetBrightness() -{ - return AxisCamera::GetInstance().GetBrightness(); -} - -void AxisCameraWriteWhiteBalance(AxisCameraParams::WhiteBalance_t whiteBalance) -{ - AxisCamera::GetInstance().WriteWhiteBalance(whiteBalance); -} - -AxisCameraParams::WhiteBalance_t AxisCameraGetWhiteBalance() -{ - return AxisCamera::GetInstance().GetWhiteBalance(); -} - -void AxisCameraWriteColorLevel(int colorLevel) -{ - AxisCamera::GetInstance().WriteColorLevel(colorLevel); -} - -int AxisCameraGetColorLevel() -{ - return AxisCamera::GetInstance().GetColorLevel(); -} - -void AxisCameraWriteExposureControl(AxisCameraParams::Exposure_t exposure) -{ - AxisCamera::GetInstance().WriteExposureControl(exposure); -} - -AxisCameraParams::Exposure_t AxisCameraGetExposureControl() -{ - return AxisCamera::GetInstance().GetExposureControl(); -} - -void AxisCameraWriteExposurePriority(int exposure) -{ - AxisCamera::GetInstance().WriteExposurePriority(exposure); -} - -int AxisCameraGetExposurePriority() -{ - return AxisCamera::GetInstance().GetExposurePriority(); -} - -void AxisCameraWriteMaxFPS(int maxFPS) -{ - AxisCamera::GetInstance().WriteMaxFPS(maxFPS); -} - -int AxisCameraGetMaxFPS() -{ - return AxisCamera::GetInstance().GetMaxFPS(); -} - -void AxisCameraWriteResolution(AxisCameraParams::Resolution_t resolution) -{ - AxisCamera::GetInstance().WriteResolution(resolution); -} - -AxisCameraParams::Resolution_t AxisCameraGetResolution() -{ - return AxisCamera::GetInstance().GetResolution(); -} - -void AxisCameraWriteCompression(int compression) -{ - AxisCamera::GetInstance().WriteCompression(compression); -} - -int AxisCameraGetCompression() -{ - return AxisCamera::GetInstance().GetCompression(); -} - -void AxisCameraWriteRotation(AxisCameraParams::Rotation_t rotation) -{ - AxisCamera::GetInstance().WriteRotation(rotation); -} - -AxisCameraParams::Rotation_t AxisCameraGetRotation() -{ - return AxisCamera::GetInstance().GetRotation(); -} - -void AxisCameraDeleteInstance() -{ - AxisCamera::DeleteInstance(); -} - -int AxisCameraFreshImage() -{ - return AxisCamera::GetInstance().IsFreshImage(); -} - -#endif // JAVA_CAMERA_LIB == 1 - diff --git a/wpilibc/src/main/native/Vision/AxisCameraParams.cpp b/wpilibc/src/main/native/Vision/AxisCameraParams.cpp deleted file mode 100644 index 9c353fece4..0000000000 --- a/wpilibc/src/main/native/Vision/AxisCameraParams.cpp +++ /dev/null @@ -1,469 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "Vision/AxisCameraParams.h" - -#include "Vision/AxisCamera.h" -#include -#include "pcre.h" -#include -#include -#include "HAL/cpp/Synchronized.h" -#include "Timer.h" -#include "Utility.h" -#include "WPIErrors.h" - -#if JAVA_CAMERA_LIB != 1 -#include "DriverStation.h" -#endif - -static const char *const kRotationChoices[] = {"0", "180"}; -static const char *const kResolutionChoices[] = {"640x480", "640x360", "320x240", "160x120"}; -static const char *const kExposureControlChoices[] = { "automatic", "hold", "flickerfree50", "flickerfree60" }; -static const char *const kWhiteBalanceChoices[] = { "auto", "holdwb", "fixed_outdoor1", - "fixed_outdoor2", "fixed_indoor", "fixed_fluor1", "fixed_fluor2" }; - -/** - * AxisCamera constructor - */ -AxisCameraParams::AxisCameraParams(const char* ipAddress) - : m_paramTask("paramTask", (FUNCPTR) s_ParamTaskFunction) - , m_paramChangedSem (NULL) - , m_socketPossessionSem (NULL) - , m_brightnessParam (NULL) - , m_compressionParam (NULL) - , m_exposurePriorityParam (NULL) - , m_colorLevelParam (NULL) - , m_maxFPSParam (NULL) - , m_rotationParam (NULL) - , m_resolutionParam (NULL) - , m_exposureControlParam (NULL) - , m_whiteBalanceParam (NULL) -{ - if (ipAddress == NULL || strlen(ipAddress) == 0) - { -#if JAVA_CAMERA_LIB == 1 - wpi_setWPIErrorWithContext(ParameterOutOfRange, "IP Address must be specified"); - return; -#else - DriverStation *ds = DriverStation::GetInstance(); - ds->WaitForData(); - uint16_t teamNumber = ds->GetTeamNumber(); - char cameraIP[16]; - snprintf(cameraIP, 16, "10.%d.%d.11", teamNumber / 100, teamNumber % 100); - m_ipAddress = inet_addr(cameraIP); -#endif - } - else - { - m_ipAddress = inet_addr((char*)ipAddress); - } - - if (m_ipAddress == (u_long)ERROR) - { - wpi_setErrnoError(); - return; - } - - m_brightnessParam = new IntCameraParameter("ImageSource.I0.Sensor.Brightness=%i", - "root.ImageSource.I0.Sensor.Brightness=(.*)", false); - m_parameters.push_back(m_brightnessParam); - m_colorLevelParam = new IntCameraParameter("ImageSource.I0.Sensor.ColorLevel=%i", - "root.ImageSource.I0.Sensor.ColorLevel=(.*)", false); - m_parameters.push_back(m_colorLevelParam); - m_exposurePriorityParam = new IntCameraParameter("ImageSource.I0.Sensor.exposurePriority=%i", - "root.ImageSource.I0.Sensor.ExposurePriority=(.*)", false); - m_parameters.push_back(m_exposurePriorityParam); - m_compressionParam = new IntCameraParameter("Image.I0.Appearance.Compression=%i", - "root.Image.I0.Appearance.Compression=(.*)", true); - m_parameters.push_back(m_compressionParam); - m_maxFPSParam = new IntCameraParameter("Image.I0.Stream.FPS=%i", - "root.Image.I0.Stream.FPS=(.*)", false); - m_parameters.push_back(m_maxFPSParam); - m_rotationParam = new EnumCameraParameter("Image.I0.Appearance.Rotation=%s", - "root.Image.I0.Appearance.Rotation=(.*)", true, kRotationChoices, sizeof(kRotationChoices)/sizeof(kRotationChoices[0])); - m_parameters.push_back(m_rotationParam); - m_resolutionParam = new EnumCameraParameter("Image.I0.Appearance.Resolution=%s", - "root.Image.I0.Appearance.Resolution=(.*)", true, kResolutionChoices, sizeof(kResolutionChoices)/sizeof(kResolutionChoices[0])); - m_parameters.push_back(m_resolutionParam); - m_exposureControlParam = new EnumCameraParameter("ImageSource.I0.Sensor.Exposure=%s", - "root.ImageSource.I0.Sensor.Exposure=(.*)", false, kExposureControlChoices, sizeof(kExposureControlChoices)/sizeof(kExposureControlChoices[0])); - m_parameters.push_back(m_exposureControlParam); - m_whiteBalanceParam = new EnumCameraParameter("ImageSource.IO.Sensor.WhiteBalance=%s", - "root.ImageSource.I0.Sensor.WhiteBalance=(.*)", false, kWhiteBalanceChoices, sizeof(kWhiteBalanceChoices)/sizeof(kWhiteBalanceChoices[0])); - m_parameters.push_back(m_whiteBalanceParam); - - m_paramChangedSem = initializeSemaphore(SEMAPHORE_Q_PRIORITY, SEMAPHORE_EMPTY); - m_socketPossessionSem = initializeSemaphore(SEMAPHORE_Q_PRIORITY, SEMAPHORE_FULL); - - m_paramTask.Start((int)this); -} - -/** - * Destructor - */ -AxisCameraParams::~AxisCameraParams() -{ - m_paramTask.Stop(); - - deleteSemaphore(m_socketPossessionSem); - deleteSemaphore(m_paramChangedSem); - - delete m_whiteBalanceParam; - delete m_exposureControlParam; - delete m_resolutionParam; - delete m_rotationParam; - delete m_maxFPSParam; - delete m_compressionParam; - delete m_exposurePriorityParam; - delete m_colorLevelParam; - delete m_brightnessParam; -} - -/** - * Static function to start the parameter updating task - */ -int AxisCameraParams::s_ParamTaskFunction(AxisCameraParams* thisPtr) -{ - return thisPtr->ParamTaskFunction(); -} - -/** - * Main loop of the parameter task. - * This loop runs continuously checking parameters from the camera for - * posted changes and updating them if necessary. - */ -// TODO: need to synchronize the actual setting of parameters (the assignment statement) -int AxisCameraParams::ParamTaskFunction() -{ - static bool firstTime = true; - - while (true) - { - takeSemaphore(m_socketPossessionSem, SEMAPHORE_WAIT_FOREVER); - if (firstTime) - { - while (ReadCamParams() == 0); - firstTime = false; - } - bool restartRequired = false; - - ParameterVector_t::iterator it = m_parameters.begin(); - ParameterVector_t::iterator end = m_parameters.end(); - for(; it != end; it++) - { - bool changed = false; - char param[150]; - restartRequired |= (*it)->CheckChanged(changed, param); - if (changed) - { - UpdateCamParam(param); - } - } - if (restartRequired) - { - RestartCameraTask(); - } - giveSemaphore(m_socketPossessionSem); - } - return 0; -} - -/** - * Write the brightness value to the camera. - * @param brightness valid values 0 .. 100 - */ -void AxisCameraParams::WriteBrightness(int brightness) -{ - m_brightnessParam->SetValue(brightness); - giveSemaphore(m_paramChangedSem); -} - -/** - * Get the brightness value. - * @return Brightness value from the camera. - */ -int AxisCameraParams::GetBrightness() -{ - return m_brightnessParam->GetValue(); -} - -/** - * Set the white balance value. - * @param whiteBalance Valid values from the WhiteBalance_t enum. - */ -void AxisCameraParams::WriteWhiteBalance(WhiteBalance_t whiteBalance) -{ - m_whiteBalanceParam->SetValue(whiteBalance); - giveSemaphore(m_paramChangedSem); -} - -/** - * Retrieve the current white balance parameter. - * @return The white balance value. - */ -AxisCameraParams::WhiteBalance_t AxisCameraParams::GetWhiteBalance() -{ - return (WhiteBalance_t) m_whiteBalanceParam->GetValue(); -} - -/** - * Write the color level to the camera. - * @param colorLevel valid values are 0 .. 100 - */ -void AxisCameraParams::WriteColorLevel(int colorLevel) -{ - m_colorLevelParam->SetValue(colorLevel); - giveSemaphore(m_paramChangedSem); -} - -/** - * Retrieve the color level from the camera. - * @Returns the camera color level. - */ -int AxisCameraParams::GetColorLevel() -{ - return m_colorLevelParam->GetValue(); -} - -/** - * Write the exposure control value to the camera. - * @param exposureControl A mode to write in the Exposure_t enum. - */ -void AxisCameraParams::WriteExposureControl(Exposure_t exposureControl) -{ - m_exposureControlParam->SetValue(exposureControl); - giveSemaphore(m_paramChangedSem); -} - -/** - * Get the exposure value from the camera. - * @returns the exposure value from the camera. - */ -AxisCameraParams::Exposure_t AxisCameraParams::GetExposureControl() -{ - return (Exposure_t) m_exposureControlParam->GetValue(); -} - -/** - * Write resolution value to camera. - * @param resolution The camera resolution value to write to the camera. Use the Resolution_t enum. - */ -void AxisCameraParams::WriteResolution(Resolution_t resolution) -{ - m_resolutionParam->SetValue(resolution); - giveSemaphore(m_paramChangedSem); -} - -/** - * Get the resolution value from the camera. - * @returns resultion value for the camera. - */ -AxisCameraParams::Resolution_t AxisCameraParams::GetResolution() -{ - return (Resolution_t) m_resolutionParam->GetValue(); -} - -/** - * Write the exposre priority value to the camera. - * @param exposurePriority Valid values are 0, 50, 100. - * 0 = Prioritize image quality - * 50 = None - * 100 = Prioritize frame rate - */ -void AxisCameraParams::WriteExposurePriority(int exposurePriority) -{ - m_exposurePriorityParam->SetValue(exposurePriority); - giveSemaphore(m_paramChangedSem); -} - -int AxisCameraParams::GetExposurePriority() -{ - return m_exposurePriorityParam->GetValue(); -} - -/** - * Write the rotation value to the camera. - * If you mount your camera upside down, use this to adjust the image for you. - * @param rotation The image from the Rotation_t enum in AxisCameraParams (kRotation_0 or kRotation_180) - */ -void AxisCameraParams::WriteRotation(Rotation_t rotation) -{ - m_rotationParam->SetValue(rotation); - giveSemaphore(m_paramChangedSem); -} - -/** - * Get the rotation value from the camera. - * @return The rotation value from the camera (Rotation_t). - */ -AxisCameraParams::Rotation_t AxisCameraParams::GetRotation() -{ - return (Rotation_t) m_rotationParam->GetValue(); -} - -/** - * Write the compression value to the camera. - * @param compression Values between 0 and 100. - */ - -void AxisCameraParams::WriteCompression(int compression) -{ - m_compressionParam->SetValue(compression); - giveSemaphore(m_paramChangedSem); -} - -/** - * Get the compression value from the camera. - * @return The cached compression value from the camera. - */ -int AxisCameraParams::GetCompression() -{ - return m_compressionParam->GetValue(); -} - -/** - * Write the maximum frames per second that the camera should send - * Write 0 to send as many as possible. - * @param maxFPS The number of frames the camera should send in a second, exposure permitting. - */ -void AxisCameraParams::WriteMaxFPS(int maxFPS) -{ - m_maxFPSParam->SetValue(maxFPS); - giveSemaphore(m_paramChangedSem); -} - -/** - * Get the max number of frames per second that the camera will send - * @return Maximum frames per second. - */ -int AxisCameraParams::GetMaxFPS() -{ - return m_maxFPSParam->GetValue(); -} - -/** - * Update a camera parameter. - * Write a camera parameter to the camera when it has bene changed. - * @param param the string to insert into the http request. - * @returns 0 if it failed, otherwise nonzero. - */ -int AxisCameraParams::UpdateCamParam(const char* param) -{ - const char *requestString = - "GET /axis-cgi/admin/param.cgi?action=update&%s HTTP/1.1\n\ -User-Agent: HTTPStreamClient\n\ -Connection: Keep-Alive\n\ -Cache-Control: no-cache\n\ -Authorization: Basic RlJDOkZSQw==\n\n"; - char completedRequest[1024]; - sprintf(completedRequest, requestString, param); - // Send request - int camSocket = CreateCameraSocket(completedRequest); - if (camSocket == ERROR) - { - printf("UpdateCamParam failed: %s\n", param); - return 0; - } - close(camSocket); - return 1; -} - -/** - * Read the full param list from camera, use regular expressions to find the bits we care about - * assign values to member variables. - */ -int AxisCameraParams::ReadCamParams() -{ - const char * requestString = - "GET /axis-cgi/admin/param.cgi?action=list HTTP/1.1\n\ -User-Agent: HTTPStreamClient\n\ -Connection: Keep-Alive\n\ -Cache-Control: no-cache\n\ -Authorization: Basic RlJDOkZSQw==\n\n"; - - int camSocket = CreateCameraSocket(requestString); - if (camSocket == ERROR) - { - return 0; - } - // Allocate on the heap since it is very large and only needed once - char *readBuffer = new char[27000]; - int totalRead = 0; - while (1) - { - wpi_assert(totalRead < 26000); - int bytesRead = recv(camSocket, &readBuffer[totalRead], 1000, 0); - if (bytesRead == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to read image header"); - close(camSocket); - return 0; - } - else if (bytesRead <= 0) - { - break; - } - totalRead += bytesRead; - } - readBuffer[totalRead] = '\0'; - - ParameterVector_t::iterator it = m_parameters.begin(); - ParameterVector_t::iterator end = m_parameters.end(); - for(; it != end; it++) - { - (*it)->GetParamFromString(readBuffer, totalRead); - } - close(camSocket); - delete [] readBuffer; - return 1; -} - -/* - * Create a socket connected to camera - * Used to create a connection to the camera by both AxisCameraParams and AxisCamera. - * @param requestString The initial request string to send upon successful connection. - * @return ERROR if failed, socket handle if successful. - */ -int AxisCameraParams::CreateCameraSocket(const char *requestString) -{ - int sockAddrSize; - struct sockaddr_in serverAddr; - int camSocket; - /* create socket */ - if ((camSocket = socket(AF_INET, SOCK_STREAM, 0)) == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to create the camera socket"); - return ERROR; - } - - sockAddrSize = sizeof(struct sockaddr_in); - bzero((char *) &serverAddr, sockAddrSize); - serverAddr.sin_family = AF_INET; - serverAddr.sin_len = (u_char) sockAddrSize; - serverAddr.sin_port = htons(80); - - serverAddr.sin_addr.s_addr = m_ipAddress; - - /* connect to server */ - struct timeval connectTimeout; - connectTimeout.tv_sec = 5; - connectTimeout.tv_usec = 0; - if (connectWithTimeout(camSocket, (struct sockaddr *) &serverAddr, sockAddrSize, &connectTimeout) == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to connect to the camera"); - close(camSocket); - return ERROR; - } - int sent = send(camSocket, requestString, strlen(requestString), 0); - if (sent == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to send a request to the camera"); - close(camSocket); - return ERROR; - } - return camSocket; -} diff --git a/wpilibc/src/main/native/Vision/BinaryImage.cpp b/wpilibc/src/main/native/Vision/BinaryImage.cpp deleted file mode 100644 index f4cd1bbae0..0000000000 --- a/wpilibc/src/main/native/Vision/BinaryImage.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "BinaryImage.h" -#include "WPIErrors.h" -#include - -/** Private NI function needed to write to the VxWorks target */ -IMAQ_FUNC int Priv_SetWriteFileAllowed(uint32_t enable); - -BinaryImage::BinaryImage() : MonoImage() -{ -} - -BinaryImage::~BinaryImage() -{ -} - -/** - * Get then number of particles for the image. - * @returns the number of particles found for the image. - */ -int BinaryImage::GetNumberParticles() -{ - int numParticles = 0; - int success = imaqCountParticles(m_imaqImage, 1, &numParticles); - wpi_setImaqErrorWithContext(success, "Error counting particles"); - return numParticles; -} - -/** - * Get a single particle analysis report. - * Get one (of possibly many) particle analysis reports for an image. - * @param particleNumber Which particle analysis report to return. - * @returns the selected particle analysis report - */ -ParticleAnalysisReport BinaryImage::GetParticleAnalysisReport(int particleNumber) -{ - ParticleAnalysisReport par; - GetParticleAnalysisReport(particleNumber, &par); - return par; -} - -/** - * Get a single particle analysis report. - * Get one (of possibly many) particle analysis reports for an image. - * This version could be more efficient when copying many reports. - * @param particleNumber Which particle analysis report to return. - * @param par the selected particle analysis report - */ -void BinaryImage::GetParticleAnalysisReport(int particleNumber, ParticleAnalysisReport *par) -{ - int success; - int numParticles = 0; - - success = imaqGetImageSize(m_imaqImage, &par->imageWidth, &par->imageHeight); - wpi_setImaqErrorWithContext(success, "Error getting image size"); - if (StatusIsFatal()) - return; - - success = imaqCountParticles(m_imaqImage, 1, &numParticles); - wpi_setImaqErrorWithContext(success, "Error counting particles"); - if (StatusIsFatal()) - return; - - if (particleNumber >= numParticles) - { - wpi_setWPIErrorWithContext(ParameterOutOfRange, "particleNumber"); - return; - } - - par->particleIndex = particleNumber; - // Don't bother measuring the rest of the particle if one fails - bool good = ParticleMeasurement(particleNumber, IMAQ_MT_CENTER_OF_MASS_X, &par->center_mass_x); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_CENTER_OF_MASS_Y, &par->center_mass_y); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_AREA, &par->particleArea); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_TOP, &par->boundingRect.top); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_LEFT, &par->boundingRect.left); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_HEIGHT, &par->boundingRect.height); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_BOUNDING_RECT_WIDTH, &par->boundingRect.width); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_AREA_BY_IMAGE_AREA, &par->particleToImagePercent); - good = good && ParticleMeasurement(particleNumber, IMAQ_MT_AREA_BY_PARTICLE_AND_HOLES_AREA, &par->particleQuality); - - if (good) - { - /* normalized position (-1 to 1) */ - par->center_mass_x_normalized = NormalizeFromRange(par->center_mass_x, par->imageWidth); - par->center_mass_y_normalized = NormalizeFromRange(par->center_mass_y, par->imageHeight); - } -} - - -/** - * Get an ordered vector of particles for the image. - * Create a vector of particle analysis reports sorted by size for an image. - * The vector contains the actual report structures. - * @returns a pointer to the vector of particle analysis reports. The caller must delete the - * vector when finished using it. - */ -vector* BinaryImage::GetOrderedParticleAnalysisReports() -{ - vector* particles = new vector; - int particleCount = GetNumberParticles(); - for(int particleIndex = 0; particleIndex < particleCount; particleIndex++) - { - particles->push_back(GetParticleAnalysisReport(particleIndex)); - } - // TODO: This is pretty inefficient since each compare in the sort copies - // both reports being compared... do it manually instead... while we're - // at it, we should provide a version that allows a preallocated buffer of - // ParticleAnalysisReport structures - sort(particles->begin(), particles->end(), CompareParticleSizes); - return particles; -} - -/** - * Write a binary image to flash. - * Writes the binary image to flash on the cRIO for later inspection. - * @param fileName the name of the image file written to the flash. - */ -void BinaryImage::Write(const char *fileName) -{ - RGBValue colorTable[256]; - Priv_SetWriteFileAllowed(1); - memset(colorTable, 0, sizeof(colorTable)); - colorTable[0].R = 0; - colorTable[1].R = 255; - colorTable[0].G = colorTable[1].G = 0; - colorTable[0].B = colorTable[1].B = 0; - colorTable[0].alpha = colorTable[1].alpha = 0; - imaqWriteFile(m_imaqImage, fileName, colorTable); -} - -/** - * Measure a single parameter for an image. - * Get the measurement for a single parameter about an image by calling the imaqMeasureParticle - * function for the selected parameter. - * @param particleNumber which particle in the set of particles - * @param whatToMeasure the imaq MeasurementType (what to measure) - * @param result the value of the measurement - * @returns false on failure, true on success - */ -bool BinaryImage::ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, int *result) -{ - double resultDouble; - bool success = ParticleMeasurement(particleNumber, whatToMeasure, &resultDouble); - *result = (int)resultDouble; - return success; -} - -/** - * Measure a single parameter for an image. - * Get the measurement for a single parameter about an image by calling the imaqMeasureParticle - * function for the selected parameter. - * @param particleNumber which particle in the set of particles - * @param whatToMeasure the imaq MeasurementType (what to measure) - * @param result the value of the measurement - * @returns true on failure, false on success - */ -bool BinaryImage::ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, double *result) -{ - int success; - success = imaqMeasureParticle(m_imaqImage, particleNumber, 0, whatToMeasure, result); - wpi_setImaqErrorWithContext(success, "Error measuring particle"); - return !StatusIsFatal(); -} - -//Normalizes to [-1,1] -double BinaryImage::NormalizeFromRange(double position, int range) -{ - return (position * 2.0 / (double)range) - 1.0; -} - -/** - * The compare helper function for sort. - * This function compares two particle analysis reports as a helper for the sort function. - * @param particle1 The first particle to compare - * @param particle2 the second particle to compare - * @returns true if particle1 is greater than particle2 - */ -bool BinaryImage::CompareParticleSizes(ParticleAnalysisReport particle1, ParticleAnalysisReport particle2) -{ - //we want descending sort order - return particle1.particleToImagePercent > particle2.particleToImagePercent; -} - -BinaryImage *BinaryImage::RemoveSmallObjects(bool connectivity8, int erosions) -{ - BinaryImage *result = new BinaryImage(); - int success = imaqSizeFilter(result->GetImaqImage(), m_imaqImage, connectivity8, erosions, IMAQ_KEEP_LARGE, NULL); - wpi_setImaqErrorWithContext(success, "Error in RemoveSmallObjects"); - return result; -} - -BinaryImage *BinaryImage::RemoveLargeObjects(bool connectivity8, int erosions) -{ - BinaryImage *result = new BinaryImage(); - int success = imaqSizeFilter(result->GetImaqImage(), m_imaqImage, connectivity8, erosions, IMAQ_KEEP_SMALL, NULL); - wpi_setImaqErrorWithContext(success, "Error in RemoveLargeObjects"); - return result; -} - -BinaryImage *BinaryImage::ConvexHull(bool connectivity8) -{ - BinaryImage *result = new BinaryImage(); - int success = imaqConvexHull(result->GetImaqImage(), m_imaqImage, connectivity8); - wpi_setImaqErrorWithContext(success, "Error in convex hull operation"); - return result; -} - -BinaryImage *BinaryImage::ParticleFilter(ParticleFilterCriteria2 *criteria, int criteriaCount) -{ - BinaryImage *result = new BinaryImage(); - int numParticles; - ParticleFilterOptions2 filterOptions = {0, 0, 0, 1}; - int success = imaqParticleFilter4(result->GetImaqImage(), m_imaqImage, criteria, criteriaCount, &filterOptions, NULL, &numParticles); - wpi_setImaqErrorWithContext(success, "Error in particle filter operation"); - return result; -} - diff --git a/wpilibc/src/main/native/Vision/ColorImage.cpp b/wpilibc/src/main/native/Vision/ColorImage.cpp deleted file mode 100644 index 24c44f493b..0000000000 --- a/wpilibc/src/main/native/Vision/ColorImage.cpp +++ /dev/null @@ -1,465 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "ColorImage.h" - -#include "WPIErrors.h" - -ColorImage::ColorImage(ImageType type) : ImageBase(type) -{ -} - -ColorImage::~ColorImage() -{ -} - -/** - * Perform a threshold operation on a ColorImage. - * Perform a threshold operation on a ColorImage using the ColorMode supplied - * as a parameter. - * @param colorMode The type of colorspace this operation should be performed in - * @returns a pointer to a binary image - */ -BinaryImage *ColorImage::ComputeThreshold(ColorMode colorMode, - int low1, int high1, - int low2, int high2, - int low3, int high3) -{ - BinaryImage *result = new BinaryImage(); - Range range1 = {low1, high1}, - range2 = {low2, high2}, - range3 = {low3, high3}; - - int success = imaqColorThreshold(result->GetImaqImage(), m_imaqImage, 1, colorMode, &range1, &range2, &range3); - wpi_setImaqErrorWithContext(success, "ImaqThreshold error"); - return result; -} - -/** - * Perform a threshold in RGB space. - * @param redLow Red low value - * @param redHigh Red high value - * @param greenLow Green low value - * @param greenHigh Green high value - * @param blueLow Blue low value - * @param blueHigh Blue high value - * @returns A pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdRGB(int redLow, int redHigh, int greenLow, int greenHigh, int blueLow, int blueHigh) -{ - return ComputeThreshold(IMAQ_RGB, redLow, redHigh, greenLow, greenHigh, blueLow, blueHigh); -} - -/** - * Perform a threshold in RGB space. - * @param threshold a reference to the Threshold object to use. - * @returns A pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdRGB(Threshold &t) -{ - return ComputeThreshold(IMAQ_RGB, t.plane1Low, t.plane1High, - t.plane2Low, t.plane2High, - t.plane3Low, t.plane3High); -} - -/** - * Perform a threshold in HSL space. - * @param hueLow Low value for hue - * @param hueHigh High value for hue - * @param saturationLow Low value for saturation - * @param saturationHigh High value for saturation - * @param luminenceLow Low value for luminence - * @param luminenceHigh High value for luminence - * @returns a pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdHSL(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int luminenceLow, int luminenceHigh) -{ - return ComputeThreshold(IMAQ_HSL, hueLow, hueHigh, saturationLow, saturationHigh, luminenceLow, luminenceHigh); -} - -/** - * Perform a threshold in HSL space. - * @param threshold a reference to the Threshold object to use. - * @returns A pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdHSL(Threshold &t) -{ - return ComputeThreshold(IMAQ_HSL, t.plane1Low, t.plane1High, - t.plane2Low, t.plane2High, - t.plane3Low, t.plane3High); -} - -/** - * Perform a threshold in HSV space. - * @param hueLow Low value for hue - * @param hueHigh High value for hue - * @param saturationLow Low value for saturation - * @param saturationHigh High value for saturation - * @param valueLow Low value - * @param valueHigh High value - * @returns a pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdHSV(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int valueLow, int valueHigh) -{ - return ComputeThreshold(IMAQ_HSV, hueLow, hueHigh, saturationLow, saturationHigh, valueLow, valueHigh); -} - -/** - * Perform a threshold in HSV space. - * @param threshold a reference to the Threshold object to use. - * @returns A pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdHSV(Threshold &t) -{ - return ComputeThreshold(IMAQ_HSV, t.plane1Low, t.plane1High, - t.plane2Low, t.plane2High, - t.plane3Low, t.plane3High); -} - -/** - * Perform a threshold in HSI space. - * @param hueLow Low value for hue - * @param hueHigh High value for hue - * @param saturationLow Low value for saturation - * @param saturationHigh High value for saturation - * @param valueLow Low intensity - * @param valueHigh High intensity - * @returns a pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdHSI(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int intensityLow, int intensityHigh) -{ - return ComputeThreshold(IMAQ_HSI, hueLow, hueHigh, saturationLow, saturationHigh, intensityLow, intensityHigh); -} - -/** - * Perform a threshold in HSI space. - * @param threshold a reference to the Threshold object to use. - * @returns A pointer to a BinaryImage that represents the result of the threshold operation. - */ -BinaryImage *ColorImage::ThresholdHSI(Threshold &t) -{ - return ComputeThreshold(IMAQ_HSI, t.plane1Low, t.plane1High, - t.plane2Low, t.plane2High, - t.plane3Low, t.plane3High); -} - -/** - * Extract a color plane from the image - * @param mode The ColorMode to use for the plane extraction - * @param planeNumber Which plane is to be extracted - * @returns A pointer to a MonoImage that represents the extracted plane. - */ -MonoImage *ColorImage::ExtractColorPlane(ColorMode mode, int planeNumber) -{ - MonoImage *result = new MonoImage(); - if (m_imaqImage == NULL) - wpi_setWPIError(NullParameter); - int success = imaqExtractColorPlanes(m_imaqImage, - mode, - (planeNumber == 1) ? result->GetImaqImage() : NULL, - (planeNumber == 2) ? result->GetImaqImage() : NULL, - (planeNumber == 3) ? result->GetImaqImage() : NULL); - wpi_setImaqErrorWithContext(success, "Imaq ExtractColorPlanes failed"); - return result; -} - -/* - * Extract the first color plane for an image. - * @param mode The color mode in which to operate - * @returns a pointer to a MonoImage that is the extracted plane. - */ -MonoImage *ColorImage::ExtractFirstColorPlane(ColorMode mode) -{ - return ExtractColorPlane(mode, 1); -} - -/* - * Extract the second color plane for an image. - * @param mode The color mode in which to operate - * @returns a pointer to a MonoImage that is the extracted plane. - */ -MonoImage *ColorImage::ExtractSecondColorPlane(ColorMode mode) -{ - return ExtractColorPlane(mode, 2); -} - -/* - * Extract the third color plane for an image. - * @param mode The color mode in which to operate - * @returns a pointer to a MonoImage that is the extracted plane. - */ -MonoImage *ColorImage::ExtractThirdColorPlane(ColorMode mode) -{ - return ExtractColorPlane(mode, 3); -} - -/* - * Extract the red plane from an RGB image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetRedPlane() -{ - return ExtractFirstColorPlane(IMAQ_RGB); -} - -/* - * Extract the green plane from an RGB image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetGreenPlane() -{ - return ExtractSecondColorPlane(IMAQ_RGB); -} - -/* - * Extract the blue plane from an RGB image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetBluePlane() -{ - return ExtractThirdColorPlane(IMAQ_RGB); -} - -/* - * Extract the Hue plane from an HSL image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetHSLHuePlane() -{ - return ExtractFirstColorPlane(IMAQ_HSL); -} - -/* - * Extract the Hue plane from an HSV image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetHSVHuePlane() -{ - return ExtractFirstColorPlane(IMAQ_HSV); -} - -/* - * Extract the Hue plane from an HSI image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetHSIHuePlane() -{ - return ExtractFirstColorPlane(IMAQ_HSI); -} - -/* - * Extract the Luminance plane from an HSL image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetLuminancePlane() -{ - return ExtractThirdColorPlane(IMAQ_HSL); -} - -/* - * Extract the Value plane from an HSV image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetValuePlane() -{ - return ExtractThirdColorPlane(IMAQ_HSV); -} - -/* - * Extract the Intensity plane from an HSI image. - * @returns a pointer to a MonoImage that is the extraced plane. - */ -MonoImage *ColorImage::GetIntensityPlane() -{ - return ExtractThirdColorPlane(IMAQ_HSI); -} - -/** - * Replace a plane in the ColorImage with a MonoImage - * Replaces a single plane in the image with a MonoImage - * @param mode The ColorMode in which to operate - * @param plane The pointer to the replacement plane as a MonoImage - * @param planeNumber The plane number (1, 2, 3) to replace - */ -void ColorImage::ReplacePlane(ColorMode mode, MonoImage *plane, int planeNumber) { - int success = imaqReplaceColorPlanes(m_imaqImage, - (const Image*) m_imaqImage, - mode, - (planeNumber == 1) ? plane->GetImaqImage() : NULL, - (planeNumber == 2) ? plane->GetImaqImage() : NULL, - (planeNumber == 3) ? plane->GetImaqImage() : NULL); - wpi_setImaqErrorWithContext(success, "Imaq ReplaceColorPlanes failed"); -} - -/** - * Replace the first color plane with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceFirstColorPlane(ColorMode mode, MonoImage *plane) -{ - ReplacePlane(mode, plane, 1); -} - -/** - * Replace the second color plane with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceSecondColorPlane(ColorMode mode, MonoImage *plane) -{ - ReplacePlane(mode, plane, 2); -} - -/** - * Replace the third color plane with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceThirdColorPlane(ColorMode mode, MonoImage *plane) -{ - ReplacePlane(mode, plane, 3); -} - -/** - * Replace the red color plane with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceRedPlane(MonoImage *plane) -{ - ReplaceFirstColorPlane(IMAQ_RGB, plane); -} - -/** - * Replace the green color plane with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceGreenPlane(MonoImage *plane) -{ - ReplaceSecondColorPlane(IMAQ_RGB, plane); -} - -/** - * Replace the blue color plane with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceBluePlane(MonoImage *plane) -{ - ReplaceThirdColorPlane(IMAQ_RGB, plane); -} - - -/** - * Replace the Hue color plane in a HSL image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceHSLHuePlane(MonoImage *plane) -{ - return ReplaceFirstColorPlane(IMAQ_HSL, plane); -} - -/** - * Replace the Hue color plane in a HSV image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceHSVHuePlane(MonoImage *plane) -{ - return ReplaceFirstColorPlane(IMAQ_HSV, plane); -} - -/** - * Replace the first Hue plane in a HSI image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceHSIHuePlane(MonoImage *plane) -{ - return ReplaceFirstColorPlane(IMAQ_HSI, plane); -} - -/** - * Replace the Saturation color plane in an HSL image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceHSLSaturationPlane(MonoImage *plane) -{ - return ReplaceSecondColorPlane(IMAQ_HSL, plane); -} - -/** - * Replace the Saturation color plane in a HSV image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceHSVSaturationPlane(MonoImage *plane) -{ - return ReplaceSecondColorPlane(IMAQ_HSV, plane); -} - -/** - * Replace the Saturation color plane in a HSI image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceHSISaturationPlane(MonoImage *plane) -{ - return ReplaceSecondColorPlane(IMAQ_HSI, plane); -} - -/** - * Replace the Luminance color plane in an HSL image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceLuminancePlane(MonoImage *plane) -{ - return ReplaceThirdColorPlane(IMAQ_HSL, plane); -} - -/** - * Replace the Value color plane in an HSV with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceValuePlane(MonoImage *plane) -{ - return ReplaceThirdColorPlane(IMAQ_HSV, plane); -} - -/** - * Replace the Intensity color plane in a HSI image with a MonoImage. - * @param mode The color mode in which to operate. - * @param plane A pointer to a MonoImage that will replace the specified color plane. - */ -void ColorImage::ReplaceIntensityPlane(MonoImage *plane) -{ - return ReplaceThirdColorPlane(IMAQ_HSI, plane); -} - -//TODO: frcColorEqualize(Image* dest, const Image* source, int colorEqualization) needs to be modified -//The colorEqualization parameter is discarded and is set to TRUE in the call to imaqColorEqualize. -void ColorImage::Equalize(bool allPlanes) -{ - // Note that this call uses NI-defined TRUE and FALSE - int success = imaqColorEqualize(m_imaqImage, (const Image*) m_imaqImage, (allPlanes) ? TRUE : FALSE); - wpi_setImaqErrorWithContext(success, "Imaq ColorEqualize error"); -} - -void ColorImage::ColorEqualize() -{ - Equalize(true); -} - -void ColorImage::LuminanceEqualize() -{ - Equalize(false); -} diff --git a/wpilibc/src/main/native/Vision/EnumCameraParameter.cpp b/wpilibc/src/main/native/Vision/EnumCameraParameter.cpp deleted file mode 100644 index 3801836fbb..0000000000 --- a/wpilibc/src/main/native/Vision/EnumCameraParameter.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "EnumCameraParameter.h" -#include -#include - -/** - * Constructor for an enumeration camera parameter. - * Enumeration camera parameters have lists of value choices and strings that go - * with them. There are also C++ enumerations to go along with them. - * @param setString The string for an HTTP request to set the value. - * @param getString The string for an HTTP request to get the value. - * @param choices An array of strings of the parameter choices set in the http strings. - * @param numChoices The number of choices in the enumeration set. - */ -EnumCameraParameter::EnumCameraParameter(const char *setString, const char *getString, bool requiresRestart, - const char *const*choices, int numChoices) - : IntCameraParameter(setString, getString, requiresRestart) -{ - m_enumValues = choices; - m_numChoices = numChoices; -} - -/* - * Check if an enumeration camera parameter has changed. - * Check if the parameter has changed and update the camera if it has. This is called - * from a loop in the parameter checker task. - * @returns true if the camera needs to restart - */ -bool EnumCameraParameter::CheckChanged(bool &changed, char *param) -{ - changed = m_changed; - if (m_changed) - { - m_changed = false; - sprintf(param, m_setString, m_enumValues[m_value]); - return m_requiresRestart; - } - return false; -} - -/** - * Extract the parameter value from a string. - * Extract the parameter value from the camera status message. - * @param string The string returned from the camera. - * @param length The length of the string from the camera. - */ -void EnumCameraParameter::GetParamFromString(const char *string, int stringLength) -{ - char resultString[50]; - if (SearchForParam(m_getString, string, stringLength, resultString) < 0) return; - for (int i = 0; i < m_numChoices; i++) - { - if (strcmp(resultString, m_enumValues[i]) == 0) - { - if (!m_changed) // don't change parameter that's been set in code - { - m_value = i; - } - } - } -} - diff --git a/wpilibc/src/main/native/Vision/HSLImage.cpp b/wpilibc/src/main/native/Vision/HSLImage.cpp deleted file mode 100644 index fec283ac4f..0000000000 --- a/wpilibc/src/main/native/Vision/HSLImage.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "HSLImage.h" - -/** - * Create a new image that uses the Hue, Saturation, and Luminance planes. - */ -HSLImage::HSLImage() : ColorImage(IMAQ_IMAGE_HSL) -{ -} - -/** - * Create a new image by loading a file. - * @param fileName The path of the file to load. - */ -HSLImage::HSLImage(const char *fileName) : ColorImage(IMAQ_IMAGE_HSL) -{ - int success = imaqReadFile(m_imaqImage, fileName, NULL, NULL); - wpi_setImaqErrorWithContext(success, "Imaq ReadFile error"); -} - -HSLImage::~HSLImage() -{ -} diff --git a/wpilibc/src/main/native/Vision/ImageBase.cpp b/wpilibc/src/main/native/Vision/ImageBase.cpp deleted file mode 100644 index 769d2bcbe0..0000000000 --- a/wpilibc/src/main/native/Vision/ImageBase.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "ImageBase.h" -#include "nivision.h" - -/** Private NI function needed to write to the VxWorks target */ -IMAQ_FUNC int Priv_SetWriteFileAllowed(uint32_t enable); - -/** - * Create a new instance of an ImageBase. - * Imagebase is the base of all the other image classes. The constructor - * creates any type of image and stores the pointer to it in the class. - * @param type The type of image to create - */ -ImageBase::ImageBase(ImageType type) -{ - m_imaqImage = imaqCreateImage(type, DEFAULT_BORDER_SIZE); -} - -/** - * Frees memory associated with an ImageBase. - * Destructor frees the imaq image allocated with the class. - */ -ImageBase::~ImageBase() -{ - if(m_imaqImage) - imaqDispose(m_imaqImage); -} - -/** - * Writes an image to a file with the given filename. - * Write the image to a file in the flash on the cRIO. - * @param fileName The name of the file to write - */ -void ImageBase::Write(const char *fileName) -{ - Priv_SetWriteFileAllowed(1); - int success = imaqWriteFile(m_imaqImage, fileName, NULL); - wpi_setImaqErrorWithContext(success, "Imaq Image writeFile error"); -} - -/** - * Gets the height of an image. - * @return The height of the image in pixels. - */ -int ImageBase::GetHeight() -{ - int height; - imaqGetImageSize(m_imaqImage, NULL, &height); - return height; -} - -/** - * Gets the width of an image. - * @return The width of the image in pixels. - */ -int ImageBase::GetWidth() -{ - int width; - imaqGetImageSize(m_imaqImage, &width, NULL); - return width; -} - -/** - * Access the internal IMAQ Image data structure. - * - * @return A pointer to the internal IMAQ Image data structure. - */ -Image *ImageBase::GetImaqImage() -{ - return m_imaqImage; -} - diff --git a/wpilibc/src/main/native/Vision/IntCameraParameter.cpp b/wpilibc/src/main/native/Vision/IntCameraParameter.cpp deleted file mode 100644 index af7ff2cd23..0000000000 --- a/wpilibc/src/main/native/Vision/IntCameraParameter.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "IntCameraParameter.h" -#include "pcre.h" -#include -#include - -/** - * Constructor for an integer camera parameter. - * @param setString The string to set a value in the HTTP request - * @param getString The string to retrieve a value in the HTTP request - */ -IntCameraParameter::IntCameraParameter(const char *setString, const char *getString, bool requiresRestart) -{ - m_changed = false; - m_value = 0; - m_setString = setString; - m_getString = getString; - m_requiresRestart = requiresRestart; -} - -/** - * Get a value for a camera parameter. - * @returns The camera parameter cached valued. - */ -int IntCameraParameter::GetValue() -{ - return m_value; -} - -/** - * Set a value for a camera parameter. - * Mark the value for change. The value will be updated in the parameter - * change loop. - */ -void IntCameraParameter::SetValue(int value) -{ - m_value = value; - m_changed = true; -} - -/** - * Check if a parameter has changed and update. - * Check if a parameter has changed and send the update string if it - * has changed. This is called from the loop in the parameter task loop. - * @returns true if the camera needs to restart - */ -bool IntCameraParameter::CheckChanged(bool &changed, char *param) -{ - changed = m_changed; - if (m_changed) - { - sprintf(param, m_setString, m_value); - m_changed = false; - return m_requiresRestart; - } - return false; -} - -/** - * Get a parameter value from the string. - * Get a parameter value from the camera status string. If it has been changed - * been changed by the program, then don't update it. Program values have - * precedence over those written in the camera. - */ -void IntCameraParameter::GetParamFromString(const char *string, int stringLength) -{ - char resultString[150]; - if (SearchForParam(m_getString, string, stringLength, resultString) >= 0) - { - if (!m_changed) m_value = atoi(resultString); - } -} - -/** - * @param pattern: the regular expression - * @param searchString the text to search - * @param searchStringLen the length of searchString - * @param result buffer to put resulting text into, must be pre-allocated - */ -int IntCameraParameter::SearchForParam(const char *pattern, const char *searchString, int searchStringLen, char *result) -{ - int vectorLen = 10; - int resultVector[vectorLen]; - const char *error; - int erroffset; - pcre *compiledPattern = pcre_compile( - pattern, //"root.Image.I0.Appearance.Resolution=(.*)", - PCRE_CASELESS, - &error, // for error message - &erroffset, // for error offset - NULL); // use default character tables - int rc; - rc = pcre_exec(compiledPattern, - NULL, - searchString, - searchStringLen, - 0, - 0, - resultVector, //locations of submatches - vectorLen); //size of ovector - int length = resultVector[3] - resultVector[2]; - memcpy(result, &searchString[resultVector[2]], length); - result[length] = '\0'; - return rc; -} - diff --git a/wpilibc/src/main/native/Vision/MonoImage.cpp b/wpilibc/src/main/native/Vision/MonoImage.cpp deleted file mode 100644 index f1e0022ea1..0000000000 --- a/wpilibc/src/main/native/Vision/MonoImage.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "MonoImage.h" -#include "nivision.h" - -MonoImage::MonoImage() : ImageBase(IMAQ_IMAGE_U8) -{ -} - -MonoImage::~MonoImage() -{ -} - -/** - * Look for ellipses in an image. - * Given some input parameters, look for any number of ellipses in an image. - * @param ellipseDescriptor Ellipse descriptor - * @param curveOptions Curve options - * @param shapeDetectionOptions Shape detection options - * @param roi Region of Interest - * @returns a vector of EllipseMatch structures (0 length vector on no match) - */ -vector * MonoImage::DetectEllipses( - EllipseDescriptor *ellipseDescriptor, CurveOptions *curveOptions, - ShapeDetectionOptions *shapeDetectionOptions, ROI *roi) -{ - int numberOfMatches; - EllipseMatch *e = imaqDetectEllipses(m_imaqImage, ellipseDescriptor, - curveOptions, shapeDetectionOptions, roi, &numberOfMatches); - vector *ellipses = new vector; - if (e == NULL) - { - return ellipses; - } - for (int i = 0; i < numberOfMatches; i++) - { - ellipses->push_back(e[i]); - } - imaqDispose(e); - return ellipses; -} - -vector * MonoImage::DetectEllipses( - EllipseDescriptor *ellipseDescriptor) -{ - vector *ellipses = DetectEllipses(ellipseDescriptor, NULL, - NULL, NULL); - return ellipses; -} diff --git a/wpilibc/src/main/native/Vision/PCVideoServer.cpp b/wpilibc/src/main/native/Vision/PCVideoServer.cpp deleted file mode 100644 index 9437a7505f..0000000000 --- a/wpilibc/src/main/native/Vision/PCVideoServer.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "HAL/HAL.h" - -#include "PCVideoServer.h" - -#include -#include -#include -#include -#include -#include - -#include "NetworkCommunication/UsageReporting.h" -#include "Task.h" -#include "Timer.h" -#include "Vision/AxisCamera.h" -#include "WPIErrors.h" - -/** - * @brief Implements an object that automatically does a close on a - * camera socket on destruction. - */ -class ScopedSocket { -public: - ScopedSocket(int camSock) - : m_camSock(camSock) - { - } - - ~ScopedSocket() { - if (m_camSock != ERROR) { - close(m_camSock); - } - } - // Cast to int allows you to pass this to any function that - // takes the socket as an int. - operator int() const { - return m_camSock; - } - -private: - int m_camSock; -}; - -//============================================================================ -// PCVideoServer -//============================================================================ - -/** - * @brief Constructor. - */ -PCVideoServer::PCVideoServer() - : m_serverTask("PCVideoServer", (FUNCPTR)s_ServerTask) - , m_newImageSem (NULL) - , m_stopServer (false) -{ - AxisCamera &cam = AxisCamera::GetInstance(); - m_newImageSem = cam.GetNewImageSem(); - if (!cam.StatusIsFatal()) - { - StartServerTask(); - } - else - { - CloneError(&cam); - } -} - -/** - * @brief Destructor. - * Stop serving images and destroy this class. - */ -PCVideoServer::~PCVideoServer() -{ - // Stop the images to PC server. - Stop(); - // Clear the error so that you can use this object to make a connection to - // the VIDEO_TO_PC_PORT to stop the ImageToPCServer if it is waiting to - // accept connections from a PC. - ClearError(); - // Open a socket. - int camSock = socket(AF_INET, SOCK_STREAM, 0); - if (camSock == ERROR) - { - wpi_setErrnoError(); - return; - } - ScopedSocket scopedCamSock(camSock); - // If successful - if (!StatusIsFatal()) - { - // Create a connection to the localhost. - struct sockaddr_in selfAddr; - int sockAddrSize = sizeof(selfAddr); - bzero ((char *) &selfAddr, sockAddrSize); - selfAddr.sin_family = AF_INET; - selfAddr.sin_len = (u_char) sockAddrSize; - selfAddr.sin_port = htons (VIDEO_TO_PC_PORT); - - if (( (int)(selfAddr.sin_addr.s_addr = inet_addr (const_cast("localhost")) ) != ERROR) || - ( (int)(selfAddr.sin_addr.s_addr = hostGetByName (const_cast("localhost")) ) != ERROR)) - { - struct timeval connectTimeout; - connectTimeout.tv_sec = 1; - connectTimeout.tv_usec = 0; - connectWithTimeout(camSock, (struct sockaddr *) &selfAddr, sockAddrSize, &connectTimeout); - } - } -} - -/** - * Start the task that is responsible for sending images to the PC. - */ -int PCVideoServer::StartServerTask() -{ - if (StatusIsFatal()) - { - return -1; - } - int id = 0; - m_stopServer = false; - // Check for prior copy of running task - int oldId = taskNameToId((char*)m_serverTask.GetName()); - if(oldId != ERROR) - { - // TODO: Report error. You are in a bad state. - taskDelete(oldId); - } - - // spawn video server task - // this is done to ensure that the task is spawned with the - // floating point context save parameter. - bool started = m_serverTask.Start((int)this); - - id = m_serverTask.GetID(); - - if (!started) - { - wpi_setWPIError(TaskError); - return id; - } - delayTicks(1); - return id; -} - -/** - * @brief Start sending images to the PC. - */ -void PCVideoServer::Start() -{ - StartServerTask(); -} - -/** - * @brief Stop sending images to the PC. - */ -void PCVideoServer::Stop() -{ - m_stopServer = true; -} - -/** - * Static stub for kicking off the server task - */ -int PCVideoServer::s_ServerTask(PCVideoServer *thisPtr) -{ - return thisPtr->ServerTask(); -} - -/** - * @brief Initialize the socket and serve images to the PC. - * This is the task that serves images to the PC in a loop. This runs - * as a separate task. - */ -int PCVideoServer::ServerTask() -{ - /* Setup to PC sockets */ - struct sockaddr_in serverAddr; - int sockAddrSize = sizeof(serverAddr); - int pcSock = ERROR; - bzero ((char *) &serverAddr, sockAddrSize); - serverAddr.sin_len = (u_char) sockAddrSize; - serverAddr.sin_family = AF_INET; - serverAddr.sin_port = htons (VIDEO_TO_PC_PORT); - serverAddr.sin_addr.s_addr = htonl (INADDR_ANY); - - int success; - while (true) - { - taskSafe(); - // Create the socket. - if ((pcSock = socket (AF_INET, SOCK_STREAM, 0)) == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to create the PCVideoServer socket"); - continue; - } - // Set the TCP socket so that it can be reused if it is in the wait state. - int reuseAddr = 1; - setsockopt(pcSock, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast(&reuseAddr), sizeof(reuseAddr)); - // Bind socket to local address. - if (bind (pcSock, (struct sockaddr *) &serverAddr, sockAddrSize) == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to bind the PCVideoServer port"); - close (pcSock); - continue; - } - // Create queue for client connection requests. - if (listen (pcSock, 1) == ERROR) - { - wpi_setErrnoErrorWithContext("Failed to listen on the PCVideoServer port"); - close (pcSock); - continue; - } - - struct sockaddr_in clientAddr; - int clientAddrSize; - int newPCSock = accept (pcSock, reinterpret_cast(&clientAddr), &clientAddrSize); - if (newPCSock == ERROR) - { - close(pcSock); - continue; - } - //TODO: check camera error - - // Report usage when there is actually a connection. - nUsageReporting::report(nUsageReporting::kResourceType_PCVideoServer, 0); - - int numBytes = 0; - int imageDataSize = 0; - char* imageData = NULL; - - while(!m_stopServer) - { - success = takeSemaphore(m_newImageSem, 1000); - if (success == ERROR) - { - // If the semTake timed out, there are no new images from the camera. - continue; - } - success = AxisCamera::GetInstance().CopyJPEG(&imageData, numBytes, imageDataSize); - if (!success) - { - // No point in running too fast - - Wait(1.0); - // If camera is not initialzed you will get failure and - // the timestamp is invalid. Reset this value and try again. - continue; - } - - // Write header to PC - static const char header[4]={1,0,0,0}; - int headerSend = write(newPCSock, const_cast(header), 4); - - // Write image length to PC - int lengthSend = write(newPCSock, reinterpret_cast(&numBytes), 4); - - // Write image to PC - int sent = write (newPCSock, imageData, numBytes); - - // The PC probably closed connection. Get out of here - // and try listening again. - if (headerSend == ERROR || lengthSend == ERROR || sent == ERROR) - { - break; - } - } - // Clean up - delete [] imageData; - close (newPCSock); - newPCSock = ERROR; - close (pcSock); - pcSock = ERROR; - taskUnsafe(); - Wait(0.1); - } - return (OK); -} - diff --git a/wpilibc/src/main/native/Vision/RGBImage.cpp b/wpilibc/src/main/native/Vision/RGBImage.cpp deleted file mode 100644 index a5386a0929..0000000000 --- a/wpilibc/src/main/native/Vision/RGBImage.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "RGBImage.h" - -/** - * Create a new image that uses Red, Green, and Blue planes. - */ -RGBImage::RGBImage() : ColorImage(IMAQ_IMAGE_RGB) -{ -} - -/** - * Create a new image by loading a file. - * @param fileName The path of the file to load. - */ -RGBImage::RGBImage(const char *fileName) : ColorImage(IMAQ_IMAGE_RGB) -{ - int success = imaqReadFile(m_imaqImage, fileName, NULL, NULL); - wpi_setImaqErrorWithContext(success, "Imaq ReadFile error"); -} - -RGBImage::~RGBImage() -{ -} diff --git a/wpilibc/src/main/native/Vision/Threshold.cpp b/wpilibc/src/main/native/Vision/Threshold.cpp deleted file mode 100644 index 8d428e4a39..0000000000 --- a/wpilibc/src/main/native/Vision/Threshold.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2008. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ -/*----------------------------------------------------------------------------*/ - -#include "Threshold.h" - -Threshold::Threshold(int new_plane1Low, int new_plane1High, int new_plane2Low, - int new_plane2High, int new_plane3Low, int new_plane3High) -{ - plane1Low = new_plane1Low; - plane1High = new_plane1High; - plane2Low = new_plane2Low; - plane2High = new_plane2High; - plane3Low = new_plane3Low; - plane3High = new_plane3High; -} diff --git a/wpilibc/src/main/scripts/CopyWPILibToUpdateDirectory.cmd b/wpilibc/src/main/scripts/CopyWPILibToUpdateDirectory.cmd deleted file mode 100644 index 7e0f220391..0000000000 --- a/wpilibc/src/main/scripts/CopyWPILibToUpdateDirectory.cmd +++ /dev/null @@ -1,83 +0,0 @@ -rem cd C:\WindRiver\workspace\WorkbenchUpdate -cd ..\..\WorkbenchUpdate - - -mkdir vxworks-6.3\target\h\WPILib\Buttons -mkdir vxworks-6.3\target\h\WPILib\CAN -mkdir vxworks-6.3\target\h\WPILib\ChipObject -mkdir vxworks-6.3\target\h\WPILib\CInterfaces -mkdir vxworks-6.3\target\h\WPILib\Commands -mkdir vxworks-6.3\target\h\WPILib\NetworkCommunication -mkdir vxworks-6.3\target\h\WPILib\SmartDashboard -mkdir vxworks-6.3\target\h\WPILib\visa -mkdir vxworks-6.3\target\h\WPILib\Vision -mkdir vxworks-6.3\target\h\WPILib\Vision2009 - -mkdir vxworks-6.3\target\h\WPILib\LiveWindow -mkdir vxworks-6.3\target\h\WPILib\networktables -mkdir vxworks-6.3\target\h\WPILib\tables -mkdir vxworks-6.3\target\h\WPILib\networktables2 -mkdir vxworks-6.3\target\h\WPILib\networktables2\client -mkdir vxworks-6.3\target\h\WPILib\networktables2\connection -mkdir vxworks-6.3\target\h\WPILib\networktables2\server -mkdir vxworks-6.3\target\h\WPILib\networktables2\stream -mkdir vxworks-6.3\target\h\WPILib\networktables2\thread -mkdir vxworks-6.3\target\h\WPILib\networktables2\type -mkdir vxworks-6.3\target\h\WPILib\networktables2\util - - -del vxworks-6.3\target\h\WPIlib\*.h -del vxworks-6.3\target\h\WPIlib\Buttons\*.h -del vxworks-6.3\target\h\WPIlib\CAN\*.h -del vxworks-6.3\target\h\WPIlib\ChipObject\*.h -del vxworks-6.3\target\h\WPIlib\CInterfaces\*.h -del vxworks-6.3\target\h\WPIlib\Commands\*.h -del vxworks-6.3\target\h\WPIlib\NetworkCommunication\*.h -del vxworks-6.3\target\h\WPIlib\SmartDashboard\*.h -del vxworks-6.3\target\h\WPIlib\visa\*.h -del vxworks-6.3\target\h\WPIlib\Vision\*.h -del vxworks-6.3\target\h\WPIlib\Vision2009\*.h - -del vxworks-6.3\target\h\WPIlib\LiveWindow\*.h -del vxworks-6.3\target\h\WPIlib\networktables\*.h -del vxworks-6.3\target\h\WPIlib\tables\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\client\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\connection\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\server\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\stream\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\thread\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\type\*.h -del vxworks-6.3\target\h\WPIlib\networktables2\util\*.h - -del vxworks-6.3\target\lib\WPILib.a - - -copy C:\WindRiver\workspace\WPILib\*.h vxworks-6.3\target\h\WPILib -copy C:\WindRiver\workspace\WPILib\Buttons\*.h vxworks-6.3\target\h\WPILib\Buttons -copy C:\WindRiver\workspace\WPILib\CAN\*.h vxworks-6.3\target\h\WPILib\CAN -copy C:\WindRiver\workspace\WPILib\ChipObject\*.h vxworks-6.3\target\h\WPILib\ChipObject -copy C:\WindRiver\workspace\WPILib\CInterfaces\*.h vxworks-6.3\target\h\WPILib\CInterfaces -copy C:\WindRiver\workspace\WPILib\Commands\*.h vxworks-6.3\target\h\WPILib\Commands -copy C:\WindRiver\workspace\WPILib\NetworkCommunication\*.h vxworks-6.3\target\h\WPILib\NetworkCommunication -copy C:\WindRiver\workspace\WPILib\SmartDashboard\*.h vxworks-6.3\target\h\WPILib\SmartDashboard -copy C:\WindRiver\workspace\WPILib\visa\*.h vxworks-6.3\target\h\WPILib\visa -copy C:\WindRiver\workspace\WPILib\Vision\*.h vxworks-6.3\target\h\WPILib\Vision -copy C:\WindRiver\workspace\WPILib\Vision2009\*.h vxworks-6.3\target\h\WPILib\Vision2009 - -copy C:\WindRiver\workspace\WPILib\LiveWindow\*.h vxworks-6.3\target\h\WPILib\LiveWindow -copy C:\WindRiver\workspace\WPILib\networktables\*.h vxworks-6.3\target\h\WPILib\networktables -copy C:\WindRiver\workspace\WPILib\tables\*.h vxworks-6.3\target\h\WPILib\tables -copy C:\WindRiver\workspace\WPILib\networktables2\*.h vxworks-6.3\target\h\WPILib\networktables2 -copy C:\WindRiver\workspace\WPILib\networktables2\client\*.h vxworks-6.3\target\h\WPILib\networktables2\client -copy C:\WindRiver\workspace\WPILib\networktables2\connection\*.h vxworks-6.3\target\h\WPILib\networktables2\connection -copy C:\WindRiver\workspace\WPILib\networktables2\server\*.h vxworks-6.3\target\h\WPILib\networktables2\server -copy C:\WindRiver\workspace\WPILib\networktables2\stream\*.h vxworks-6.3\target\h\WPILib\networktables2\stream -copy C:\WindRiver\workspace\WPILib\networktables2\thread\*.h vxworks-6.3\target\h\WPILib\networktables2\thread -copy C:\WindRiver\workspace\WPILib\networktables2\type\*.h vxworks-6.3\target\h\WPILib\networktables2\type -copy C:\WindRiver\workspace\WPILib\networktables2\util\*.h vxworks-6.3\target\h\WPILib\networktables2\util - - -copy C:\WindRiver\workspace\WPILib\PPC603gnu\WPILib\Debug\WPILib.a vxworks-6.3\target\lib - -cd C:\WindRiver\workspace\WPILib\Scripts diff --git a/wpilibc/src/main/scripts/updateBuiltInLibrary.cmd b/wpilibc/src/main/scripts/updateBuiltInLibrary.cmd deleted file mode 100644 index ebbbcffc8c..0000000000 --- a/wpilibc/src/main/scripts/updateBuiltInLibrary.cmd +++ /dev/null @@ -1,61 +0,0 @@ -cd C:\WindRiver\vxworks-6.3\target - -rd /s /q h\WPILib - -mkdir h\WPILib -mkdir h\WPILib\Buttons -mkdir h\WPILib\CAN -mkdir h\WPILib\ChipObject -mkdir h\WPILib\CInterfaces -mkdir h\WPILib\Commands -mkdir h\WPILib\NetworkCommunication -mkdir h\WPILib\SmartDashboard -mkdir h\WPILib\visa -mkdir h\WPILib\Vision -mkdir h\WPILib\Vision2009 - -mkdir h\WPILib\LiveWindow -mkdir h\WPILib\networktables -mkdir h\WPILib\tables -mkdir h\WPILib\networktables2 -mkdir h\WPILib\networktables2\client -mkdir h\WPILib\networktables2\connection -mkdir h\WPILib\networktables2\server -mkdir h\WPILib\networktables2\stream -mkdir h\WPILib\networktables2\thread -mkdir h\WPILib\networktables2\type -mkdir h\WPILib\networktables2\util - - - -copy c:\WindRiver\workspace\WPILib\*.h h\WPILib -copy c:\WindRiver\workspace\WPILib\Buttons\*.h h\WPILib\Buttons -copy c:\WindRiver\workspace\WPILib\CAN\*.h h\WPILib\CAN -copy c:\WindRiver\workspace\WPILib\ChipObject\*.h h\WPILib\ChipObject -copy C:\WindRiver\workspace\WPILib\CInterfaces\*.h h\WPILib\CInterfaces -copy C:\WindRiver\workspace\WPILib\Commands\*.h h\WPILib\Commands -copy C:\WindRiver\workspace\WPILib\NetworkCommunication\*.h h\WPILib\NetworkCommunication -copy C:\WindRiver\workspace\WPILib\SmartDashboard\*.h h\WPILib\SmartDashboard -copy c:\WindRiver\workspace\WPILib\visa\*.h h\WPILib\visa -copy c:\WindRiver\workspace\WPILib\Vision\*.h h\WPILib\Vision -copy c:\WindRiver\workspace\WPILib\Vision2009\*.h h\WPILib\Vision2009 - -copy C:\WindRiver\workspace\WPILib\LiveWindow\*.h h\WPILib\LiveWindow -copy C:\WindRiver\workspace\WPILib\networktables\*.h h\WPILib\networktables -copy C:\WindRiver\workspace\WPILib\tables\*.h h\WPILib\tables -copy C:\WindRiver\workspace\WPILib\networktables2\*.h h\WPILib\networktables2 -copy C:\WindRiver\workspace\WPILib\networktables2\client\*.h h\WPILib\networktables2\client -copy C:\WindRiver\workspace\WPILib\networktables2\connection\*.h h\WPILib\networktables2\connection -copy C:\WindRiver\workspace\WPILib\networktables2\server\*.h h\WPILib\networktables2\server -copy C:\WindRiver\workspace\WPILib\networktables2\stream\*.h h\WPILib\networktables2\stream -copy C:\WindRiver\workspace\WPILib\networktables2\thread\*.h h\WPILib\networktables2\thread -copy C:\WindRiver\workspace\WPILib\networktables2\type\*.h h\WPILib\networktables2\type -copy C:\WindRiver\workspace\WPILib\networktables2\util\*.h h\WPILib\networktables2\util - - - -copy C:\WindRiver\workspace\WPILib\PPC603gnu\WPILib\Debug\WPILib.a lib - -rem copy c:\WindRiver\workspace\WorkbenchUpdate\frc_20*.zip c:\WindRiver\WPILib\cRIO_Images - -cd \WindRiver\workspace\WPILib\Scripts diff --git a/wpilibj/wpilibJava/.gitignore b/wpilibj/wpilibJava/.gitignore new file mode 100644 index 0000000000..535c157308 --- /dev/null +++ b/wpilibj/wpilibJava/.gitignore @@ -0,0 +1,2 @@ +*~ +target/ \ No newline at end of file diff --git a/wpilibj/wpilibJavaFinal/.gitignore b/wpilibj/wpilibJavaFinal/.gitignore new file mode 100644 index 0000000000..535c157308 --- /dev/null +++ b/wpilibj/wpilibJavaFinal/.gitignore @@ -0,0 +1,2 @@ +*~ +target/ \ No newline at end of file diff --git a/wpilibj/wpilibJavaFinal/pom.xml b/wpilibj/wpilibJavaFinal/pom.xml index b7f02a7a22..e44991c850 100644 --- a/wpilibj/wpilibJavaFinal/pom.xml +++ b/wpilibj/wpilibJavaFinal/pom.xml @@ -37,7 +37,7 @@ edu.wpi.first.wpilibj wpilibJavaJNI 0.1.0-SNAPSHOT - so + jar @@ -78,7 +78,7 @@ edu.wpi.first.wpilibj wpilibJavaJNI 0.1.0-SNAPSHOT - so + jar libwpilibJavaJNI.so ${project.build.directory}/classes/linux-arm diff --git a/wpilibj/wpilibJavaJNI/.gitignore b/wpilibj/wpilibJavaJNI/.gitignore new file mode 100644 index 0000000000..535c157308 --- /dev/null +++ b/wpilibj/wpilibJavaJNI/.gitignore @@ -0,0 +1,2 @@ +*~ +target/ \ No newline at end of file diff --git a/wpilibj/wpilibJavaJNI/CMakeLists.txt b/wpilibj/wpilibJavaJNI/CMakeLists.txt new file mode 100644 index 0000000000..444ec087ae --- /dev/null +++ b/wpilibj/wpilibJavaJNI/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 2.8) +project(WPILibJavaJNI) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat=2 -Wextra") +SET(CMAKE_SKIP_BUILD_RPATH TRUE) +file(GLOB_RECURSE NI_LIBS ../../ni-libraries/*.so) +get_filename_component(HAL_API_INCLUDES ../../hal/include REALPATH) +## depends on libFRC_NetComm, halAthena Hal incl, wpilibJava (jar) +# this file requires embeddedJDKHome to be set +# all the h files must be generated, in target/include + +file(GLOB_RECURSE SRC_FILES lib/*.cpp) +include_directories(target/include ${embeddedJDKHome}/include ${embeddedJDKHome}/include/linux ${HAL_API_INCLUDES}) +add_library(wpilibJavaJNI SHARED ${SRC_FILES}) +find_library(HAL_LIB libHALAthena.so target/lib) +add_library(HALAthena UNKNOWN IMPORTED) +set_property(TARGET HALAthena PROPERTY IMPORTED_LOCATION ${HAL_LIB}) +target_link_libraries(wpilibJavaJNI HALAthena ${NI_LIBS}) +INSTALL(TARGETS wpilibJavaJNI LIBRARY DESTINATION target) +# lib/ c m gcc_s ld-linux +# usr/lib stdc++ +# FRC_NetworkCommunication NiFpgaLv RoboRIO_FRC_ChipObject + diff --git a/wpilibj/wpilibJavaJNI/src/main/native/AnalogJNI.cpp b/wpilibj/wpilibJavaJNI/lib/AnalogJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/AnalogJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/AnalogJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/CANJNI.cpp b/wpilibj/wpilibJavaJNI/lib/CANJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/CANJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/CANJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/CounterJNI.cpp b/wpilibj/wpilibJavaJNI/lib/CounterJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/CounterJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/CounterJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/DIOJNI.cpp b/wpilibj/wpilibJavaJNI/lib/DIOJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/DIOJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/DIOJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/EncoderJNI.cpp b/wpilibj/wpilibJavaJNI/lib/EncoderJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/EncoderJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/EncoderJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/FRCNetworkCommunicationsLibrary.cpp b/wpilibj/wpilibJavaJNI/lib/FRCNetworkCommunicationsLibrary.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/FRCNetworkCommunicationsLibrary.cpp rename to wpilibj/wpilibJavaJNI/lib/FRCNetworkCommunicationsLibrary.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/HALUtil.cpp b/wpilibj/wpilibJavaJNI/lib/HALUtil.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/HALUtil.cpp rename to wpilibj/wpilibJavaJNI/lib/HALUtil.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/I2CJNI.cpp b/wpilibj/wpilibJavaJNI/lib/I2CJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/I2CJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/I2CJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/InterruptJNI.cpp b/wpilibj/wpilibJavaJNI/lib/InterruptJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/InterruptJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/InterruptJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/JNIWrapper.cpp b/wpilibj/wpilibJavaJNI/lib/JNIWrapper.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/JNIWrapper.cpp rename to wpilibj/wpilibJavaJNI/lib/JNIWrapper.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/PWMJNI.cpp b/wpilibj/wpilibJavaJNI/lib/PWMJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/PWMJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/PWMJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/RelayJNI.cpp b/wpilibj/wpilibJavaJNI/lib/RelayJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/RelayJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/RelayJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/src/main/native/SPIJNI.cpp b/wpilibj/wpilibJavaJNI/lib/SPIJNI.cpp similarity index 100% rename from wpilibj/wpilibJavaJNI/src/main/native/SPIJNI.cpp rename to wpilibj/wpilibJavaJNI/lib/SPIJNI.cpp diff --git a/wpilibj/wpilibJavaJNI/pom.xml b/wpilibj/wpilibJavaJNI/pom.xml index e69b093e62..94c829d612 100644 --- a/wpilibj/wpilibJavaJNI/pom.xml +++ b/wpilibj/wpilibJavaJNI/pom.xml @@ -1,143 +1,228 @@ - - 4.0.0 - wpilibJavaJNI - edu.wpi.first.wpilibj - 0.1.0-SNAPSHOT - so - - - edu.wpi.first.wpilib.templates.athena - shared-library - 0.1.0-SNAPSHOT - ../../maven-utilities/athena/shared-library/pom.xml - - - - - com.ni.first.libraries - libFRC_NetworkCommunication - so - 0.1.0-SNAPSHOT - - - edu.wpi.first.wpilib.hal - libHALAthena - 0.1.0-SNAPSHOT - a - - - edu.wpi.first.wpilib.hal - include - 0.1.0-SNAPSHOT - inczip - - - edu.wpi.first.wpilibj - wpilibJava - 0.1.0-SNAPSHOT - jar - - - - + + 4.0.0 + wpilibJavaJNI + edu.wpi.first.wpilibj + 0.1.0-SNAPSHOT + + + edu.wpi.first.wpilib.cmake + cpp-root + 1.0.0 + jar + + + edu.wpi.first.wpilibj + wpilibJava + 0.1.0-SNAPSHOT + jar + + + - + - - - ${user.home}${file.separator}jdk-linux-arm-vfp-sflt${file.separator}jdk1.7.0_45 - ${embeddedJDKHome}${file.separator}include - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 1.3.1 - - - enforce-property - - enforce - - - - - - ${embeddedJDKIncludePath} - - A copy of the 'Linux ARM v6/v7 Soft Float ABI' JDK must be extracted to '${embeddedJDKHome}' and + + ${user.home}${file.separator}jdk-linux-arm-vfp-sflt${file.separator}jdk1.7.0_45 + Unix Makefiles + ${embeddedJDKHome}${file.separator}include + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.3.1 + + + enforce-property + + enforce + + + + + + ${embeddedJDKIncludePath} + + A copy of the 'Linux ARM v6/v7 Soft Float ABI' JDK must be extracted to '${embeddedJDKHome}' and the folder '${embeddedJDKIncludePath}' must exist to build this module. You must use Java 7 u45. This JDK may be downloaded from http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u45-oth-JPR. To override this default location, specify a value for the 'embeddedJDKHome' property at the command line, like 'mvn -DembeddedJDKHome=path/to/jdk' - - - true - - - - - - org.codehaus.mojo - native-maven-plugin - 1.0-alpha-7 - true - - linux - ${embeddedJDKIncludePath} - - - src/main/native - - **/*.cpp - - - - - - - javah - generate-sources + + + true + + + + + + org.codehaus.mojo + native-maven-plugin + 1.0-alpha-7 + true - - - edu.wpi.first.wpilibj.can.CANJNI - edu.wpi.first.wpilibj.communication.FRCNetworkCommunicationsLibrary - edu.wpi.first.wpilibj.hal.HALUtil - edu.wpi.first.wpilibj.hal.JNIWrapper - edu.wpi.first.wpilibj.hal.AnalogJNI - edu.wpi.first.wpilibj.hal.CounterJNI - edu.wpi.first.wpilibj.hal.DIOJNI - edu.wpi.first.wpilibj.hal.EncoderJNI - edu.wpi.first.wpilibj.hal.I2CJNI - edu.wpi.first.wpilibj.hal.InterruptJNI - edu.wpi.first.wpilibj.hal.PWMJNI - edu.wpi.first.wpilibj.hal.RelayJNI - edu.wpi.first.wpilibj.hal.SPIJNI - - - - + + edu.wpi.first.wpilibj.can.CANJNI + edu.wpi.first.wpilibj.communication.FRCNetworkCommunicationsLibrary + edu.wpi.first.wpilibj.hal.HALUtil + edu.wpi.first.wpilibj.hal.JNIWrapper + edu.wpi.first.wpilibj.hal.AnalogJNI + edu.wpi.first.wpilibj.hal.CounterJNI + edu.wpi.first.wpilibj.hal.DIOJNI + edu.wpi.first.wpilibj.hal.EncoderJNI + edu.wpi.first.wpilibj.hal.I2CJNI + edu.wpi.first.wpilibj.hal.InterruptJNI + edu.wpi.first.wpilibj.hal.PWMJNI + edu.wpi.first.wpilibj.hal.RelayJNI + edu.wpi.first.wpilibj.hal.SPIJNI + + + + - linux - ${project.build.directory}/jni/include - default - true + linux + ${project.build.directory}/include + default + true + + + javah + + + + + + + com.googlecode.cmake-maven-project + cmake-maven-plugin + 2.8.11-b4 + + + cmake + generate-resources + + generate + + + + + + + + + 1 + + + + + cmake2 + generate-resources + + compile + + + install + + + + + . + ${project.build.directory}/cmake + ${project.build.directory}/cmake + ${cmakeGenerator} + release - - javah - - - - - - - + + + org.apache.maven.plugins + maven-dependency-plugin + 2.8 + + + + fetch-cpp-zip-dependencies + process-sources + + copy-dependencies + + + + + edu.wpi.first.wpilib.cmake + cpp-root + 1.0.0 + jar + cpp-root.jar + + + ${project.build.directory} + false + true + false + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.7 + + + + set-version-info + + run + + process-sources + + + + + + + + + + + + + + + + + true + + + + + unzip-cpp-includes + compile + + run + + + + + + + + + + +