PROJECT(ARIA)

SET(ARIA_SRCS
	ArAction.cpp
	ArActionAvoidFront.cpp
	ArActionAvoidSide.cpp
	ArActionBumpers.cpp
	ArActionColorFollow.cpp
	ArActionConstantVelocity.cpp
	ArActionDeceleratingLimiter.cpp
	ArActionDesired.cpp
	ArActionDriveDistance.cpp
	ArActionGoto.cpp
	ArActionGotoStraight.cpp
	ArActionGroup.cpp
	ArActionGroups.cpp
	ArActionInput.cpp
	ArActionIRs.cpp
	ArActionJoydrive.cpp
	ArActionKeydrive.cpp
	ArActionLimiterBackwards.cpp
	ArActionLimiterForwards.cpp
	ArActionLimiterTableSensor.cpp
	ArActionMovementParameters.cpp
	ArActionRatioInput.cpp
	ArActionRobotJoydrive.cpp
	ArActionStallRecover.cpp
	ArActionStop.cpp
	ArActionTriangleDriveTo.cpp
	ArActionTurn.cpp
	ArACTS.cpp
	ArAMPTU.cpp
	ArAnalogGyro.cpp
	ArArg.cpp
	ArArgumentBuilder.cpp
	ArArgumentParser.cpp
	ArASyncTask.cpp
	ArBasePacket.cpp
	ArBumpers.cpp
	ArCameraCommands.cpp
	ArCameraCollection.cpp
	ArConfig.cpp
	ArConfigArg.cpp
	ArConfigGroup.cpp
	ArDataLogger.cpp
	ArDeviceConnection.cpp
	ArDPPTU.cpp
	ArFileParser.cpp
	ArForbiddenRangeDevice.cpp
	ArFunctorASyncTask.cpp
	ArGPS.cpp
	ArGPSConnector.cpp
	ArGripper.cpp
	ArInterpolation.cpp
	ArIrrfDevice.cpp
	ArIRs.cpp
	ArJoyHandler.cpp
	ArKeyHandler.cpp
	ArLaserReflectorDevice.cpp
	ArLineFinder.cpp
	ArLog.cpp
	ArLogFileConnection.cpp
	ArMap.cpp
	ArMode.cpp
	ArModes.cpp
	ArModule.cpp
	ArModuleLoader.cpp
	ArNetServer.cpp
	ArNovatelGPS.cpp
	ArP2Arm.cpp
	ArPriorityResolver.cpp
	ArPTZ.cpp
	ArRangeBuffer.cpp
	ArRangeDevice.cpp
	ArRangeDeviceThreaded.cpp
	ArRatioInputKeydrive.cpp
	ArRatioInputJoydrive.cpp
	ArRatioInputRobotJoydrive.cpp
	ArRecurrentTask.cpp
	ArRobot.cpp
	ArRobotConfig.cpp
	ArRobotConfigPacketReader.cpp
	ArRobotJoyHandler.cpp
	ArRobotPacket.cpp
	ArRobotPacketReceiver.cpp
	ArRobotPacketSender.cpp
	ArRobotParams.cpp
	ArRobotTypes.cpp
	ArSick.cpp
	ArSickLogger.cpp
	ArSickPacket.cpp
	ArSickPacketReceiver.cpp
	ArSimpleConnector.cpp
	ArSocket.cpp
	ArSonarDevice.cpp
	ArSensorReading.cpp
	ArSonyPTZ.cpp
	ArSoundsQueue.cpp
	ArSoundPlayer.cpp
	ArStringInfoGroup.cpp
	ArSyncLoop.cpp
	ArSyncTask.cpp
	ArSystemStatus.cpp
	ArSonarAutoDisabler.cpp
	ArSpeech.cpp
	ArTCM2.cpp
	ArTcpConnection.cpp
	ArThread.cpp
	ArTransform.cpp
	ArVCC4.cpp
	Aria.cpp
	ariaUtil.cpp
)

IF (UNIX)
	SET(ARIA_SRCS ${ARIA_SRCS}
		ArSignalHandler_LIN.cpp
		ArSerialConnection_LIN.cpp
		ArThread_LIN.cpp
		ArVersalogicIO.cpp
		ArSocket_LIN.cpp
		ArMutex_LIN.cpp
		ArCondition_LIN.cpp
		ArJoyHandler_LIN.cpp
		)
ENDIF(UNIX)

IF(WIN32)
	SET(ARIA_SRCS ${ARIA_SRCS}
		ArSignalHandler_WIN.cpp
		ArSerialConnection_WIN.cpp
		ArThread_WIN.cpp
		ArSocket_WIN.cpp
		ArMutex_WIN.cpp
		ArCondition_WIN.cpp
		ArJoyHandler_WIN.cpp
		)
ENDIF(WIN32)

INCLUDE_DIRECTORIES("${MRPT_SOURCE_DIR}/include/mrpt/otherlibs")
INCLUDE_DIRECTORIES("${MRPT_SOURCE_DIR}/include/mrpt/otherlibs/aria")

IF(BUILD_SHARED_LIBS)
	# DYNAMIC LIBS
	SET(LIBTYPE SHARED)
ELSE(BUILD_SHARED_LIBS)
	# STATIC LIBS
	SET(LIBTYPE STATIC)
ENDIF(BUILD_SHARED_LIBS)

ADD_LIBRARY(mrpt-aria ${LIBTYPE} ${ARIA_SRCS})

SET_TARGET_PROPERTIES(mrpt-aria PROPERTIES PROJECT_LABEL lib-mrpt-aria)


# For dynamic link numbering convenions in Linux:
SET_TARGET_PROPERTIES(mrpt-aria PROPERTIES
	VERSION "${CMAKE_MRPT_VERSION_NUMBER_MAJOR}.${CMAKE_MRPT_VERSION_NUMBER_MINOR}.${CMAKE_MRPT_VERSION_NUMBER_PATCH}"
	SOVERSION ${CMAKE_MRPT_VERSION_NUMBER_MAJOR}.${CMAKE_MRPT_VERSION_NUMBER_MINOR}
	)


IF(CMAKE_COMPILER_IS_GNUCXX AND UNIX)
 	SET(CMAKE_CXX_FLAGS "-O3 -fPIC -D_REENTRANT -fno-exceptions -pthread")
ENDIF(CMAKE_COMPILER_IS_GNUCXX AND UNIX)


# The target file will be "ANNd" for DEBUG, "ANN" for the rest of configs:
# ----------------------------------------------------------------------------------
SET(the_trg mrpt-aria)

SET_TARGET_PROPERTIES(${the_trg} PROPERTIES 
	OUTPUT_NAME ${MRPT_LIB_PREFIX}${the_trg}
	ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/"
	RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/")


IF(MSVC)
	ADD_DEFINITIONS(-DWIN32)
	ADD_DEFINITIONS(-D_WINDOWS)

	IF(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
		ADD_DEFINITIONS(-DNDEBUG)
	ENDIF(NOT CMAKE_BUILD_TYPE MATCHES "Debug")

	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd 4267")	# Get rid of a type conversion warning in Aria lib for MSVC
ENDIF(MSVC)

IF(WIN32)
	IF(BUILD_SHARED_LIBS)
		ADD_DEFINITIONS(-D_USRDLL)
		ADD_DEFINITIONS(-DARIADLL_EXPORTS)
		TARGET_LINK_LIBRARIES(mrpt-aria winmm.lib wsock32.lib advapi32.lib)
	ELSE(BUILD_SHARED_LIBS)
		ADD_DEFINITIONS(-DARIA_STATIC)
	ENDIF(BUILD_SHARED_LIBS)
ENDIF(WIN32)

IF(UNIX)
	TARGET_LINK_LIBRARIES(mrpt-aria dl)
ENDIF(UNIX)


# make sure the library gets installed
INSTALL(TARGETS ${the_trg}
	RUNTIME DESTINATION ${libmrpt_aria_INSTALL_PREFIX}bin
	LIBRARY DESTINATION ${libmrpt_aria_INSTALL_PREFIX}lib
	ARCHIVE DESTINATION ${libmrpt_aria_INSTALL_PREFIX}lib)

