From 65d43393ede4f350b4868b747dac38fddb9ec859 Mon Sep 17 00:00:00 2001 From: Steve Markgraf Date: Tue, 17 Apr 2018 00:23:07 +0200 Subject: initial commit Signed-off-by: Steve Markgraf --- CMakeLists.txt | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 CMakeLists.txt (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..813e5c7 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,160 @@ +# Copyright 2018 Osmocom Project +# +# This file is part of osmo-fl2k +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +######################################################################## +# Project setup +######################################################################## +cmake_minimum_required(VERSION 2.6) +project(libosmo-fl2k C) + +#select the release build type by default to get optimization flags +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") + message(STATUS "Build type not specified: defaulting to release.") +endif(NOT CMAKE_BUILD_TYPE) +set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) + +if(NOT LIB_INSTALL_DIR) + set(LIB_INSTALL_DIR lib) +endif() + +# Set the version information here +set(VERSION_INFO_MAJOR_VERSION 0) # increment major on api compatibility changes +set(VERSION_INFO_MINOR_VERSION 1) # increment minor on feature-level changes +set(VERSION_INFO_PATCH_VERSION git) # increment patch for bug fixes and docs +include(Version) # setup version info + +######################################################################## +# Compiler specific setup +######################################################################## +if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) + ADD_DEFINITIONS(-Wall) + ADD_DEFINITIONS(-Wextra) + ADD_DEFINITIONS(-Wno-unused-parameter) + ADD_DEFINITIONS(-Wno-unused) + ADD_DEFINITIONS(-Wsign-compare) + ADD_DEFINITIONS(-Wdeclaration-after-statement) + #http://gcc.gnu.org/wiki/Visibility + add_definitions(-fvisibility=hidden) +endif() + +######################################################################## +# Find build dependencies +######################################################################## +find_package(PkgConfig) +find_package(LibUSB) +set(THREADS_USE_PTHREADS_WIN32 true) +find_package(Threads) + +if(NOT LIBUSB_FOUND) + message(FATAL_ERROR "LibUSB 1.0 required to compile libosmo-fl2k") +endif() +if(NOT THREADS_FOUND) + message(FATAL_ERROR "pthreads(-win32) required to compile libosmo-fl2k") +endif() +######################################################################## +# Setup the include and linker paths +######################################################################## +include_directories( + ${CMAKE_SOURCE_DIR}/include + ${LIBUSB_INCLUDE_DIR} + ${THREADS_PTHREADS_INCLUDE_DIR} +) + +#link_directories( +# ... +#) + +# Set component parameters +#set(INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE INTERNAL "" FORCE) + +######################################################################## +# Create uninstall target +######################################################################## +configure_file( + ${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake +@ONLY) + +add_custom_target(uninstall + ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake +) + +######################################################################## +# Install udev rules +######################################################################## +option(INSTALL_UDEV_RULES "Install udev rules for libosmo-fl2k" OFF) +if (INSTALL_UDEV_RULES) + install ( + FILES osmo-fl2k.rules + DESTINATION "/etc/udev/rules.d" + COMPONENT "udev" + ) +else (INSTALL_UDEV_RULES) + message (STATUS "Udev rules not being installed, install them with -DINSTALL_UDEV_RULES=ON") +endif (INSTALL_UDEV_RULES) + +######################################################################## +# Add subdirectories +######################################################################## +add_subdirectory(include) +add_subdirectory(src) + +######################################################################## +# Create Pkg Config File +######################################################################## +FOREACH(inc ${LIBUSB_INCLUDE_DIR}) + LIST(APPEND FL2K_PC_CFLAGS "-I${inc}") +ENDFOREACH(inc) + +FOREACH(lib ${LIBUSB_LIBRARY_DIRS}) + LIST(APPEND FL2K_PC_LIBS "-L${lib}") +ENDFOREACH(lib) + +# use space-separation format for the pc file +STRING(REPLACE ";" " " FL2K_PC_CFLAGS "${FL2K_PC_CFLAGS}") +STRING(REPLACE ";" " " FL2K_PC_LIBS "${FL2K_PC_LIBS}") + +# unset these vars to avoid hard-coded paths to cross environment +IF(CMAKE_CROSSCOMPILING) + UNSET(FL2K_PC_CFLAGS) + UNSET(FL2K_PC_LIBS) +ENDIF(CMAKE_CROSSCOMPILING) + +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix \${prefix}) +set(libdir \${exec_prefix}/${LIB_INSTALL_DIR}) +set(includedir \${prefix}/include) + +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/libosmo-fl2k.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/libosmo-fl2k.pc +@ONLY) + +INSTALL( + FILES ${CMAKE_CURRENT_BINARY_DIR}/libosmo-fl2k.pc + DESTINATION ${LIB_INSTALL_DIR}/pkgconfig +) + +######################################################################## +# Print Summary +######################################################################## +MESSAGE(STATUS "Building for version: ${VERSION} / ${LIBVER}") +MESSAGE(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}") -- cgit v1.2.3