Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
604 commits
Select commit Hold shift + click to select a range
6aed9c6
Implement ModifySceneAddReferenceObjectPK and ModifySceneRemoveRefere…
ziyan Mar 1, 2019
278b156
Implement ModifySceneAddReferenceObjectPK and ModifySceneRemoveRefere…
ziyan Mar 1, 2019
76a0423
Merge pull request #44 from mujin/modifyreferenceobjectpks
rdiankov Mar 8, 2019
59bd61a
Merge pull request #44 from mujin/modifyreferenceobjectpks
rdiankov Mar 8, 2019
57bef36
Add GetModifiedTime func
Mar 20, 2019
00d7a8d
Add GetModifiedTime func
Mar 20, 2019
6caa8aa
GetModifiedTime - still debugging
Mar 20, 2019
9bc4957
Working GetModifiedTime
Mar 20, 2019
e45f806
Fix GetModifiedTime
Mar 27, 2019
2036534
Always set CURLOPT_FOLLOWLOCATION to 1. Reset options used in GetModi…
ziyan Mar 30, 2019
11c3bd9
Scope all curl options.
ziyan Mar 30, 2019
c8b489f
Simplify curl_easy_escape and unescape usage.
ziyan Mar 30, 2019
3116388
Remove some old impl.
ziyan Mar 30, 2019
c3d3325
Merge pull request #46 from mujin/scopedcurl
rdiankov Apr 1, 2019
b529ec4
Merge pull request #46 from mujin/scopedcurl
rdiankov Apr 1, 2019
929e30d
Merge remote-tracking branch 'origin/master' into TyExperimentRapid
Apr 1, 2019
3513e13
Merge remote-tracking branch 'origin/master' into TyExperimentRapid
Apr 1, 2019
ae49219
Comment the return type of GetModifiedTime.
ziyan May 10, 2019
238bebc
change GetModifiedTime to resolve cache correctly
May 13, 2019
64d636b
Merge branch 'master' into TyExperimentRapid
Jun 25, 2019
63067bd
Merge branch 'master' into TyExperimentRapid
Jun 25, 2019
05170ee
remove unnecessary FileUpload
Jun 25, 2019
93a5bf3
remove unnecessary FileUpload
Jun 25, 2019
ce75205
CreateInstObject will receive required fields (from web server)
Jun 25, 2019
6e6e025
Added SaveBackup/RestoreBackup
Jul 15, 2019
e05b1f1
Added SaveBackup/RestoreBackup
Jul 15, 2019
fb83e61
bumped version and added document
Jul 19, 2019
eaae22e
code review
Jul 23, 2019
80e0cc3
code review
Jul 23, 2019
3999091
RestoreBackup now uses inputStream
Jul 24, 2019
c3324ae
RestoreBackup now uses inputStream
Jul 24, 2019
38cb6a4
added timeout to _UploadFileToControllerViaForm
Jul 24, 2019
2d24883
added timeout to _UploadFileToControllerViaForm
Jul 24, 2019
ac6252a
fixed _CallGet string overload
Jul 24, 2019
be27fac
SaveBackup now uses ostream
Jul 24, 2019
6a5946d
SaveBackup now uses ostream
Jul 24, 2019
553cbcd
remove debug
Jul 24, 2019
af8841c
do not send filename= parameter when restoring
Jul 24, 2019
36d663f
remove extra comment
Jul 24, 2019
57a3480
eliminated initializer-list
Aug 2, 2019
e4ac878
Merge pull request #52 from mujin/fixWindows
rdiankov Aug 22, 2019
d6b54d3
Added Upgrade/GetUpgradeStatus/Reboot
Aug 27, 2019
6c9748e
Added Upgrade/GetUpgradeStatus/Reboot
Aug 27, 2019
696b449
Added CancelUpgrade
Aug 27, 2019
533cb43
Added CancelUpgrade
Aug 27, 2019
52ed1db
Use inputStream size to determine whether to use pre-uploaded file
Aug 28, 2019
b9956bc
Use inputStream size to determine whether to use pre-uploaded file
Aug 28, 2019
bf151a7
keep inputStream position
Aug 28, 2019
4bfe197
Merge pull request #54 from mujin/softwareupgrade
rdiankov Aug 28, 2019
e9cb4cc
Merge pull request #54 from mujin/softwareupgrade
rdiankov Aug 28, 2019
d2b71c7
fix form upload
Aug 28, 2019
9da9f9a
Merge pull request #55 from mujin/softwareupgrade
rdiankov Aug 28, 2019
221e229
fix GetVersion() mutex
Aug 29, 2019
f4a5c76
Add DebugLog API
Aug 29, 2019
c3e6379
Add DebugLog API
Aug 29, 2019
f800efc
fix FileUploadToControllerViaForm on Windows
Sep 11, 2019
b705bb6
minor
Sep 11, 2019
42b11dc
found better ident
Sep 11, 2019
937c452
fix comment
Sep 11, 2019
434e22c
add deletefile sample
Sep 17, 2019
164ef9e
Merge branch 'savebackup' into debuglog
Sep 19, 2019
e7a926a
rename DebugLog -> Debug
Sep 20, 2019
c6ffad2
rename DebugLog -> Debug
Sep 20, 2019
51bc720
Merge pull request #62 from mujin/debuglog
rdiankov Sep 20, 2019
2f5f8f2
Merge pull request #62 from mujin/debuglog
rdiankov Sep 20, 2019
c67763a
avoid SIGSEGV when DELETE fails, where error message was written in u…
Oct 2, 2019
c4d460a
make sure to clear _buffer
Oct 2, 2019
62c0271
add getting the base uri
Oct 8, 2019
5c5ac3c
add getting the base uri
Oct 8, 2019
5d8a2cb
Merge branch 'master' of ssh://github.com/mujin/controllerclientcpp
Oct 8, 2019
2ad3cb0
add ListFilesInController API
Oct 8, 2019
4599034
add ListFilesInController API
Oct 8, 2019
9de7eb8
code review
Oct 16, 2019
9023116
code review
Oct 16, 2019
7db3e5e
add comment to struct FileEntry
Oct 23, 2019
01c5813
Clean up MUJIN_ASSERT, everyone else is using BOOST_ASSERT.
ziyan Mar 12, 2020
998f121
Clean up MUJIN_ASSERT, everyone else is using BOOST_ASSERT.
ziyan Mar 12, 2020
eed0f50
Merge pull request #67 from mujin/boostAssert
ziyan Mar 19, 2020
5c31f37
Merge pull request #67 from mujin/boostAssert
ziyan Mar 19, 2020
1c00368
add new PickPlaceHistoryItem that will be published the planning slave
May 26, 2020
ce3f5d6
add new PickPlaceHistoryItem that will be published the planning slave
May 26, 2020
f70445b
Initialize return value of AddLink/AddGeometry. Fix AddGeometryFromRa…
May 28, 2020
9057566
migrate realtimeitlplanning to realtimeitlplanning3
Jul 14, 2020
373078a
have correct isContainerEmptyMap format
Aug 5, 2020
5a01af3
Merge pull request #76 from mujin/use_isContainerEmptyMap
rdiankov Aug 5, 2020
5e714da
Merge pull request #72 from mujin/initBasicDataLinkGeom
rdiankov Sep 16, 2020
846dd95
Fixed DeleteFileOnController webstack2
Oct 8, 2020
ee3e366
Merge pull request #78 from mujin/fixDeleteFileOnController
ziyan Oct 11, 2020
d8583fc
improved json templates
Dec 21, 2020
70afcea
Add support for querying sensors in connected body.
ziyan Feb 5, 2021
b38ff6b
Fixed CancelUpgrade; CallDelete must not be wrapped by scoped_lock
Feb 10, 2021
571756a
Merge pull request #84 from mujin/fixCancelUpgrade
ziyan Feb 12, 2021
7e2aa0d
Merge pull request #83 from mujin/connectedBodySensorMapping
rdiankov Mar 1, 2021
335bb6b
Raise correct json error.
ziyan Jun 25, 2021
e5d1e2a
add reference_object_pk
Aug 19, 2021
9538f39
Add the ability to backup only selected scene
Sep 17, 2021
a7e91a1
Add the ability to backup only selected scene
Sep 17, 2021
eb2861b
Rename currentscenepk to currentscenename
Sep 22, 2021
ed829d6
Rename currentscenepk to currentscenename
Sep 22, 2021
025703f
Rename currentscenename to backupscenepks
Oct 1, 2021
9a186cf
Rename currentscenename to backupscenepks
Oct 1, 2021
f7a4b9c
Set cookie domain
Dec 27, 2021
ddddb7f
add version conditional
Dec 27, 2021
975fa54
automatically cleanup curl resource
Dec 28, 2021
dbc177d
check curl_url status
Dec 28, 2021
a9f4efc
Merge pull request #95 from mujin/setDomainCookie
ziyan Dec 28, 2021
646bc50
_PrepareDestinationURI_UTF16 should not lock mutex, safe to assume it…
Jan 1, 2022
9f9aaac
Merge pull request #96 from mujin/fixUTF16
ziyan Jan 4, 2022
da2203f
Silence unnecessary parentheses warning.
Jan 7, 2022
26d57b2
Add DeleteAllScenes
Feb 10, 2021
c998a83
Add DeleteAllScenes
Feb 10, 2021
2ec0489
add DeleteAllITLPrograms
Jan 10, 2022
060c30c
add DeleteAllITLPrograms
Jan 10, 2022
cc59ce9
Merge pull request #91 from mujin/supportReferenceObjectPk
rdiankov Jan 10, 2022
c538858
Merge pull request #98 from mujin/deleteallscenes
rdiankov Jan 10, 2022
9037438
Revert "Silence ZMQ related warnings"
ziyan Mar 7, 2022
a151632
Merge pull request #101 from mujin/revert-97-silence_zmq_bullseye
rdiankov Mar 7, 2022
94305f3
fix shadowed variables, take 1
Mar 24, 2022
d8ed331
fix shadowed variables, take 2
Mar 24, 2022
fed77b0
fix: gather attachedsensors from connectedBodies in RobotResource::Ge…
Apr 7, 2022
4d95fb7
refactor: trim some redundant code from RobotResource::GetAttachedSen…
Apr 11, 2022
0a988ad
refactor: replace RobotResource::GetAttachedSensors queue accumulatin…
Apr 12, 2022
4529f6c
refactor: simplify RobotResource::GetAttachedSensors to use recursion…
Apr 12, 2022
3604f6e
mujinjson: LoadJsonValue: T must be default constructible, also use m…
Apr 25, 2022
8b6b69b
Merge pull request #105 from mujin/mujinjson_usemakeshared
ziyan Apr 25, 2022
85ebfbc
Merge branch 'master' into get-attached-sensors-from-connected-body
Apr 26, 2022
e21a326
Merge pull request #103 from mujin/get-attached-sensors-from-connecte…
rdiankov Apr 26, 2022
009b0e1
Merge branch 'master' into fixJsonError20210625
Apr 26, 2022
154062a
Merge pull request #90 from mujin/fixJsonError20210625
rdiankov Apr 26, 2022
6e7751a
Merge pull request #92 from mujin/usbBackupRestore_20210907
rdiankov Apr 26, 2022
7ee83e3
Merge pull request #92 from mujin/usbBackupRestore_20210907
rdiankov Apr 26, 2022
e93c494
fix GeometryResource ctor
Apr 27, 2022
874691c
Merge pull request #106 from mujin/fixtypoGeometryCtor
ziyan Apr 30, 2022
c4714df
Reuse allocated memory in rapidjson::Document when parsing new doc.
ziyan May 4, 2022
ab14a97
Merge pull request #109 from mujin/betterAllocator20220428
rdiankov May 18, 2022
f57cb59
Add ExecuteGraphQuery API.
ziyan Sep 8, 2022
4a6ef09
Add ExecuteGraphQuery API.
ziyan Sep 8, 2022
ae1f74a
Handle graph query errors.
ziyan Sep 9, 2022
1a08283
Perhaps it is not ideal to clear caller allocator.
ziyan Sep 9, 2022
6848366
Fix abstract declaration.
ziyan Sep 9, 2022
46afe8a
Reuse StringBuffer cache.
ziyan Sep 22, 2022
a2bb297
Add MujinGraphQueryError.
ziyan Oct 11, 2022
02edc53
Add MujinGraphQueryError.
ziyan Oct 11, 2022
cf421f2
Merge pull request #114 from mujin/supportFrontend20220616
ziyan Oct 12, 2022
0e6ef15
Merge pull request #114 from mujin/supportFrontend20220616
ziyan Oct 12, 2022
e9c9046
Merge pull request #114 from mujin/supportFrontend20220616
ziyan Oct 12, 2022
51c67d5
Fix UploadDataToController.
ziyan Nov 1, 2022
e18f1c2
Fix UploadDataToController.
ziyan Nov 1, 2022
ed958d6
Make upload data to controller more efficient.
ziyan Nov 1, 2022
d5745e9
Make upload data to controller more efficient.
ziyan Nov 1, 2022
1e67dfc
Merge pull request #117 from mujin/detectionInWebstack
rdiankov Nov 1, 2022
b366d42
Merge pull request #117 from mujin/detectionInWebstack
rdiankov Nov 1, 2022
e93003f
moved SensorSelectionInfo to mujincontrollerclient.h, changed GetSens…
yoshikikanemoto Nov 21, 2022
aa89676
set sensorName
yoshikikanemoto Nov 21, 2022
c1f0d53
Add SetUserAgent.
ziyan Dec 4, 2022
be1c516
Add SetUserAgent.
ziyan Dec 4, 2022
111ed14
Merge pull request #118 from mujin/setUserAgent20221205
rdiankov Dec 5, 2022
d5bcd0c
Merge pull request #118 from mujin/setUserAgent20221205
rdiankov Dec 5, 2022
28e8a12
Merge branch 'master' into sensorLinkName
Dec 5, 2022
c20da2a
pass timeout to _CallGet
Dec 20, 2022
43ef201
do not set curl timeout in _DownloadFileFromController
Dec 20, 2022
6f7d421
Fix StringRefType usage.
ziyan Dec 20, 2022
0808c8e
Merge pull request #120 from mujin/fix-timeout-20221220
rdiankov Dec 26, 2022
44fa03e
update mujinjson.h to make it compatible with internal coe, add a com…
Jan 5, 2023
b3b5a4c
update mujinjson.h to make it compatible with internal coe, add a com…
Jan 5, 2023
f526219
update mujinjson.h to make it compatible with internal coe, add a com…
Jan 5, 2023
3dfdac8
added file
Jan 5, 2023
3e66718
add namespace context
Jan 5, 2023
a86f08d
have to prefix with the connected body name
Jan 7, 2023
df666eb
add ExecuteGraphQueryRaw
Feb 4, 2023
13be811
add ExecuteGraphQueryRaw
Feb 4, 2023
b0b65e2
change log level
Feb 4, 2023
2fccdd1
add localaabb to PickPlaceHistoryItem
yoshikikanemoto Mar 1, 2023
a7cd107
Refactor ExecuteGraphQuery, ExecuteGraphQueryRaw
felixvd Mar 23, 2023
5d347e7
Refactor ExecuteGraphQuery, ExecuteGraphQueryRaw
felixvd Mar 23, 2023
03c521c
Add ZMQ route
felixvd Mar 23, 2023
d3c9551
Add ZMQ route
felixvd Mar 23, 2023
a7fb461
fix default
Mar 27, 2023
4c8fc5c
Merge pull request #121 from mujin/devanning2023_pullmaster
rdiankov Mar 27, 2023
72536c2
Merge remote-tracking branch 'origin/master' into add-zmq-route
Mar 28, 2023
cf0734b
Merge pull request #124 from mujin/add-zmq-route
rdiankov Mar 28, 2023
8e87a34
Merge pull request #124 from mujin/add-zmq-route
rdiankov Mar 28, 2023
82ce2b1
Revert "Merge pull request #124 from mujin/add-zmq-route"
felixvd Apr 14, 2023
8016e06
Revert "Merge pull request #124 from mujin/add-zmq-route"
felixvd Apr 14, 2023
0e5075c
Merge pull request #128 from mujin/revert-zmq
ziyan Apr 21, 2023
a7a28c3
Merge pull request #128 from mujin/revert-zmq
ziyan Apr 21, 2023
7f6929d
Support using Unix domain sockets as connection endpoint
Apr 14, 2023
8923284
Support using Unix domain sockets as connection endpoint
Apr 14, 2023
b387dac
remove url default parameter
Apr 20, 2023
f1b810a
remove url default parameter
Apr 20, 2023
63606ff
review pass
May 10, 2023
f2739b8
Reduce copying of string, use MUJIN_WEBSTACK_UNIX_ENDPOINT.
ziyan May 16, 2023
fe0c587
Use ssize_t.
ziyan May 16, 2023
54bcd5c
Fix create webstack client.
ziyan May 16, 2023
48af646
Add logs.
ziyan May 16, 2023
8ea909f
Add test and fix bug.
ziyan May 16, 2023
da4508d
Provide GetUnixEndpointForLocalWebstack.
ziyan May 16, 2023
db86a33
Check that port is 80 if supplied, and handle username password as well.
ziyan May 17, 2023
3daf535
Expose TestIsWebstackLocal to test if a url is pointing to local webs…
ziyan May 17, 2023
3564e21
Instead of changing constructor signature, add SetUnixEndpoint().
ziyan May 17, 2023
558013f
Instead of changing constructor signature, add SetUnixEndpoint().
ziyan May 17, 2023
d2fd228
Update to use SetUnixEndpoint().
ziyan May 17, 2023
c554603
Merge pull request #130 from mujin/unixSocket20230414
rdiankov May 17, 2023
28d7103
Merge pull request #130 from mujin/unixSocket20230414
rdiankov May 17, 2023
244ff33
add GetURIWithUsernamePassword
Jun 21, 2023
ca8fcfc
add GetURIWithUsernamePassword
Jun 21, 2023
02c62bf
Move ControllerClientInfo to controllerclientcpp.
ziyan Jun 26, 2023
0699578
Move ControllerClientInfo to controllerclientcpp.
ziyan Jun 26, 2023
3a062cf
Also add additionalHeaders and unixEndpoint in ClientInfo.
ziyan Jun 27, 2023
834fd02
Also add additionalHeaders and unixEndpoint in ClientInfo.
ziyan Jun 27, 2023
1140901
Fix typo.
ziyan Jun 27, 2023
794f656
update minor ver
Jun 30, 2023
bfcb8c1
add GetCStringJsonValueByKey that does not allocate anything
Jun 30, 2023
4dd3aeb
Add top and bottom radius.
Jul 13, 2023
014d1fb
Merge pull request #137 from mujin/detectorProfiles20230410_radius
rdiankov Jul 13, 2023
c822ed0
set to verbose
Jul 18, 2023
fa88185
change log level
Jul 18, 2023
5a7adc3
Rename files to make the controller client resemble the webstack client
Jul 20, 2023
af29e89
Create a minimal viable webstack client
Jul 20, 2023
22b84b0
Implement CreateWebStackClientPtr
Jul 20, 2023
5b5aa5d
Fix build issue
Jul 20, 2023
389b56a
Reorganize tree to resemble webstack client's tree
Jul 21, 2023
c71819c
Merge remote-tracking branch 'controller-client-src/master' into spli…
Jul 21, 2023
a6259b8
Build webstack client independently of Mujin.
Jul 21, 2023
9981d19
Remove cmake's outputted `include` dir
Jul 21, 2023
c145467
Fix build
Jul 25, 2023
9fc0813
Remove controller common's dependency on the controller client.
Jul 25, 2023
3245b2b
Remove the unused UserInterruptException
Jul 25, 2023
dc0df88
Fix includes -- it's mujinwebstackclientcpp not just mujinwebstackclient
Jul 25, 2023
a8ab51f
Fix CMake, make this build
Jul 25, 2023
745c793
Copy in createwebstackclient
Jul 26, 2023
f2ebe62
Prepare createwebstackclient and webstackclient for its use
Jul 26, 2023
48ec497
Fix build breaks.
Jul 27, 2023
f1f3abe
Fix copy-paste issues in createwebstackclient
Jul 27, 2023
6e7f23f
Restore implementation of GetNameFromPrimaryKey
Jul 27, 2023
f5c3feb
Fix typo
Jul 27, 2023
b6dfdc1
do not clear allocator when executing graph query
Jul 28, 2023
ee3588b
Filter repo to only keep the ControllerClientInfo
Aug 7, 2023
3d286a1
Merge remote-tracking branch 'merge-client-info/master' into split-co…
Aug 7, 2023
2357e1b
Merge remote-tracking branch 'merge-parse-url/master' into split-cont…
Aug 7, 2023
59ce4d3
Integrate the WebstackClientInfo into the WebstackClient
Aug 7, 2023
5262368
Refactor createwebstackclient to use the webstackclientinfo
Aug 7, 2023
8a4f8b9
Fix build issues
Aug 7, 2023
417a8f1
Let the vision manager's planning client info override the WebstackCl…
Aug 7, 2023
f16cd16
Fix mujinjson's exception definition.
Aug 8, 2023
00fca61
Update the client info when the unix endpoint is updated
Aug 14, 2023
40ac36d
Override the username and password from the baseuri with the parameter.
Aug 15, 2023
32fe966
Fix name errors in _ParseUsernamePassword
Aug 15, 2023
46e9719
Fix locality checking -- we need to be on port 80 or have no port for…
Aug 17, 2023
da3ac74
Apply https://git.mujin.co.jp/dev/controllerclientcpp/-/commit/9604b4…
Aug 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 51 additions & 49 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,29 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required (VERSION 2.8.0)
project(mujincontrollerclient)
project(mujinwebstackclient)
set( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )

# Define here the needed parameters
# make sure to change the version in docs/Makefile
set (MUJINCLIENT_VERSION_MAJOR 0)
set (MUJINCLIENT_VERSION_MINOR 65)
set (MUJINCLIENT_VERSION_PATCH 0)
set (MUJINCLIENT_VERSION ${MUJINCLIENT_VERSION_MAJOR}.${MUJINCLIENT_VERSION_MINOR}.${MUJINCLIENT_VERSION_PATCH})
set (MUJINCLIENT_SOVERSION ${MUJINCLIENT_VERSION_MAJOR}.${MUJINCLIENT_VERSION_MINOR})
set (CLIENT_SOVERSION ${MUJINCLIENT_VERSION_MAJOR}.${MUJINCLIENT_VERSION_MINOR})
message(STATUS "Compiling MUJIN Controller Client C++ Version ${MUJINCLIENT_VERSION}, soversion=${CLIENT_SOVERSION}")
set (MUJINWEBSTACKCLIENT_VERSION_MAJOR 0)
set (MUJINWEBSTACKCLIENT_VERSION_MINOR 65)
set (MUJINWEBSTACKCLIENT_VERSION_PATCH 0)
set (MUJINWEBSTACKCLIENT_VERSION ${MUJINWEBSTACKCLIENT_VERSION_MAJOR}.${MUJINWEBSTACKCLIENT_VERSION_MINOR}.${MUJINWEBSTACKCLIENT_VERSION_PATCH})
set (MUJINWEBSTACKCLIENT_SOVERSION ${MUJINWEBSTACKCLIENT_VERSION_MAJOR}.${MUJINWEBSTACKCLIENT_VERSION_MINOR})
set (CLIENT_SOVERSION ${MUJINWEBSTACKCLIENT_VERSION_MAJOR}.${MUJINWEBSTACKCLIENT_VERSION_MINOR})
message(STATUS "Compiling MUJIN Controller Client C++ Version ${MUJINWEBSTACKCLIENT_VERSION}, soversion=${CLIENT_SOVERSION}")

set(MUJINCLIENT_CMAKE_INSTALL_DIR "mujincontrollerclient-${MUJINCLIENT_VERSION_MAJOR}.${MUJINCLIENT_VERSION_MINOR}" CACHE STRING "Directory to install the cmake config files.")
set(MUJINCLIENT_TARGET_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "The target processor architecture to build for, this is combined with the generator toolchain")
set(MUJINWEBSTACKCLIENT_CMAKE_INSTALL_DIR "mujinwebstackclient-${MUJINWEBSTACKCLIENT_VERSION_MAJOR}.${MUJINWEBSTACKCLIENT_VERSION_MINOR}" CACHE STRING "Directory to install the cmake config files.")
set(MUJINWEBSTACKCLIENT_TARGET_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "The target processor architecture to build for, this is combined with the generator toolchain")

message(STATUS "Using cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" )
# http://www.cmake.org/cmake/help/cmake-2.6.html#policy:CMP0002
cmake_policy(SET CMP0002 NEW)
# http://www.cmake.org/cmake/help/cmake-2.6.html#policy:CMP0003
cmake_policy(SET CMP0003 NEW)

option(OPT_SAMPLES "Build the samples" ON)
option(OPT_SAMPLES "Build the samples" OFF)
option(OPT_BUILD_TESTS "Build the tests" OFF)
option(OPT_BUILD_STATIC "Build static libraries for the client" ON)
option(OPT_LOG4CXX "Use log4cxx for logging" ON)
Expand Down Expand Up @@ -66,9 +66,12 @@ include(CheckCXXCompilerFlag)
add_definitions("-DBOOST_SPIRIT_THREADSAFE") # for json parsing

# have to include before boost since the boost headers can be located in a previous installed version of this library
set(MUJINCLIENT_INCLUDE_LOCAL_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
include_directories(${MUJINCLIENT_INCLUDE_LOCAL_DIRS})
set(MUJINWEBSTACKCLIENT_INCLUDE_LOCAL_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src/include)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/src/include
${CMAKE_CURRENT_BINARY_DIR}/include
) # have to do this before every other include!
include_directories(${MUJINWEBSTACKCLIENT_INCLUDE_LOCAL_DIRS})

if( MSVC )
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE)
Expand Down Expand Up @@ -102,7 +105,7 @@ if( MSVC )

check_include_file(stdint.h HAVE_STDINT_H)
if( NOT HAVE_STDINT_H )
#install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/msvc_include/stdint.h DESTINATION include/mujinclient-${MUJINCLIENT_VERSION_MAJOR}.${MUJINCLIENT_VERSION_MINOR} COMPONENT ${COMPONENT_PREFIX}dev)
#install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/msvc_include/stdint.h DESTINATION include/mujinwebstackclient-${MUJINWEBSTACKCLIENT_VERSION_MAJOR}.${MUJINWEBSTACKCLIENT_VERSION_MINOR} COMPONENT ${COMPONENT_PREFIX}dev)
#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/msvc_include)
endif()

Expand All @@ -120,38 +123,38 @@ if( MSVC )
set(MSVC_PREFIX "vc100")
set(MSVC_PREFIX2 "v100")
endif()
set(MUJINCLIENT_LIBRARY_SUFFIX "${MUJINCLIENT_SOVERSION}-${MSVC_PREFIX}-mt" CACHE STRING "Suffix to append to library names")
set(MUJINWEBSTACKCLIENT_LIBRARY_SUFFIX "${MUJINWEBSTACKCLIENT_SOVERSION}-${MSVC_PREFIX}-mt" CACHE STRING "Suffix to append to library names")

# install all DLLs
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/bin/" DESTINATION bin FILES_MATCHING PATTERN "*.dll")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/bin/" DESTINATION bin FILES_MATCHING PATTERN "*.dll")

# force multi-threaded DLL boost
set(Boost_USE_MULTITHREAD ON)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_STATIC_RUNTIME OFF)
set(Boost_CFLAGS "-DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB")
else()
set(MUJINCLIENT_LIBRARY_SUFFIX "${MUJINCLIENT_SOVERSION}" CACHE STRING "Suffix to append to library names")
set(MUJINWEBSTACKCLIENT_LIBRARY_SUFFIX "${MUJINWEBSTACKCLIENT_SOVERSION}" CACHE STRING "Suffix to append to library names")
endif()

set(MUJINCLIENT_LINK_DIRS)
set(MUJINWEBSTACKCLIENT_LINK_DIRS)

find_package(PkgConfig)
set(MUJINCLIENT_LOG4CXX 0)
set(MUJINWEBSTACKCLIENT_LOG4CXX 0)
if (OPT_LOG4CXX)
pkg_check_modules(LOG4CXX liblog4cxx)
if (LOG4CXX_FOUND)
if( MSVC )
set(MUJINCLIENT_LOG4CXX_INCLUDE_DIRS "/I\"${LOG4CXX_INCLUDEDIR}\"")
set(MUJINCLIENT_LOG4CXX_LIB_DIRS "/LIBPATH:\"${LOG4CXX_LIBDIR}\"")
set(MUJINWEBSTACKCLIENT_LOG4CXX_INCLUDE_DIRS "/I\"${LOG4CXX_INCLUDEDIR}\"")
set(MUJINWEBSTACKCLIENT_LOG4CXX_LIB_DIRS "/LIBPATH:\"${LOG4CXX_LIBDIR}\"")
else()
set(MUJINCLIENT_LOG4CXX_INCLUDE_DIRS "-I${LOG4CXX_INCLUDEDIR}")
set(MUJINCLIENT_LOG4CXX_LIB_DIRS "-L${LOG4CXX_LIBDIR}")
set(MUJINWEBSTACKCLIENT_LOG4CXX_INCLUDE_DIRS "-I${LOG4CXX_INCLUDEDIR}")
set(MUJINWEBSTACKCLIENT_LOG4CXX_LIB_DIRS "-L${LOG4CXX_LIBDIR}")
endif()
set(MUJINCLIENT_LOG4CXX_LIBRARY "-l${LOG4CXX_LIBRARIES}")
set(MUJINWEBSTACKCLIENT_LOG4CXX_LIBRARY "-l${LOG4CXX_LIBRARIES}")

set(MUJINCLIENT_LINK_DIRS ${MUJINCLIENT_LINK_DIRS} ${LOG4CXX_LIBDIR})
set(MUJINCLIENT_LOG4CXX 1)
set(MUJINWEBSTACKCLIENT_LINK_DIRS ${MUJINWEBSTACKCLIENT_LINK_DIRS} ${LOG4CXX_LIBDIR})
set(MUJINWEBSTACKCLIENT_LOG4CXX 1)
endif()
endif()

Expand Down Expand Up @@ -182,11 +185,11 @@ endif()

if( Boost_FOUND )
include_directories(${Boost_INCLUDE_DIRS})
set(MUJINCLIENT_LINK_DIRS ${MUJINCLIENT_LINK_DIRS} ${Boost_LIBRARY_DIRS})
set(MUJINWEBSTACKCLIENT_LINK_DIRS ${MUJINWEBSTACKCLIENT_LINK_DIRS} ${Boost_LIBRARY_DIRS})
set(EXTRA_MSVC_DEPEND) # reset extra depend
elseif(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0")
include_directories(${Boost_INCLUDE_DIRS})
set(MUJINCLIENT_LINK_DIRS ${MUJINCLIENT_LINK_DIRS} ${Boost_LIBRARY_DIRS})
set(MUJINWEBSTACKCLIENT_LINK_DIRS ${MUJINWEBSTACKCLIENT_LINK_DIRS} ${Boost_LIBRARY_DIRS})
set(EXTRA_MSVC_DEPEND msvc_boost) # reset extra depend
elseif( MSVC )
# to facilitate compilation, visual studio libraries are included locally
Expand All @@ -195,7 +198,7 @@ elseif( MSVC )
set(Boost_FOUND 1)
set(Boost_INCLUDE_DIRS "${BOOST_ROOT}")
set(Boost_INCLUDE_DIR "${BOOST_ROOT}")
set(Boost_LIBRARY_DIRS "${BOOST_ROOT}/${MUJINCLIENT_TARGET_PROCESSOR}/lib")
set(Boost_LIBRARY_DIRS "${BOOST_ROOT}/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/lib")
set(Boost_REGEX_FOUND 0)
set(Boost_FILESYSTEM_FOUND 1)
set(Boost_IOSTREAMS_FOUND 1)
Expand Down Expand Up @@ -227,7 +230,7 @@ elseif( MSVC )
install(FILES ${Boost_DATE_TIME_LIBRARY_DLL} ${Boost_THREAD_LIBRARY_DLL} ${Boost_SYSTEM_LIBRARY_DLL} ${Boost_FILESYSTEM_LIBRARY_DLL} ${Boost_PROGRAM_OPTIONS_LIBRARY_DLL} DESTINATION bin COMPONENT ${COMPONENT_PREFIX}dev)
install(DIRECTORY "${Boost_INCLUDE_DIR}/boost" DESTINATION include COMPONENT ${COMPONENT_PREFIX}dev)
include_directories(${Boost_INCLUDE_DIRS})
set(MUJINCLIENT_LINK_DIRS ${MUJINCLIENT_LINK_DIRS} ${Boost_LIBRARY_DIRS})
set(MUJINWEBSTACKCLIENT_LINK_DIRS ${MUJINWEBSTACKCLIENT_LINK_DIRS} ${Boost_LIBRARY_DIRS})
else()
message(FATAL_ERROR "Could not find boost libraries!")
endif()
Expand Down Expand Up @@ -256,14 +259,14 @@ if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
add_definitions("-fno-strict-aliasing -Wall -Werror=shadow")
endif( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/mujincontrollerclient/config.h IMMEDIATE @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/mujinwebstackclientcpp/config.h IMMEDIATE @ONLY)

find_package(CURL)
if( NOT CURL_FOUND )
if( MSVC )
message(STATUS "setting local curl library from msvc_binaries/${MUJINCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}")
set(CURL_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/include")
set(CURL_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/lib/libcurl-${MSVC_PREFIX}-mt_imp.lib")
message(STATUS "setting local curl library from msvc_binaries/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}")
set(CURL_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/include")
set(CURL_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/lib/libcurl-${MSVC_PREFIX}-mt_imp.lib")
else()
message(FATAL_ERROR "could not find CURL library")
endif()
Expand Down Expand Up @@ -297,10 +300,10 @@ else()
endif()
if (NOT libzmq_FOUND)
if( MSVC )
set(libzmq_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/include")
set(libzmq_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/lib/libzmq-${MSVC_PREFIX2}-mt-4_0_4.lib")
set(libzmq_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/include")
set(libzmq_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/msvc_binaries/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}/lib/libzmq-${MSVC_PREFIX2}-mt-4_0_4.lib")
if(EXISTS ${libzmq_LIBRARIES} )
message(STATUS "setting local zmq library from msvc_binaries/${MUJINCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}")
message(STATUS "setting local zmq library from msvc_binaries/${MUJINWEBSTACKCLIENT_TARGET_PROCESSOR}/${MSVC_PREFIX}")
set(libzmq_FOUND 1)
else()
message(STATUS "could not find msvc zmq library ${libzmq_LIBRARIES}")
Expand All @@ -311,21 +314,22 @@ endif()

if (libzmq_FOUND)
include_directories(${libzmq_INCLUDE_DIRS})
set(MUJINCLIENT_LINK_DIRS ${MUJINCLIENT_LINK_DIRS} ${libzmq_LIBRARY_DIRS})
set(MUJINWEBSTACKCLIENT_LINK_DIRS ${MUJINWEBSTACKCLIENT_LINK_DIRS} ${libzmq_LIBRARY_DIRS})
else()
message(WARNING "compiling without libzmq library")
endif()

file(GLOB mujin_header_files ${CMAKE_CURRENT_SOURCE_DIR}/include/mujincontrollerclient/*.h ${CMAKE_CURRENT_SOURCE_DIR}/include/mujincontrollerclient/*.hpp)
install(FILES ${mujin_header_files} ${CMAKE_CURRENT_BINARY_DIR}/include/mujincontrollerclient/config.h DESTINATION include/mujincontrollerclient)
file(GLOB mujin_header_files ${CMAKE_CURRENT_SOURCE_DIR}/src/include/mujinwebstackclientcpp/*.h ${CMAKE_CURRENT_SOURCE_DIR}/src/include/mujinwebstackclientcpp/*.hpp)
install(FILES ${mujin_header_files} DESTINATION include/mujinwebstackclientcpp)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/mujinwebstackclientcpp/config.h DESTINATION include/mujinwebstackclientcpp)

macro(build_sample name)
include_directories(${LOG4CXX_INCLUDEDIR} ${libzmq_INCLUDE_DIRS})
link_directories(${LOG4CXX_LIBDIR})
add_executable(${name} ${name}.cpp)
set_target_properties(${name} PROPERTIES COMPILE_FLAGS "${Boost_CFLAGS}" LINK_FLAGS "")
add_dependencies(${name} libmujincontrollerclient)
target_link_libraries (${name} libmujincontrollerclient ${Boost_THREAD_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${EXTRA_LIBRARIES} ${LOG4CXX_LIBRARIES})
add_dependencies(${name} libmujinwebstackclient)
target_link_libraries (${name} libmujinwebstackclient ${Boost_THREAD_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${EXTRA_LIBRARIES} ${LOG4CXX_LIBRARIES})
install(TARGETS ${name} DESTINATION bin)
endmacro(build_sample)

Expand All @@ -337,15 +341,13 @@ if( OPT_BUILD_TESTS )
add_subdirectory(test)
endif()

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/share/mujincontrollerclient DESTINATION share)

# add make uninstall capability
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")

set(MujinControllerClient_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mujincontrollerclient-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/mujincontrollerclient-config.cmake" IMMEDIATE @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mujincontrollerclient-config-version.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/mujincontrollerclient-config-version.cmake" IMMEDIATE @ONLY)
set(Mujinwebstackclient_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mujinwebstackclient-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/mujinwebstackclient-config.cmake" IMMEDIATE @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mujinwebstackclient-config-version.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/mujinwebstackclient-config-version.cmake" IMMEDIATE @ONLY)

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mujincontrollerclient-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/mujincontrollerclient-config-version.cmake" DESTINATION "lib${LIB_SUFFIX}/cmake/${MUJINCLIENT_CMAKE_INSTALL_DIR}")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mujinwebstackclient-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/mujinwebstackclient-config-version.cmake" DESTINATION "lib${LIB_SUFFIX}/cmake/${MUJINWEBSTACKCLIENT_CMAKE_INSTALL_DIR}")

9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Mujin Webstack Client Cpp

This is the client for webstack, in C++.

We also have a [python version](https://github.com/mujin/mujinwebstackclientpy).

## Building?

Assuming you have rapid json and curl, you can simply `cmake . && make` in this directory.
Loading