Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add github action to ensure build [VC2022] #146

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
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
37 changes: 37 additions & 0 deletions .github/workflows/build_linux.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build Linux

on:
push:

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04]
architecture: ["x64"]

steps:
- uses: actions/checkout@v3
- name: Set up APT
if: ${{ matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' }}
run: |
sudo apt-get update -y
sudo apt-get -y install g++ cmake-data cmake ninja-build libzmq3-dev liblog4cxx-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libboost-date-time-dev libboost-program-options-dev libcurl4-openssl-dev
- name: Install RapidJSON
run: |
set -e
git clone https://github.com/Tencent/rapidjson.git && mkdir rapidjson/build
cd rapidjson/build
# there are no stable version available
cmake .. -GNinja -DRAPIDJSON_HAS_STDSTRING=ON -DRAPIDJSON_BUILD_DOC=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF -DRAPIDJSON_BUILD_TESTS=OFF
ninja -j4 && sudo ninja install
cd ../..
- name: Install
run: |
set -e
mkdir -p build
cd build
cmake .. -GNinja -DOPT_SAMPLES=OFF -DOPT_BUILD_TESTS=OFF
ninja -j4 && sudo ninja install
cd ..
48 changes: 48 additions & 0 deletions .github/workflows/build_windows.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Build Windows

on:
push:

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-2022]
architecture: ["x64"]

steps:
- uses: actions/checkout@v3
- uses: microsoft/[email protected]
- name: Set up Boost
run: |
choco install boost-msvc-14.3 -f -y
- name: Set up curl
run: |
curl -O -L https://curl.se/windows/dl-8.5.0_1/curl-8.5.0_1-win64-mingw.zip
7z x -y curl-8.5.0_1-win64-mingw.zip
- name: Install RapidJSON
run: |
git clone https://github.com/Tencent/rapidjson.git && mkdir rapidjson\build
cd rapidjson\build
# there are no stable version available
# but take the last version without -targets.cmake
git checkout 516d0473949fdcf0a6dc9fbb40fa92b3b85db184
cmake .. -G 'Visual Studio 17 2022' -A x64 -DRAPIDJSON_HAS_STDSTRING=ON -DRAPIDJSON_BUILD_DOC=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF -DRAPIDJSON_BUILD_TESTS=OFF
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
cd ..\..
- name: Install libzmq

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're maintaining this approach, should we also get rid of the msvc_binaries?

run: |
git clone https://github.com/zeromq/libzmq.git && mkdir libzmq\build
cd libzmq\build
git checkout v4.3.5
cmake .. -G 'Visual Studio 17 2022' -A x64 -DBUILD_TESTS=OFF
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
cd ..\..
- name: Install
run: |
mkdir -p build
cd build
cmake .. -G 'Visual Studio 17 2022' -A x64 -DCMAKE_CXX_STANDARD=11 "-DZeroMQ_DIR=${PWD}\..\libzmq\build" "-DCURL_INCLUDE_DIR=${PWD}\..\curl-8.5.0_1-win64-mingw\include" "-DCURL_LIBRARY=${PWD}\..\curl-8.5.0_1-win64-mingw\lib\libcurl.dll.a" -DCMAKE_CONFIGURATION_TYPES=Release -DOPT_SAMPLES=OFF -DOPT_BUILD_TESTS=OFF
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
cd ..
4 changes: 4 additions & 0 deletions include/mujincontrollerclient/mujinjson.h
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,7 @@ inline void LoadJsonValue(const rapidjson::Value& v, unsigned long long& t) {
}
}

#ifndef _MSC_VER

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we #include <stdint.h> instead? Based on https://stackoverflow.com/questions/13604137/definition-of-int64-t

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hemangandhi The thing is, there exists a branch which supports VC2010 https://github.com/mujin/controllerclientcpp/tree/savebackup and VC2010 does not support <stdint.h>.

inline void LoadJsonValue(const rapidjson::Value& v, uint64_t& t) {
if (v.IsUint64()) {
t = v.GetUint64();
Expand All @@ -381,6 +382,7 @@ inline void LoadJsonValue(const rapidjson::Value& v, int64_t& t) {
throw MujinJSONException("Cannot convert json type " + GetJsonString(v) + " to Int64");
}
}
#endif

inline void LoadJsonValue(const rapidjson::Value& v, double& t) {
if (v.IsNumber()) {
Expand Down Expand Up @@ -576,9 +578,11 @@ inline void SaveJsonValue(rapidjson::Value& v, long long t, rapidjson::Document:
v.SetInt64(t);
}

#ifndef _MSC_VER
inline void SaveJsonValue(rapidjson::Value& v, int64_t t, rapidjson::Document::AllocatorType& alloc) {
v.SetInt64(t);
}
#endif

inline void SaveJsonValue(rapidjson::Value& v, unsigned long long t, rapidjson::Document::AllocatorType& alloc) {
v.SetUint64(t);
Expand Down
10 changes: 10 additions & 0 deletions src/mujinjson.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,17 @@

#include <fcntl.h>
#include <sys/stat.h>

#if defined(_WIN32)
#include <io.h>
#else
#include <unistd.h>
#endif

#if defined(_MSC_VER)
#include <BaseTsd.h>
typedef SSIZE_T ssize_t;
#endif

namespace mujinjson {

Expand Down