aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2015-09-13 21:15:43 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2015-09-13 21:15:43 +0200
commita1489efb0dfebac4173081733dbefc35fc0bc895 (patch)
treebf2ab8c121d29c206ae62b030e6b23135ac0a212
parent2a47185e0066ffb9b96c4f13be6a564ed62174f0 (diff)
parent89f71bcbc8aa061c0d99f5d3344cf78cd7e5e17f (diff)
downloadka9q-fec-a1489efb0dfebac4173081733dbefc35fc0bc895.tar.gz
ka9q-fec-a1489efb0dfebac4173081733dbefc35fc0bc895.tar.bz2
ka9q-fec-a1489efb0dfebac4173081733dbefc35fc0bc895.zip
Merge remote-tracking branch 'mnhauke/master'
-rw-r--r--CMakeLists.txt107
-rw-r--r--cmake/Modules/Version.cmake2
2 files changed, 91 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 80e9db4..a515303 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@
# Project setup
########################################################################
cmake_minimum_required(VERSION 2.8)
-project(libfec C)
+project(libfec ASM C)
# Select the release build type by default to get optimization flags
if(NOT CMAKE_BUILD_TYPE)
@@ -62,13 +62,26 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANGCC)
add_definitions(-Wno-unused)
if(TARGET_ARCH MATCHES "x64")
+ add_definitions(-fPIC)
+ add_definitions(-msse2)
+ elseif(TARGET_ARCH MATCHES "x86")
+ add_definitions(-mmmx)
+ add_definitions(-msse)
add_definitions(-msse2)
elseif(TARGET_ARCH MATCHES "ppc|ppc64")
- add_definitions(-fno-common -faltivec)
+ add_definitions(-fno-common)
+ add_definitions(-faltivec)
endif()
endif()
+########################################################################
+# Find build dependencies
+########################################################################
+
+# libm
+find_library(M_LIB m REQUIRED)
+
########################################################################
# config.h
@@ -94,6 +107,7 @@ check_function_exists("memmove" HAVE_MEMMOVE)
########################################################################
# Setup apps
########################################################################
+
if(TARGET_ARCH MATCHES "x64")
list(APPEND libfec_sources
dotprod_port.c
@@ -101,22 +115,19 @@ if(TARGET_ARCH MATCHES "x64")
sumsq.c
sumsq_port.c
cpu_mode_x86_64.c
+ ##asm
+ #sse2bfly27-64.s
+ #sse2bfly29-64.s
)
elseif(TARGET_ARCH MATCHES "x86")
list(APPEND libfec_sources
viterbi27_mmx.c
- mmxbfly27.c
viterbi27_sse.c
- ssebfly27.c
viterbi27_sse2.c
- sse2bfly27.c
viterbi29_mmx.c
- mmxbfly29.c
viterbi29_sse.c
- ssebfly29.c
viterbi29_sse2.c
- sse2bfly29.c
viterbi39_sse2.c
viterbi39_sse.c
viterbi39_mmx.c
@@ -124,23 +135,33 @@ elseif(TARGET_ARCH MATCHES "x86")
viterbi615_sse.c
viterbi615_sse2.c
dotprod_mmx.c
- dotprod_mmx_assist.c
dotprod_sse2.c
- dotprod_sse2_assist.c
peakval_mmx.c
- peakval_mmx_assist.c
peakval_sse.c
- peakval_sse_assist.c
peakval_sse2.c
- peakval_sse2_assist.c
sumsq.c
sumsq_port.c
sumsq_sse2.c
- sumsq_sse2_assist.c
sumsq_mmx.c
- sumsq_mmx_assist.c
- cpu_features.c
cpu_mode_x86.c
+ #asm
+ cpu_features.s
+ dotprod_mmx_assist.s
+ dotprod_sse2_assist.s
+ mmxbfly27.s
+ mmxbfly29.s
+ peak_mmx_assist.s
+ peak_sse2_assist.s
+ peak_sse_assist.s
+ peakval_mmx_assist.s
+ peakval_sse2_assist.s
+ peakval_sse_assist.s
+ sse2bfly27.s
+ sse2bfly29.s
+ ssebfly27.s
+ ssebfly29.s
+ sumsq_mmx_assist.s
+ sumsq_sse2_assist.s
)
elseif(TARGET_ARCH MATCHES "ppc|ppc64")
@@ -163,6 +184,37 @@ else()
endif()
+list(APPEND libfec_sources
+ fec.c
+ sim.c
+ viterbi27.c
+ viterbi27_port.c
+ viterbi29.c
+ viterbi29_port.c
+ viterbi39.c
+ viterbi39_port.c
+ viterbi615.c
+ viterbi615_port.c
+ encode_rs_char.c
+ encode_rs_int.c
+ encode_rs_8.c
+ decode_rs_char.c
+ decode_rs_int.c
+ decode_rs_8.c
+ init_rs_char.c
+ init_rs_int.c
+ encode_rs_ccsds.c
+ decode_rs_ccsds.c
+ dotprod.c
+ dotprod_port.c
+ peakval.c
+ peakval_port.c
+ sumsq.c
+ sumsq_port.c
+ ccsds_tab.c
+ ccsds_tal.c
+)
+
################################################################################
# Generate pkg-config file
@@ -207,12 +259,32 @@ install(
########################################################################
# Setup libraries
########################################################################
+
+# generate ccsds_tab.c
+add_executable(gen_ccsds gen_ccsds.c init_rs_char.c)
+add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/ccsds_tab.c
+ COMMAND ${CMAKE_BINARY_DIR}/gen_ccsds > ccsds_tab.c
+ DEPENDS gen_ccsds
+)
+
+# generate ccsds_tal.c
+add_executable(gen_ccsds_tal gen_ccsds_tal.c)
+add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/ccsds_tal.c
+ COMMAND ${CMAKE_BINARY_DIR}/gen_ccsds_tal > ccsds_tal.c
+ DEPENDS gen_ccsds_tal
+)
+
+# libfec
add_library(libfec_shared SHARED ${libfec_sources})
set_target_properties(libfec_shared PROPERTIES OUTPUT_NAME fec)
set_target_properties(libfec_shared PROPERTIES SOVERSION ${VERSION_INFO_MAJOR})
+target_link_libraries(libfec_shared ${M_LIB})
+
install(TARGETS libfec_shared
- DESTINATION lib)
+ DESTINATION ${LIB_INSTALL_DIR})
install(FILES "${PROJECT_SOURCE_DIR}/fec.h"
DESTINATION include)
@@ -235,6 +307,7 @@ add_custom_target(uninstall
message(STATUS "")
message(STATUS "##########################################################")
message(STATUS "## Building for version: ${VERSION}")
+message(STATUS "## Target Architecture: ${TARGET_ARCH}")
message(STATUS "## Using install prefix: ${CMAKE_INSTALL_PREFIX}")
message(STATUS "##########################################################")
message(STATUS "")
diff --git a/cmake/Modules/Version.cmake b/cmake/Modules/Version.cmake
index 96ee6b7..e8d5bd5 100644
--- a/cmake/Modules/Version.cmake
+++ b/cmake/Modules/Version.cmake
@@ -84,7 +84,7 @@ if(GIT_FOUND)
endif()
else()
- message(WARNING "git missing -- unable to check libladeRF version.")
+ message(WARNING "git missing -- unable to check libfec version.")
unset(NOT_GIT_REPOSITORY)
unset(GIT_REV)
unset(GIT_DIRTY)