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
|
||||
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:
|
||||
apt:
|
||||
packages:
|
||||
|
|
@ -27,5 +100,7 @@ addons:
|
|||
- automake
|
||||
- libtool
|
||||
- m4
|
||||
- cmake
|
||||
- ninja-build
|
||||
sources:
|
||||
- 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
|
||||
* 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:
|
||||
|
||||
* [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