CMake first pass (#90)
* CMake first pass * canbusload dep fix * Add Eclipse Debug, and Android Studio generation examples * travis additions * Update .travis.yml CMAKE_BUILT_TYPE typo fix * add android ndk variants(less mips)pull/93/merge
parent
47f2e7a180
commit
8a3e0453aa
75
.travis.yml
75
.travis.yml
|
|
@ -20,6 +20,79 @@ matrix:
|
||||||
compiler: clang
|
compiler: clang
|
||||||
script: ./autogen.sh && ./configure && make distcheck
|
script: ./autogen.sh && ./configure && make distcheck
|
||||||
|
|
||||||
|
- env: test="x64 4.8.4 (CMake gcc)"
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: gcc
|
||||||
|
before_script:
|
||||||
|
- mkdir gcc_rel && cd gcc_rel
|
||||||
|
- cmake ..
|
||||||
|
script: make
|
||||||
|
|
||||||
|
- env: test="x64 5.0 (CMake clang)"
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
before_script:
|
||||||
|
- mkdir clang_rel && cd clang_rel
|
||||||
|
- cmake ..
|
||||||
|
script: make
|
||||||
|
|
||||||
|
- env: test="x64 5.0 (CMake clang - Ninja) Debug"
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: clang
|
||||||
|
before_script:
|
||||||
|
- mkdir clang_ninja_dbg && cd clang_ninja_dbg
|
||||||
|
- cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug
|
||||||
|
script: ninja
|
||||||
|
|
||||||
|
- env: test="Android NDK (CMake)"
|
||||||
|
os: linux
|
||||||
|
language: android
|
||||||
|
android:
|
||||||
|
components:
|
||||||
|
- build-tools-25.0.2
|
||||||
|
install:
|
||||||
|
- echo y | sdkmanager "ndk-bundle"
|
||||||
|
- echo y | sdkmanager "cmake;3.6.4111459"
|
||||||
|
before_script:
|
||||||
|
- export ANDROID_NDK_HOME=$ANDROID_HOME/ndk-bundle
|
||||||
|
- export ANDROID_CMAKE=$ANDROID_HOME/cmake/3.6.4111459/bin/cmake
|
||||||
|
- export ANDROID_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake
|
||||||
|
script:
|
||||||
|
- pushd . && mkdir android15_armeabiv7a_rel && cd android15_armeabiv7a_rel
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-15 -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
|
- pushd . && mkdir android15_x86_rel && cd android15_x86_rel
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-15 -DANDROID_ABI=x86 -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
|
- pushd . && mkdir android21_arm64-v8a_rel && cd android21_arm64-v8a_rel
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-21 -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
|
- pushd . && mkdir android21_x86_64_rel && cd android21_x86_64_rel
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-21 -DANDROID_ABI=x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
|
- pushd . && mkdir android15_armeabiv7a_dbg && cd android15_armeabiv7a_dbg
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-15 -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
|
- pushd . && mkdir android15_x86_dbg && cd android15_x86_dbg
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-15 -DANDROID_ABI=x86 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
|
- pushd . && mkdir android21_arm64-v8a_dbg && cd android21_arm64-v8a_dbg
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-21 -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
|
- pushd . && mkdir android21_x86_64_dbg && cd android21_x86_64_dbg
|
||||||
|
- $ANDROID_CMAKE -DANDROID_PLATFORM=android-21 -DANDROID_ABI=x86_64 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN_FILE ..
|
||||||
|
- make && popd
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
|
|
@ -27,5 +100,7 @@ addons:
|
||||||
- automake
|
- automake
|
||||||
- libtool
|
- libtool
|
||||||
- m4
|
- m4
|
||||||
|
- cmake
|
||||||
|
- ninja-build
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
cmake_minimum_required(VERSION 3.3)
|
||||||
|
|
||||||
|
project(can-utils LANGUAGES C)
|
||||||
|
|
||||||
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
add_definitions(-D_GNU_SOURCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-parentheses")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSO_RXQ_OVFL=40")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPF_CAN=29")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DAF_CAN=PF_CAN")
|
||||||
|
|
||||||
|
include_directories (.)
|
||||||
|
include_directories (./include)
|
||||||
|
|
||||||
|
set(PROGRAMS_ISOTP isotpdump isotprecv isotpsend isotpsniffer
|
||||||
|
isotptun isotpserver isotpperf)
|
||||||
|
set(PROGRAMS_CANGW cangw)
|
||||||
|
set(PROGRAMS_SLCAN slcan_attach slcand)
|
||||||
|
set(PROGRAMS_J1939 jacd jspy jsr testj1939)
|
||||||
|
set(PROGRAMS_CANLIB cansend cangen candump canplayer canlogserver
|
||||||
|
canbusload log2long log2asc asc2log)
|
||||||
|
|
||||||
|
set(PROGRAMS can-calc-bit-timing cansniffer bcmserver
|
||||||
|
${PROGRAMS_CANLIB}
|
||||||
|
${PROGRAMS_ISOTP}
|
||||||
|
${PROGRAMS_CANGW}
|
||||||
|
${PROGRAMS_SLCAN}
|
||||||
|
slcanpty canfdtest
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT ANDROID)
|
||||||
|
list(APPEND PROGRAMS ${PROGRAMS_J1939})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
foreach(name ${PROGRAMS})
|
||||||
|
set(SRC_DEPS)
|
||||||
|
if("${name}" STREQUAL "canbusload")
|
||||||
|
set(SRC_DEPS canframelen.c)
|
||||||
|
elseif("${name}" IN_LIST PROGRAMS_J1939)
|
||||||
|
set(SRC_DEPS libj1939.c)
|
||||||
|
elseif("${name}" IN_LIST PROGRAMS_CANLIB)
|
||||||
|
set(SRC_DEPS lib.c)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_executable(${name} ${name}.c ${SRC_DEPS})
|
||||||
|
install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
|
||||||
|
ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake")
|
||||||
11
README.md
11
README.md
|
|
@ -47,6 +47,17 @@ subsystem (aka SocketCAN):
|
||||||
* slcand : daemon for serial line CAN interface configuration
|
* slcand : daemon for serial line CAN interface configuration
|
||||||
* slcanpty : creates a pty for applications using the slcan ASCII protocol
|
* slcanpty : creates a pty for applications using the slcan ASCII protocol
|
||||||
|
|
||||||
|
#### CMake Project Generator
|
||||||
|
* Place your build folder anywhere, passing CMake the path. Relative or absolute.
|
||||||
|
* Some examples using a build folder under the source tree root:
|
||||||
|
* Android : cmake -DCMAKE_TOOLCHAIN_FILE=/home/joel/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-21 -DANDROID_ABI=armeabi-v7a .. && make
|
||||||
|
* Android Studio : Copy repo under your project's "app" folder, add "add_subdirectory(can-utils)" to your CMakeLists.txt file after "cmake_minimum_required()". Generating project will build Debug/Release for all supported EABI types. ie. arm64-v8a, armeabi-v7a, x86, x86_64.
|
||||||
|
* Raspberry Pi : cmake -DCMAKE_TOOLCHAIN_FILE=/home/joel/rpi/tools/build/cmake/rpi.toolchain.cmake .. && make
|
||||||
|
* Linux : cmake -GNinja .. && ninja
|
||||||
|
* Linux Eclipse Photon (Debug) : CC=clang cmake -G"Eclipse CDT4 - Unix Makefiles" ../can-utils/ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_ECLIPSE_VERSION=4.8.0
|
||||||
|
* To override the base installation directory use: CMAKE_INSTALL_PREFIX
|
||||||
|
* ie. CC=clang cmake -DCMAKE_INSTALL_PREFIX=./out .. && make install
|
||||||
|
|
||||||
### Additional Information:
|
### Additional Information:
|
||||||
|
|
||||||
* [SocketCAN Documentation (Linux Kernel)](https://www.kernel.org/doc/Documentation/networking/can.txt)
|
* [SocketCAN Documentation (Linux Kernel)](https://www.kernel.org/doc/Documentation/networking/can.txt)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt")
|
||||||
|
message(FATAL_ERROR "Cannot find install manifest: ${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
file(READ "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt" files)
|
||||||
|
string(REGEX REPLACE "[\r\n]" ";" files "${files}")
|
||||||
|
|
||||||
|
foreach(file ${files})
|
||||||
|
message(STATUS "Uninstalling ${file}")
|
||||||
|
if(EXISTS "${file}")
|
||||||
|
file(REMOVE ${file})
|
||||||
|
if (EXISTS "${file}")
|
||||||
|
message(FATAL_ERROR "Problem when removing ${file}, please check your permissions")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(STATUS "File ${file} does not exist.")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
Loading…
Reference in New Issue