~csiro-asl/csiro-asl-ros-drivers/trunk

« back to all changes in this revision

Viewing changes to csiro_asl_drivers/novatelINS/CMakeLists.txt

  • Committer: Nick Hillier
  • Date: 2011-08-03 03:16:26 UTC
  • Revision ID: nick.hillier@csiro.au-20110803031626-3ekp14jxlbda9bzf
Initial add of ROS wrappers for novatel INS around the Orca driver.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
cmake_minimum_required(VERSION 2.4.6)
 
2
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
 
3
include(WriteConfigH.cmake)
 
4
 
 
5
# Set the build type.  Options are:
 
6
#  Coverage       : w/ debug symbols, w/o optimization, w/ code-coverage
 
7
#  Debug          : w/ debug symbols, w/o optimization
 
8
#  Release        : w/o debug symbols, w/ optimization
 
9
#  RelWithDebInfo : w/ debug symbols, w/ optimization
 
10
#  MinSizeRel     : w/o debug symbols, w/ optimization, stripped binaries
 
11
set(ROS_BUILD_TYPE Debug)
 
12
 
 
13
rosbuild_init()
 
14
 
 
15
#set the default path for built executables to the "bin" directory
 
16
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
 
17
#set the default path for built libraries to the "lib" directory
 
18
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
 
19
 
 
20
#uncomment if you have defined messages
 
21
#rosbuild_genmsg()
 
22
#uncomment if you have defined services
 
23
#rosbuild_gensrv()
 
24
 
 
25
set(GBX_DIR "build/gearbox_9.07")
 
26
set(GBXBASE_DIR "${GBX_DIR}/gearbox-9.07/src")
 
27
include_directories(${GBXBASE_DIR})
 
28
include_directories(src)
 
29
 
 
30
set( gbx_util_files 
 
31
        ${GBXBASE_DIR}/gbxutilacfr/trivialtracer.h
 
32
        ${GBXBASE_DIR}/gbxutilacfr/mathdefs.h
 
33
        ${GBXBASE_DIR}/gbxutilacfr/trivialtracer.cpp
 
34
        ${GBXBASE_DIR}/gbxutilacfr/status.h
 
35
        ${GBXBASE_DIR}/gbxutilacfr/tokenise.cpp
 
36
        ${GBXBASE_DIR}/gbxutilacfr/stoppable.h
 
37
        ${GBXBASE_DIR}/gbxutilacfr/exceptions.h
 
38
    ${GBXBASE_DIR}/gbxutilacfr/exceptions.cpp
 
39
        ${GBXBASE_DIR}/gbxutilacfr/status.cpp
 
40
        ${GBXBASE_DIR}/gbxutilacfr/substatus.h
 
41
        ${GBXBASE_DIR}/gbxutilacfr/gbxutilacfr.h
 
42
        ${GBXBASE_DIR}/gbxutilacfr/tracer.cpp
 
43
        ${GBXBASE_DIR}/gbxutilacfr/trivialstatus.cpp
 
44
        ${GBXBASE_DIR}/gbxutilacfr/subhealth.h
 
45
        ${GBXBASE_DIR}/gbxutilacfr/trivialstatus.h
 
46
        ${GBXBASE_DIR}/gbxutilacfr/tokenise.h
 
47
        ${GBXBASE_DIR}/gbxutilacfr/tracer.h
 
48
)
 
49
 
 
50
set( gbx_lockfile_files
 
51
        ${GBXBASE_DIR}/gbxserialacfr/lockfile/lockfile.cpp
 
52
        ${GBXBASE_DIR}/gbxserialacfr/lockfile/lockfile.h
 
53
)
 
54
 
 
55
set( gbx_serial_files
 
56
        ${GBXBASE_DIR}/gbxserialacfr/serial.cpp
 
57
        ${GBXBASE_DIR}/gbxserialacfr/uncopyable.h
 
58
        ${GBXBASE_DIR}/gbxserialacfr/gbxserialacfr.h
 
59
        ${GBXBASE_DIR}/gbxserialacfr/serial.h
 
60
)       
 
61
 
 
62
set( gbx_novatel_util_files
 
63
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/serialconnectivity.h
 
64
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/imudecoder.cpp
 
65
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/imudecoder.h
 
66
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/receiverstatusdecoder.h
 
67
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/crc32.cpp
 
68
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/serialconnectivity.cpp
 
69
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/novatelmessages.h
 
70
    ${GBXBASE_DIR}/gbxnovatelacfr/gbxnovatelutilacfr/crc32.h
 
71
)
 
72
 
 
73
set( gbx_novatel_files
 
74
    ${GBXBASE_DIR}/gbxnovatelacfr/driver.h
 
75
    ${GBXBASE_DIR}/gbxnovatelacfr/driver.cpp
 
76
)
 
77
 
 
78
 
 
79
#common commands for building c++ executables and libraries
 
80
rosbuild_add_library(GbxUtilAcfr ${gbx_util_files})
 
81
rosbuild_add_library(GbxLockFileAcfr ${gbx_lockfile_files})
 
82
rosbuild_add_library(GbxSerialAcfr ${gbx_serial_files})
 
83
rosbuild_add_library(GbxNovatelUtilAcfr ${gbx_novatel_util_files})
 
84
rosbuild_add_library(GbxNovatelAcfr ${gbx_novatel_files})
 
85
rosbuild_add_library(gps_convert src/gps_convert.cpp include/novatelINS/gps_convert.h)
 
86
 
 
87
target_link_libraries(GbxNovatelAcfr GbxUtilAcfr GbxSerialAcfr GbxNovatelUtilAcfr)
 
88
target_link_libraries(GbxNovatelUtilAcfr GbxUtilAcfr GbxSerialAcfr)
 
89
target_link_libraries(GbxSerialAcfr GbxLockFileAcfr)
 
90
 
 
91
#rosbuild_add_boost_directories()
 
92
#rosbuild_link_boost(${PROJECT_NAME} thread)
 
93
 
 
94
set_source_files_properties(${gbx_util_files} PROPERTIES GENERATED 1)
 
95
set_source_files_properties(${gbx_lockfile_files} PROPERTIES GENERATED 1)
 
96
set_source_files_properties(${gbx_serial_files} PROPERTIES GENERATED 1)
 
97
set_source_files_properties(${gbx_novatel_util_files} PROPERTIES GENERATED 1)
 
98
set_source_files_properties(${gbx_novatel_files} PROPERTIES GENERATED 1)
 
99
 
 
100
# Download the required gearbox libraries
 
101
IF(APPLIED_GBX_PATCH)
 
102
        message(STATUS "Gearbox patch already applied.")
 
103
        set(GBX_PATCH_CMD echo "Patch already applied") # dummy line
 
104
ELSE(APPLIED_GBX_PATCH)
 
105
        message(STATUS "Gearbox patch not applied. Will download Gearbox and patch.")
 
106
        set(GBX_MD5 "7495fc9e40b30d254cf4b9bef190b9e0")
 
107
        rosbuild_download_data(http://sourceforge.net/projects/gearbox/files/gearbox/9.07/gearbox-9.07.tar.gz ${GBX_DIR}/gearbox-9.07.tar.gz ${GBX_MD5})
 
108
        rosbuild_untar_file(${GBX_DIR}/gearbox-9.07.tar.gz ${GBX_DIR}/geabox-9.07 GbxUtilAcfr)#ALL)#rosbuild_precompile
 
109
        # Patch it all
 
110
        set(GBX_PATCH_CMD cp -r ${PROJECT_SOURCE_DIR}/src/changedOrcaFiles/* ${PROJECT_SOURCE_DIR}/${GBXBASE_DIR}/) #TODO maybe use rsync so it doesn't try to copy the .svn dirs.
 
111
        set(APPLIED_GBX_PATCH TRUE CACHE INTERNAL "Gearbox patch setup." )
 
112
ENDIF(APPLIED_GBX_PATCH)
 
113
 
 
114
# make the actual ROS interface
 
115
rosbuild_add_executable(novatelINSdriver src/NovatelInterface.cpp include/novatelINS/NovatelInterface.h)
 
116
target_link_libraries(novatelINSdriver gps_convert GbxNovatelAcfr)
 
117
 
 
118
# Setup dependency tree
 
119
add_custom_command(OUTPUT gbx_patch COMMAND ${GBX_PATCH_CMD})
 
120
add_custom_target(gbx_patch_target DEPENDS gbx_patch)
 
121
add_dependencies(gbx_patch_target GbxUtilAcfr)
 
122
add_dependencies(GbxLockFileAcfr gbx_patch_target)
 
123
add_dependencies(GbxSerialAcfr GbxLockFileAcfr)
 
124
add_dependencies(GbxNovatelUtilAcfr GbxSerialAcfr)
 
125
add_dependencies(GbxNovatelAcfr GbxNovatelUtilAcfr)
 
126
 
 
127
 
 
128
 
 
129
 
 
130
 
 
131