diff options
Diffstat (limited to 'gnuradio-core')
20 files changed, 2185 insertions, 0 deletions
diff --git a/gnuradio-core/CMakeLists.txt b/gnuradio-core/CMakeLists.txt new file mode 100644 index 000000000..102e64274 --- /dev/null +++ b/gnuradio-core/CMakeLists.txt @@ -0,0 +1,159 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# Setup dependencies +######################################################################## +INCLUDE(GrBoost) + +FIND_PACKAGE(GSL) + +FIND_PACKAGE(FFTW3f) + +INCLUDE(GrPython) #used for code generation + +GET_FILENAME_COMPONENT(GR_CORE_PYTHONPATH + ${CMAKE_CURRENT_SOURCE_DIR}/src/python ABSOLUTE +) +GR_SET_GLOBAL(GR_CORE_PYTHONPATH ${GR_CORE_PYTHONPATH}) + +######################################################################## +# Register component +######################################################################## +INCLUDE(GrComponent) +GR_REGISTER_COMPONENT("gnuradio-core" ENABLE_GR_CORE + ENABLE_GRUEL_ + Boost_FOUND + GSL_FOUND + FFTW3F_FOUND + PYTHONINTERP_FOUND +) + +INCLUDE(GrMiscUtils) +GR_SET_GLOBAL(GNURADIO_CORE_INCLUDE_DIRS + ${GRUEL_INCLUDE_DIRS} #headers depend on gruel + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/runtime + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/general + ${CMAKE_CURRENT_BINARY_DIR}/src/lib/general + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/gengen + ${CMAKE_CURRENT_BINARY_DIR}/src/lib/gengen + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/filter + ${CMAKE_CURRENT_BINARY_DIR}/src/lib/filter + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/missing + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/reed-solomon + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/viterbi + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/io + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/g72x + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/swig + ${CMAKE_CURRENT_BINARY_DIR}/src/lib/swig + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/hier +) + +GR_SET_GLOBAL(GNURADIO_CORE_SWIG_INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/swig + ${GNURADIO_CORE_INCLUDE_DIRS} +) + +######################################################################## +# Begin conditional configuration +######################################################################## +IF(ENABLE_GR_CORE) + +######################################################################## +# Setup CPack components +######################################################################## +INCLUDE(GrPackage) +CPACK_SET(CPACK_COMPONENT_GROUP_CORE_DESCRIPTION "The GNU Radio Core Library") + +CPACK_COMPONENT("core_runtime" + GROUP "Core" + DISPLAY_NAME "Runtime" + DESCRIPTION "Runtime" + DEPENDS "gruel_runtime" +) + +CPACK_COMPONENT("core_devel" + GROUP "Core" + DISPLAY_NAME "Development" + DESCRIPTION "C++ headers, package config, import libraries" + DEPENDS "gruel_devel" +) + +CPACK_COMPONENT("core_python" + GROUP "Core" + DISPLAY_NAME "Python" + DESCRIPTION "Python modules for runtime; GRC xml files" + DEPENDS "gruel_python;core_runtime" +) + +CPACK_COMPONENT("core_swig" + GROUP "Core" + DISPLAY_NAME "SWIG" + DESCRIPTION "SWIG development .i files" + DEPENDS "gruel_swig;core_python;core_devel" +) + +INSTALL( + FILES gnuradio-core.conf + DESTINATION ${GR_PKG_CONF_DIR} + COMPONENT "core_runtime" +) + +######################################################################## +# Add subdirectories +######################################################################## +ADD_SUBDIRECTORY(src/lib) +IF(ENABLE_TESTING) + ADD_SUBDIRECTORY(src/tests) +ENDIF(ENABLE_TESTING) +IF(ENABLE_PYTHON) + ADD_SUBDIRECTORY(src/lib/swig) + ADD_SUBDIRECTORY(src/python/gnuradio) +ENDIF(ENABLE_PYTHON) + +######################################################################## +# Create Pkg Config File +######################################################################## +FILE(TO_NATIVE_PATH "\${prefix}/${GR_INCLUDE_DIR}/gnuradio" includedir) #different from other gr modules +FILE(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_DATA_DIR}/guile/site" guile_load_path) #screw this... + +FOREACH(boost_include ${Boost_INCLUDE_DIRS}) + SET(BOOST_CXXFLAGS "-I${boost_include} ${BOOST_CXXFLAGS}") +ENDFOREACH(boost_include) + +FOREACH(boost_libdir ${Boost_LIBRARY_DIRS}) + SET(BOOST_LDFLAGS "-L${boost_libdir} ${BOOST_LDFLAGS}") +ENDFOREACH(boost_libdir) + +FOREACH(boost_ldflag ${Boost_LIBRARIES}) + SET(BOOST_LDFLAGS "${boost_ldflag} ${BOOST_LDFLAGS}") +ENDFOREACH(boost_ldflag) + +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio-core.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-core.pc +@ONLY) + +INSTALL( + FILES ${CMAKE_CURRENT_BINARY_DIR}/gnuradio-core.pc + DESTINATION ${GR_LIBRARY_DIR}/pkgconfig + COMPONENT "core_devel" +) + +ENDIF(ENABLE_GR_CORE) diff --git a/gnuradio-core/src/lib/CMakeLists.txt b/gnuradio-core/src/lib/CMakeLists.txt new file mode 100644 index 000000000..060421a9f --- /dev/null +++ b/gnuradio-core/src/lib/CMakeLists.txt @@ -0,0 +1,100 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# Setup compatibility checks and defines +######################################################################## +INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/ConfigChecks.cmake) + +######################################################################## +# Include subdirs rather to populate to the sources lists. +######################################################################## +GR_INCLUDE_SUBDIRECTORY(missing) +GR_INCLUDE_SUBDIRECTORY(runtime) +GR_INCLUDE_SUBDIRECTORY(filter) +GR_INCLUDE_SUBDIRECTORY(viterbi) +GR_INCLUDE_SUBDIRECTORY(general) +GR_INCLUDE_SUBDIRECTORY(gengen) +GR_INCLUDE_SUBDIRECTORY(reed-solomon) +GR_INCLUDE_SUBDIRECTORY(io) +GR_INCLUDE_SUBDIRECTORY(hier) + +LIST(APPEND gnuradio_core_sources bug_work_around_6.cc) +LIST(APPEND test_gnuradio_core_sources bug_work_around_6.cc) + +######################################################################## +# Setup the include and linker paths +######################################################################## +INCLUDE_DIRECTORIES(${GNURADIO_CORE_INCLUDE_DIRS}) + +INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) +LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) + +ADD_DEFINITIONS(-DGSL_DLL) #needed for gsl windows port but safe to always define +INCLUDE_DIRECTORIES(${GSL_INCLUDE_DIRS}) +LINK_DIRECTORIES(${GSL_LIBRARY_DIRS}) + +INCLUDE_DIRECTORIES(${FFTW3F_INCLUDE_DIRS}) +LINK_DIRECTORIES(${FFTW3F_LIBRARY_DIRS}) + +######################################################################## +# Setup library +######################################################################## +LIST(APPEND gnuradio_core_libs + gruel + ${Boost_LIBRARIES} + ${GSL_LIBRARIES} + ${FFTW3F_LIBRARIES} +) + +ADD_DEFINITIONS(${GR_COMMON_FLAGS_AND_DEFINES}) +ADD_LIBRARY(gnuradio-core SHARED ${gnuradio_core_sources}) +TARGET_LINK_LIBRARIES(gnuradio-core ${gnuradio_core_libs}) +SET_TARGET_PROPERTIES(gnuradio-core PROPERTIES DEFINE_SYMBOL "gnuradio_core_EXPORTS") +SET_TARGET_PROPERTIES(gnuradio-core PROPERTIES SOVERSION ${LIBVER}) + +INSTALL(TARGETS gnuradio-core + LIBRARY DESTINATION ${GR_LIBRARY_DIR} COMPONENT "core_runtime" # .so/.dylib file + ARCHIVE DESTINATION ${GR_LIBRARY_DIR} COMPONENT "core_devel" # .lib file + RUNTIME DESTINATION ${GR_RUNTIME_DIR} COMPONENT "core_runtime" # .dll file +) + +######################################################################## +# Setup executables +######################################################################## +ADD_EXECUTABLE(gnuradio-config-info gnuradio-config-info.cc) +TARGET_LINK_LIBRARIES(gnuradio-config-info gnuradio-core) +INSTALL( + TARGETS gnuradio-config-info + DESTINATION ${GR_RUNTIME_DIR} + COMPONENT "core_runtime" +) + +######################################################################## +# Setup tests +######################################################################## +IF(ENABLE_TESTING) + +INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIRS}) +LINK_DIRECTORIES(${CPPUNIT_LIBRARY_DIRS}) + +ADD_LIBRARY(test-gnuradio-core SHARED ${test_gnuradio_core_sources}) +TARGET_LINK_LIBRARIES(test-gnuradio-core gnuradio-core ${CPPUNIT_LIBRARIES}) + +ENDIF(ENABLE_TESTING) diff --git a/gnuradio-core/src/lib/ConfigChecks.cmake b/gnuradio-core/src/lib/ConfigChecks.cmake new file mode 100644 index 000000000..30a1011e4 --- /dev/null +++ b/gnuradio-core/src/lib/ConfigChecks.cmake @@ -0,0 +1,212 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +INCLUDE(GrMiscUtils) +INCLUDE(CheckCXXSourceCompiles) + +IF(MSVC) #add this directory for our provided headers +LIST(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/msvc) +ENDIF(MSVC) + +GR_CHECK_HDR_N_DEF(netdb.h HAVE_NETDB_H) +GR_CHECK_HDR_N_DEF(sys/time.h HAVE_SYS_TIME_H) +GR_CHECK_HDR_N_DEF(sys/types.h HAVE_SYS_TYPES_H) +GR_CHECK_HDR_N_DEF(sys/select.h HAVE_SYS_SELECT_H) +GR_CHECK_HDR_N_DEF(sys/socket.h HAVE_SYS_SOCKET_H) +GR_CHECK_HDR_N_DEF(io.h HAVE_IO_H) +GR_CHECK_HDR_N_DEF(sys/mman.h HAVE_SYS_MMAN_H) +GR_CHECK_HDR_N_DEF(sys/ipc.h HAVE_SYS_IPC_H) +GR_CHECK_HDR_N_DEF(sys/shm.h HAVE_SYS_SHM_H) +GR_CHECK_HDR_N_DEF(signal.h HAVE_SIGNAL_H) +GR_CHECK_HDR_N_DEF(netinet/in.h HAVE_NETINET_IN_H) +GR_CHECK_HDR_N_DEF(arpa/inet.h HAVE_ARPA_INET_H) +GR_CHECK_HDR_N_DEF(byteswap.h HAVE_BYTESWAP_H) +GR_CHECK_HDR_N_DEF(linux/ppdev.h HAVE_LINUX_PPDEV_H) +GR_CHECK_HDR_N_DEF(dev/ppbus/ppi.h HAVE_DEV_PPBUS_PPI_H) +GR_CHECK_HDR_N_DEF(unistd.h HAVE_UNISTD_H) +GR_CHECK_HDR_N_DEF(malloc.h HAVE_MALLOC_H) + + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <stdio.h> + int main(){snprintf(0, 0, 0); return 0;} + " HAVE_SNPRINTF +) +GR_ADD_COND_DEF(HAVE_SNPRINTF) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <signal.h> + int main(){sigaction(0, 0, 0); return 0;} + " HAVE_SIGACTION +) +GR_ADD_COND_DEF(HAVE_SIGACTION) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/select.h> + int main(){select(0, 0, 0, 0, 0); return 0;} + " HAVE_SELECT +) +GR_ADD_COND_DEF(HAVE_SELECT) + + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <unistd.h> + int main(){sysconf(0); return 0;} + " HAVE_SYSCONF +) +GR_ADD_COND_DEF(HAVE_SYSCONF) + +CHECK_CXX_SOURCE_COMPILES(" + #include <unistd.h> + int main(){getpagesize(); return 0;} + " HAVE_GETPAGESIZE +) +GR_ADD_COND_DEF(HAVE_GETPAGESIZE) + + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <Winbase.h> + int main(){Sleep(0); return 0;} + " HAVE_SSLEEP +) +GR_ADD_COND_DEF(HAVE_SSLEEP) + +CHECK_CXX_SOURCE_COMPILES(" + #include <time.h> + int main(){nanosleep(0, 0); return 0;} + " HAVE_NANOSLEEP +) +GR_ADD_COND_DEF(HAVE_NANOSLEEP) + +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/time.h> + int main(){gettimeofday(0, 0); return 0;} + " HAVE_GETTIMEOFDAY +) +GR_ADD_COND_DEF(HAVE_GETTIMEOFDAY) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <stdlib.h> + int main(){posix_memalign(0, 0, 0); return 0;} + " HAVE_POSIX_MEMALIGN +) +GR_ADD_COND_DEF(HAVE_POSIX_MEMALIGN) + +CHECK_CXX_SOURCE_COMPILES(" + #include <malloc.h> + int main(){valloc(0); return 0;} + " HAVE_VALLOC +) +GR_ADD_COND_DEF(HAVE_VALLOC) + +ADD_DEFINITIONS(-DALIGNED_MALLOC=0) + +######################################################################## +SET(CMAKE_REQUIRED_LIBRARIES -lpthread) +CHECK_CXX_SOURCE_COMPILES(" + #include <signal.h> + int main(){pthread_sigmask(0, 0, 0); return 0;} + " HAVE_PTHREAD_SIGMASK +) +GR_ADD_COND_DEF(HAVE_PTHREAD_SIGMASK) +SET(CMAKE_REQUIRED_LIBRARIES) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <windows.h> + int main(){ + HANDLE handle; + int size; + LPCTSTR lpName; + handle = CreateFileMapping( + INVALID_HANDLE_VALUE, // use paging file + NULL, // default security + PAGE_READWRITE, // read/write access + 0, // max. object size + size, // buffer size + lpName); // name of mapping object + return 0; + } " HAVE_CREATEFILEMAPPING +) +GR_ADD_COND_DEF(HAVE_CREATEFILEMAPPING) + +######################################################################## +CHECK_INCLUDE_FILE_CXX(windows.h HAVE_WINDOWS_H) +IF(HAVE_WINDOWS_H) + ADD_DEFINITIONS(-DHAVE_WINDOWS_H -DUSING_WINSOCK) + MESSAGE(STATUS "Adding windows libs to gnuradio core libs...") + LIST(APPEND gnuradio_core_libs WS2_32.lib WSock32.lib) +ENDIF(HAVE_WINDOWS_H) + +######################################################################## +SET(CMAKE_REQUIRED_LIBRARIES -lrt) +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/types.h> + #include <sys/mman.h> + int main(){shm_open(0, 0, 0); return 0;} + " HAVE_SHM_OPEN +) +GR_ADD_COND_DEF(HAVE_SHM_OPEN) +SET(CMAKE_REQUIRED_LIBRARIES) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #define _GNU_SOURCE + #include <math.h> + int main(){double x, sin, cos; sincos(x, &sin, &cos); return 0;} + " HAVE_SINCOS +) +GR_ADD_COND_DEF(HAVE_SINCOS) + +CHECK_CXX_SOURCE_COMPILES(" + #define _GNU_SOURCE + #include <math.h> + int main(){float x, sin, cos; sincosf(x, &sin, &cos); return 0;} + " HAVE_SINCOSF +) +GR_ADD_COND_DEF(HAVE_SINCOSF) + +CHECK_CXX_SOURCE_COMPILES(" + #include <math.h> + int main(){sinf(0); return 0;} + " HAVE_SINF +) +GR_ADD_COND_DEF(HAVE_SINF) + +CHECK_CXX_SOURCE_COMPILES(" + #include <math.h> + int main(){cosf(0); return 0;} + " HAVE_COSF +) +GR_ADD_COND_DEF(HAVE_COSF) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/mman.h> + int main(){mmap(0, 0, 0, 0, 0, 0); return 0;} + " HAVE_MMAP +) +GR_ADD_COND_DEF(HAVE_MMAP) diff --git a/gnuradio-core/src/lib/filter/CMakeLists.txt b/gnuradio-core/src/lib/filter/CMakeLists.txt new file mode 100644 index 000000000..ab136af14 --- /dev/null +++ b/gnuradio-core/src/lib/filter/CMakeLists.txt @@ -0,0 +1,339 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +#set the C language property on the assembly files so the compiler will pick them up +FILE(GLOB gr_core_filter_asms ${CMAKE_CURRENT_SOURCE_DIR}/*.S) +FOREACH(gr_core_filter_asm ${gr_core_filter_asms}) + SET_PROPERTY(SOURCE ${gr_core_filter_asm} PROPERTY LANGUAGE C) +ENDFOREACH(gr_core_filter_asm) + +######################################################################## +# Generate the makefile.gen, then extract its sources: +# This is a round-about way to extract the sources, +# but it requires minimum changed to the python utils. +# +# The recommended way to do this: +# - Make a generation macro that registers the sources command. +# - List the generation macro with each templated source file. +# - Create a python script (very generic) to perform generation. +# - This way the targets would depend only on their sources. +######################################################################## +EXECUTE_PROCESS( + COMMAND ${PYTHON_EXECUTABLE} -c " +import os, sys +sys.path.append('${GR_CORE_PYTHONPATH}') +sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}') +os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}' +os.environ['gendir'] = '${CMAKE_CURRENT_BINARY_DIR}' +os.environ['do_makefile'] = '1' +os.environ['do_sources'] = '0' +from generate_all import generate_all +generate_all() + " WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +MACRO(FILTER_GEN_EXTRACT outvar ext) + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import os; print ';'.join( + map(lambda x: os.path.join('${CMAKE_CURRENT_BINARY_DIR}', x.replace('\\\\', '').strip()), + filter(lambda f: '${ext}' in f, open('${CMAKE_CURRENT_BINARY_DIR}/Makefile.gen').readlines() + )))" OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ${outvar}) + FILE(TO_CMAKE_PATH "${${outvar}}" ${outvar}) +ENDMACRO(FILTER_GEN_EXTRACT) + +FILTER_GEN_EXTRACT(generated_filter_sources ".cc") +FILTER_GEN_EXTRACT(generated_filter_includes ".h") +FILTER_GEN_EXTRACT(generated_filter_swigs ".i") + +#TODO simplify this list with a triple-threat for loop +SET(generated_filter_deps + ${CMAKE_CURRENT_SOURCE_DIR}/generate_all.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_filter_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_interp_fir_filter_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_rational_resampler_base_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_sysconfig.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_sysconfig_generic.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_util.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_freq_xlating_fir_filter_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gri_fir_filter_with_buffer_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_utils.py + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX_generic.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX_generic.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fir_filter_with_buffer_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fir_filter_with_buffer_XXX.h.t +) + +ADD_CUSTOM_COMMAND( + OUTPUT + ${generated_filter_sources} + ${generated_filter_includes} + ${generated_filter_swigs} + DEPENDS ${generated_filter_deps} + COMMAND ${PYTHON_EXECUTABLE} -B -c + \"import os, sys\;sys.path.append('${GR_CORE_PYTHONPATH}')\;sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}')\;os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}'\;from generate_all import generate_all\;generate_all()\" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "generating filter files" +) + +ADD_CUSTOM_TARGET(filter_generated DEPENDS + ${generated_filter_sources} + ${generated_filter_includes} + ${generated_filter_swigs} +) + +######################################################################## +# Add target specific files +# May VOLK put a rest to all the insanity below. +######################################################################## +IF(MSVC) + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_generic.cc + ) + LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_generic.cc + ) +ELSE(MSVC) +IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86|x86_64)$") + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccc_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccc_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fsf_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fsf_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_scc_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_scc_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fcc_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fcc_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/sse_debug.c + ) + LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_float_dotprod_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_complex_dotprod_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_ccomplex_dotprod_x86.cc + ) +ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86|x86_64)$") + +IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnowext64.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnowext64.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_mmx64.S + ) +ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86)$") + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnowext.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnowext.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_mmx.S + ) +ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_powerpc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_powerpc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_powerpc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_altivec.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_altivec.c + ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_fff_altivec.c + ) + LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_powerpc.cc + ) +ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_fff_armv7_a.c + ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_ccf_armv7_a.c + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_armv7_a.c + ) + LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_armv7_a.cc + ) +ELSE(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_generic.cc + ) + LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_generic.cc + ) +ENDIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") +ENDIF(MSVC) + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +LIST(APPEND gnuradio_core_sources + ${generated_filter_sources} + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_fff_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_ccc_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sincos.c + ${CMAKE_CURRENT_SOURCE_DIR}/gri_goertzel.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator_cc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_generic.c + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_generic.c +) + +######################################################################## +# Append gnuradio-core test sources +######################################################################## +LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_filter.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_ccf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_fcc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_fff.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_ccc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_scc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_rotator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_mmse_fir_interpolator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_mmse_fir_interpolator_cc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_ccf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_ccc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fcc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fff.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fsf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_scc.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +INSTALL(FILES + ${generated_filter_includes} + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_altivec.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_fff_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_ccc_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_powerpc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rotator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sincos.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_pole_iir.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vec_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_goertzel.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_iir.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator_cc.h + ${CMAKE_CURRENT_SOURCE_DIR}/qa_filter.h + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/sse_debug.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +IF(ENABLE_PYTHON) +INSTALL(FILES + ${generated_filter_swigs} + ${CMAKE_CURRENT_SOURCE_DIR}/filter.i + ${CMAKE_CURRENT_BINARY_DIR}/filter_generated.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +ENDIF(ENABLE_PYTHON) + +######################################################################## +# Handle triple-threat files that have cc, h, and i +######################################################################## +SET(gr_core_filter_triple_threats + gr_adaptive_fir_ccc + gr_adaptive_fir_ccf + gr_cma_equalizer_cc + gr_dc_blocker_cc + gr_dc_blocker_ff + gr_fft_filter_ccc + gr_fft_filter_fff + gr_filter_delay_fc + gr_fractional_interpolator_ff + gr_fractional_interpolator_cc + gr_goertzel_fc + gr_hilbert_fc + gr_iir_filter_ffd + gr_single_pole_iir_filter_ff + gr_single_pole_iir_filter_cc + gr_pfb_channelizer_ccf + gr_pfb_synthesis_filterbank_ccf + gr_pfb_decimator_ccf + gr_pfb_interpolator_ccf + gr_pfb_arb_resampler_ccf + gr_pfb_clock_sync_ccf + gr_pfb_clock_sync_fff +) + +FOREACH(file_tt ${gr_core_filter_triple_threats}) + LIST(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel") + IF(ENABLE_PYTHON) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig") + ENDIF(ENABLE_PYTHON) +ENDFOREACH(file_tt ${gr_core_filter_triple_threats}) diff --git a/gnuradio-core/src/lib/general/CMakeLists.txt b/gnuradio-core/src/lib/general/CMakeLists.txt new file mode 100644 index 000000000..d9e635347 --- /dev/null +++ b/gnuradio-core/src/lib/general/CMakeLists.txt @@ -0,0 +1,306 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# Handle the generated sine table +######################################################################## +ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen_sine_table.py + COMMAND ${PYTHON_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/gen_sine_table.py > + ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h +) + +INCLUDE(AddFileDependencies) +ADD_FILE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.cc + ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h +) + +######################################################################## +# Handle the generated constants +######################################################################## +EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c + "import time;print time.strftime('%a, %d %b %Y %H:%M:%S', time.gmtime())" + OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE +) +MESSAGE(STATUS "Loading build date ${BUILD_DATE} into gr_constants...") + +MESSAGE(STATUS "Loading version ${VERSION} into gr_constants...") + +FILE(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_CONF_DIR}" SYSCONFDIR) +FILE(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_PKG_CONF_DIR}" GR_PREFSDIR) + +#double escape for windows backslash path separators +STRING(REPLACE "\\" "\\\\" prefix ${prefix}) +STRING(REPLACE "\\" "\\\\" SYSCONFDIR ${SYSCONFDIR}) +STRING(REPLACE "\\" "\\\\" GR_PREFSDIR ${GR_PREFSDIR}) + +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.cc.in + ${CMAKE_CURRENT_BINARY_DIR}/gr_constants.cc +@ONLY) + +LIST(APPEND gnuradio_core_sources ${CMAKE_CURRENT_BINARY_DIR}/gr_constants.cc) + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_circular_file.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_count_bits.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fast_atan2f.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fft_vcc_fftw.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_misc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_random.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_reverse.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_add_const_ss_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_char_to_float.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_debugger_hook.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_char.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_short.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_uchar.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_glfsr.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_interleaved_short_to_complex.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_short_to_float.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_uchar_to_float.cc + ${CMAKE_CURRENT_SOURCE_DIR}/malloc16.c +) + +######################################################################## +# Append gnuradio-core test sources +######################################################################## +LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_general.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_circular_file.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_firdes.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt_nco.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt_vco.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_math.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_lfsr.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_core_api.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_circular_file.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_count_bits.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_expj.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fft_vcc_fftw.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt_nco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt_vco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_log2_const.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_math.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_misc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_nco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_random.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_reverse.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_simple_framer_sync.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_test_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_add_const_ss.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_cc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_ff.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_cc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_ff.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_char_to_float.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_debugger_hook.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_char.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_short.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_uchar.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_glfsr.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_interleaved_short_to_complex.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr_15_1_0.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr_32k.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_short_to_float.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_uchar_to_float.h + ${CMAKE_CURRENT_SOURCE_DIR}/malloc16.h + ${CMAKE_CURRENT_SOURCE_DIR}/random.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +IF(ENABLE_PYTHON) +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/general.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_cc.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_ff.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_cc.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_ff.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +ENDIF(ENABLE_PYTHON) + +######################################################################## +# Handle triple-threat files that have cc, h, and i +######################################################################## +SET(gr_core_general_triple_threats + complex_vec_test + gr_additive_scrambler_bb + gr_agc_cc + gr_agc_ff + gr_agc2_cc + gr_agc2_ff + gr_align_on_samplenumbers_ss + gr_bin_statistics_f + gr_binary_slicer_fb + gr_bytes_to_syms + gr_char_to_float + gr_check_counting_s + gr_check_lfsr_32k_s + gr_clock_recovery_mm_cc + gr_clock_recovery_mm_ff + gr_complex_to_interleaved_short + gr_complex_to_xxx + gr_conjugate_cc + gr_constellation_decoder_cb + gr_copy + gr_correlate_access_code_bb + gr_costas_loop_cc + gr_cpfsk_bc + gr_crc32 + gr_ctcss_squelch_ff + gr_decode_ccsds_27_fb + gr_diff_decoder_bb + gr_diff_encoder_bb + gr_diff_phasor_cc + gr_dpll_bb + gr_deinterleave + gr_delay + gr_encode_ccsds_27_bb + gr_fake_channel_coder_pp + gr_feedforward_agc_cc + gr_feval + gr_fft_vcc + gr_fft_vfc + gr_firdes + gr_fll_band_edge_cc + gr_float_to_char + gr_float_to_complex + gr_float_to_short + gr_float_to_uchar + gr_fmdet_cf + gr_frequency_modulator_fc + gr_framer_sink_1 + gr_glfsr_source_b + gr_glfsr_source_f + gr_head + gr_int_to_float + gr_interleave + gr_interleaved_short_to_complex + gr_iqcomp_cc + gr_keep_one_in_n + gr_kludge_copy + gr_lfsr_32k_source_s + gr_lms_dfe_cc + gr_lms_dfe_ff + gr_map_bb + gr_mpsk_receiver_cc + gr_nlog10_ff + gr_nop + gr_null_sink + gr_null_source + gr_ofdm_frame_acquisition + gr_ofdm_cyclic_prefixer + gr_ofdm_demapper_vcb + gr_ofdm_mapper_bcv + gr_ofdm_frame_sink + #gr_ofdm_frame_sink2 #cannot build yet... + gr_ofdm_insert_preamble + gr_ofdm_sampler + gr_pa_2x2_phase_combiner + gr_packet_sink + gr_peak_detector2_fb + gr_phase_modulator_fc + gr_pll_carriertracking_cc + gr_pll_freqdet_cf + gr_pll_refout_cc + gr_pn_correlator_cc + gr_prefs + gr_probe_avg_mag_sqrd_c + gr_probe_avg_mag_sqrd_cf + gr_probe_avg_mag_sqrd_f + gr_probe_signal_f + gr_pwr_squelch_cc + gr_pwr_squelch_ff + gr_quadrature_demod_cf + gr_rail_ff + gr_regenerate_bb + gr_remez + gr_rms_cf + gr_rms_ff + gr_repeat + gr_short_to_float + gr_simple_correlator + gr_simple_framer + gr_simple_squelch_cc + gr_skiphead + gr_squash_ff + gr_squelch_base_cc + gr_squelch_base_ff + gr_stream_mux + gr_stream_to_streams + gr_stream_to_vector + gr_streams_to_stream + gr_streams_to_vector + gr_stretch_ff + gr_test + gr_threshold_ff + gr_throttle + gr_uchar_to_float + gr_vco_f + gr_vector_to_stream + gr_vector_to_streams + gr_unpack_k_bits_bb + gr_wavelet_ff + gr_wvps_ff + gr_descrambler_bb + gr_scrambler_bb + gr_probe_mpsk_snr_c + gr_probe_density_b + gr_annotator_alltoall + gr_annotator_1to1 + gr_burst_tagger +) + +FOREACH(file_tt ${gr_core_general_triple_threats}) + LIST(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel") + IF(ENABLE_PYTHON) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig") + ENDIF(ENABLE_PYTHON) +ENDFOREACH(file_tt ${gr_core_general_triple_threats}) diff --git a/gnuradio-core/src/lib/gengen/CMakeLists.txt b/gnuradio-core/src/lib/gengen/CMakeLists.txt new file mode 100644 index 000000000..a06a61e6d --- /dev/null +++ b/gnuradio-core/src/lib/gengen/CMakeLists.txt @@ -0,0 +1,191 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# Generate the makefile.gen, then extract its sources: +# This is a round-about way to extract the sources, +# but it requires minimum changed to the python utils. +# +# The recommended way to do this: +# - Make a generation macro that registers the sources command. +# - List the generation macro with each templated source file. +# - Create a python script (very generic) to perform generation. +# - This way the targets would depend only on their sources. +######################################################################## +EXECUTE_PROCESS( + COMMAND ${PYTHON_EXECUTABLE} -c " +import os, sys +sys.path.append('${GR_CORE_PYTHONPATH}') +sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}') +os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}' +os.environ['gendir'] = '${CMAKE_CURRENT_BINARY_DIR}' +os.environ['do_makefile'] = '1' +os.environ['do_sources'] = '0' +from generate_all import generate_all +generate_all() + " WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +MACRO(GEGEN_GEN_EXTRACT outvar ext) + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import os; print ';'.join( + map(lambda x: os.path.join('${CMAKE_CURRENT_BINARY_DIR}', x.replace('\\\\', '').strip()), + filter(lambda f: '${ext}' in f, open('${CMAKE_CURRENT_BINARY_DIR}/Makefile.gen').readlines() + )))" OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ${outvar}) + FILE(TO_CMAKE_PATH "${${outvar}}" ${outvar}) +ENDMACRO(GEGEN_GEN_EXTRACT) + +GEGEN_GEN_EXTRACT(generated_gengen_sources ".cc") +GEGEN_GEN_EXTRACT(generated_gengen_includes ".h") +GEGEN_GEN_EXTRACT(generated_gengen_swigs ".i") + +#TODO simplify this list with a triple-threat for loop +SET(generated_gengen_deps + ${CMAKE_CURRENT_SOURCE_DIR}/generate_all.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_common.py + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_const_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_const_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_const_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_const_vXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_const_vXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_add_const_vXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_argmax_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_argmax_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_argmax_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_chunks_to_symbols_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_chunks_to_symbols_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_chunks_to_symbols_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_divide_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_divide_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_divide_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_integrate_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_integrate_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_integrate_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_max_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_max_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_max_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_const_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_const_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_const_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_const_vXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_const_vXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_multiply_const_vXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_mute_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_mute_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_mute_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_noise_source_X.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_noise_source_X.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_noise_source_X.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_packed_to_unpacked_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_packed_to_unpacked_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_packed_to_unpacked_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_peak_detector_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_peak_detector_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_peak_detector_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sample_and_hold_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sample_and_hold_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sample_and_hold_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sig_source_X.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sig_source_X.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sig_source_X.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sub_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sub_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sub_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_unpacked_to_packed_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_unpacked_to_packed_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_unpacked_to_packed_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vector_source_X.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vector_source_X.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vector_source_X.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vector_sink_X.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vector_sink_X.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vector_sink_X.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_xor_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_xor_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_xor_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_and_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_and_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_and_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_and_const_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_and_const_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_and_const_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_or_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_or_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_or_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_not_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_not_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_not_XX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_moving_average_XX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_moving_average_XX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_moving_average_XX.i.t +) + +ADD_CUSTOM_COMMAND( + OUTPUT + ${generated_gengen_sources} + ${generated_gengen_includes} + ${generated_gengen_swigs} + DEPENDS ${generated_gengen_deps} + COMMAND ${PYTHON_EXECUTABLE} -B -c + \"import os, sys\;sys.path.append('${GR_CORE_PYTHONPATH}')\;sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}')\;os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}'\;from generate_all import generate_all\;generate_all()\" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "generating gengen files" +) + +ADD_CUSTOM_TARGET(gengen_generated DEPENDS + ${generated_gengen_sources} + ${generated_gengen_includes} + ${generated_gengen_swigs} +) + +######################################################################## +# Handle the generated sources + a few non-generated ones +######################################################################## +LIST(APPEND gnuradio_core_sources + ${generated_gengen_sources} +) + +INSTALL(FILES + ${generated_gengen_includes} + ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_noise_type.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sig_source_waveform.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +IF(ENABLE_PYTHON) + INSTALL(FILES + ${generated_gengen_swigs} + ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.i + ${CMAKE_CURRENT_SOURCE_DIR}/gengen.i + ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" + ) +ENDIF(ENABLE_PYTHON) diff --git a/gnuradio-core/src/lib/hier/CMakeLists.txt b/gnuradio-core/src/lib/hier/CMakeLists.txt new file mode 100644 index 000000000..fb922f60e --- /dev/null +++ b/gnuradio-core/src/lib/hier/CMakeLists.txt @@ -0,0 +1,42 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.cc +) + +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +IF(ENABLE_PYTHON) + INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/hier.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" + ) +ENDIF(ENABLE_PYTHON) diff --git a/gnuradio-core/src/lib/io/CMakeLists.txt b/gnuradio-core/src/lib/io/CMakeLists.txt new file mode 100644 index 000000000..7ffe8306e --- /dev/null +++ b/gnuradio-core/src/lib/io/CMakeLists.txt @@ -0,0 +1,108 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bitbang.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio_pp.cc + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4702.cc + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4937.cc + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_xxxx.cc + ${CMAKE_CURRENT_SOURCE_DIR}/ppio_ppdev.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_wavfile.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_trigger_mode.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bitbang.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio_pp.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4702.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4937.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_eval_board_defs.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_xxxx.h + ${CMAKE_CURRENT_SOURCE_DIR}/ppio_ppdev.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_wavfile.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +IF(ENABLE_PYTHON) +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/io.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +ENDIF(ENABLE_PYTHON) + +######################################################################## +# Handle triple-threat files that have cc, h, and i +######################################################################## +SET(gr_core_io_triple_threats + gr_file_sink + gr_file_sink_base + gr_file_source + gr_file_descriptor_sink + gr_file_descriptor_source + gr_message_sink + gr_message_source + microtune_xxxx_eval_board + microtune_4702_eval_board + microtune_4937_eval_board + ppio + sdr_1000 + gr_udp_sink + gr_udp_source + gr_wavfile_source + gr_wavfile_sink + gr_tagged_file_sink +) + +FOREACH(file_tt ${gr_core_io_triple_threats}) + LIST(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel") + IF(ENABLE_PYTHON) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig") + ENDIF(ENABLE_PYTHON) +ENDFOREACH(file_tt ${gr_core_io_triple_threats}) diff --git a/gnuradio-core/src/lib/missing/CMakeLists.txt b/gnuradio-core/src/lib/missing/CMakeLists.txt new file mode 100644 index 000000000..fb4620452 --- /dev/null +++ b/gnuradio-core/src/lib/missing/CMakeLists.txt @@ -0,0 +1,32 @@ +# Copyright 2010 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/bug_work_around_8.cc +) + +IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") + LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/posix_memalign.cc + ) +ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") diff --git a/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt b/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt new file mode 100644 index 000000000..4a495f9f9 --- /dev/null +++ b/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt @@ -0,0 +1,55 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## +IF(NOT MSVC) #FIXME can't build reed-solomon in MSVC. +#The rs sources use a lot of non-standard code +#like the array allocation and some c99 functions. +#In short, will not fix unless someone asks nicely. +SET(gr_core_rs_sources + ${CMAKE_CURRENT_SOURCE_DIR}/encode_rs.c + ${CMAKE_CURRENT_SOURCE_DIR}/decode_rs.c + ${CMAKE_CURRENT_SOURCE_DIR}/init_rs.c +) + +######################################################################## +# Setup sources and includes +######################################################################## +LIST(APPEND gnuradio_core_sources ${gr_core_rs_sources}) + +INSTALL( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/rs.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Register unit tests +######################################################################## +IF(ENABLE_TESTING) +ADD_EXECUTABLE(gr_core_rstest + ${gr_core_rs_sources} + ${CMAKE_CURRENT_SOURCE_DIR}/rstest.c + ${CMAKE_CURRENT_SOURCE_DIR}/exercise.c +) +ADD_TEST(gr-core-reed-solomon-test gr_core_rstest) +ENDIF(ENABLE_TESTING) +ENDIF(NOT MSVC) diff --git a/gnuradio-core/src/lib/runtime/CMakeLists.txt b/gnuradio-core/src/lib/runtime/CMakeLists.txt new file mode 100644 index 000000000..4b1f85bbe --- /dev/null +++ b/gnuradio-core/src/lib/runtime/CMakeLists.txt @@ -0,0 +1,162 @@ +# Copyright 2010-2010 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +LIST(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flowgraph.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flat_flowgraph.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_executor.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2_detail.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_local_sighandler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_accepter.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_pagesize.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_preferences.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_sts.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_tpb.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sptr_magic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sys_paths.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block_impl.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_detail.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_thread_body.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_mmap_shm_open.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_mmap_tmpfile.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_createfilemapping.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_sysv_shm.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_select_handler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tag_info.cc +) + +######################################################################## +# Append gnuradio-core test sources +######################################################################## +LIST(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2_derived.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_buffer.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_flowgraph.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_top_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_io_signature.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_vmcircbuf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_block_tags.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_runtime.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_set_msg_handler.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flowgraph.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flat_flowgraph.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_executor.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2_detail.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_complex.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_local_sighandler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_accepter.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_pagesize.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_preferences.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_runtime_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_sts.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_tpb.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_select_handler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sptr_magic.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block_impl.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_detail.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_thread_body.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_timer.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sys_paths.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_unittests.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tag_info.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +IF(ENABLE_PYTHON) +INSTALL(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/runtime.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +ENDIF(ENABLE_PYTHON) diff --git a/gnuradio-core/src/lib/swig/CMakeLists.txt b/gnuradio-core/src/lib/swig/CMakeLists.txt new file mode 100644 index 000000000..c46b720c5 --- /dev/null +++ b/gnuradio-core/src/lib/swig/CMakeLists.txt @@ -0,0 +1,93 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +INCLUDE(GrPython) +INCLUDE(GrSwig) + +INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) +LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) + +SET(GR_SWIG_INCLUDE_DIRS + ${Boost_INCLUDE_DIRS} + ${GSL_INCLUDE_DIRS} + ${GRUEL_INCLUDE_DIRS} + ${GNURADIO_CORE_INCLUDE_DIRS} + ${CMAKE_CURRENT_BINARY_DIR} +) +SET(GR_SWIG_LIBRARIES gnuradio-core) + +######################################################################## +# Build and install the swig targets +######################################################################## +# ---------------------------------------------------------------- +# We've split the previously monstrous gnuradio_corethon into 6 +# smaller pieces. This reduces compile time coupling and creates +# smaller pieces for the compiler to digest. prior to this change, on +# X86_64, g++'s resident set size was 650MB! +# ---------------------------------------------------------------- +GR_SWIG_MAKE(gnuradio_core_runtime gnuradio_core_runtime.i) +GR_SWIG_MAKE(gnuradio_core_general gnuradio_core_general.i) +SET(GR_SWIG_TARGET_DEPS gengen_generated) +GR_SWIG_MAKE(gnuradio_core_gengen gnuradio_core_gengen.i) +SET(GR_SWIG_TARGET_DEPS filter_generated) +GR_SWIG_MAKE(gnuradio_core_filter gnuradio_core_filter.i) +UNSET(GR_SWIG_TARGET_DEPS) +GR_SWIG_MAKE(gnuradio_core_io gnuradio_core_io.i) +GR_SWIG_MAKE(gnuradio_core_hier gnuradio_core_hier.i) + +GR_SWIG_INSTALL(TARGETS + gnuradio_core_runtime + gnuradio_core_general + gnuradio_core_gengen + gnuradio_core_filter + gnuradio_core_io + gnuradio_core_hier + DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr + COMPONENT "core_python" +) + +######################################################################## +# Install various files +######################################################################## +INSTALL(FILES + gnuradio.i + gr_swig_block_magic.i + gr_shared_ptr.i + gnuradio_core_runtime.i + gnuradio_core_general.i + gnuradio_core_gengen.i + gnuradio_core_filter.i + gnuradio_core_io.i + gnuradio_core_hier.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) + +GR_PYTHON_INSTALL( + FILES gnuradio_core.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr + COMPONENT "core_python" +) + +INSTALL( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio_swig_bug_workaround.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_swig" +) diff --git a/gnuradio-core/src/lib/viterbi/CMakeLists.txt b/gnuradio-core/src/lib/viterbi/CMakeLists.txt new file mode 100644 index 000000000..aeb8a012d --- /dev/null +++ b/gnuradio-core/src/lib/viterbi/CMakeLists.txt @@ -0,0 +1,63 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +SET(viterbi_sources + ${CMAKE_CURRENT_SOURCE_DIR}/metrics.c + ${CMAKE_CURRENT_SOURCE_DIR}/tab.c + ${CMAKE_CURRENT_SOURCE_DIR}/viterbi.c +) + +######################################################################## +# define missing erf function with C linkage (hack for metrics.c) +######################################################################## +IF(MSVC) +FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/boost_math_erf.cc " +#include <boost/math/special_functions/erf.hpp> +extern \"C\" double erf(double x){ + return boost::math::erf(x); +} +") +LIST(APPEND viterbi_sources ${CMAKE_CURRENT_BINARY_DIR}/boost_math_erf.cc) +ENDIF(MSVC) + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +LIST(APPEND gnuradio_core_sources ${viterbi_sources}) + +######################################################################## +# Install runtime headers +######################################################################## +INSTALL( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/viterbi.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Create some text executables (not registered tests) +# Its not much to build so the sources are just re-listed, +# rather than create a new library just for these two apps. +######################################################################## +#ADD_EXECUTABLE(viterbi_encode ${CMAKE_CURRENT_SOURCE_DIR}/encode.cc ${viterbi_sources}) +#ADD_EXECUTABLE(viterbi_decode ${CMAKE_CURRENT_SOURCE_DIR}/decode.cc ${viterbi_sources}) diff --git a/gnuradio-core/src/python/gnuradio/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/CMakeLists.txt new file mode 100644 index 000000000..a65b01806 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/CMakeLists.txt @@ -0,0 +1,43 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +INCLUDE(GrPython) + +ADD_SUBDIRECTORY(gr) +ADD_SUBDIRECTORY(gru) +ADD_SUBDIRECTORY(gruimpl) +ADD_SUBDIRECTORY(blks2) +ADD_SUBDIRECTORY(blks2impl) + +GR_PYTHON_INSTALL(FILES + __init__.py + eng_notation.py + eng_option.py + modulation_utils.py + modulation_utils2.py + ofdm_packet_utils.py + packet_utils.py + gr_unittest.py + gr_xmlrunner.py + optfir.py + usrp_options.py + window.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio + COMPONENT "core_python" +) diff --git a/gnuradio-core/src/python/gnuradio/blks2/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/blks2/CMakeLists.txt new file mode 100644 index 000000000..3e210100b --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +INCLUDE(GrPython) + +GR_PYTHON_INSTALL( + FILES __init__.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/blks2 + COMPONENT "core_python" +) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt new file mode 100644 index 000000000..235cf35be --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt @@ -0,0 +1,66 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +INCLUDE(GrPython) + +GR_PYTHON_INSTALL(FILES + __init__.py + am_demod.py + channel_model.py + dbpsk.py + dbpsk2.py + dqpsk.py + dqpsk2.py + d8psk.py + filterbank.py + fm_demod.py + fm_emph.py + generic_usrp.py + gmsk.py + cpm.py + logpwrfft.py + nbfm_rx.py + nbfm_tx.py + ofdm.py + ofdm_receiver.py + ofdm_sync_fixed.py + ofdm_sync_pn.py + ofdm_sync_pnac.py + ofdm_sync_ml.py + pfb_arb_resampler.py + pfb_channelizer.py + pfb_decimator.py + pfb_interpolator.py + pkt.py + psk.py + qam.py + qam8.py + qam16.py + qam64.py + qam256.py + rational_resampler.py + standard_squelch.py + stream_to_vector_decimator.py + wfm_rcv.py + wfm_rcv_fmdet.py + wfm_rcv_pll.py + wfm_tx.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/blks2impl + COMPONENT "core_python" +) diff --git a/gnuradio-core/src/python/gnuradio/gr/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/gr/CMakeLists.txt new file mode 100644 index 000000000..bd7541a19 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/gr/CMakeLists.txt @@ -0,0 +1,52 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +INCLUDE(GrPython) + +GR_PYTHON_INSTALL(FILES + __init__.py + exceptions.py + gr_threading.py + gr_threading_23.py + gr_threading_24.py + hier_block2.py + prefs.py + top_block.py + pubsub.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr + COMPONENT "core_python" +) + +######################################################################## +# Handle the unit tests +######################################################################## +IF(ENABLE_TESTING) +INCLUDE(GrTest) +FILE(GLOB py_qa_test_files "qa_*.py") +FOREACH(py_qa_test_file ${py_qa_test_files}) + GET_FILENAME_COMPONENT(py_qa_test_name ${py_qa_test_file} NAME_WE) + SET(GR_TEST_PYTHON_DIRS + ${CMAKE_BINARY_DIR}/gnuradio-core/src/python + ${CMAKE_BINARY_DIR}/gnuradio-core/src/lib/swig + ) + SET(GR_TEST_TARGET_DEPS gruel gnuradio-core) + GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${py_qa_test_file}) +ENDFOREACH(py_qa_test_file) +ENDIF(ENABLE_TESTING) diff --git a/gnuradio-core/src/python/gnuradio/gru/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/gru/CMakeLists.txt new file mode 100644 index 000000000..55971ce5b --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/gru/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +INCLUDE(GrPython) + +GR_PYTHON_INSTALL( + FILES __init__.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/gru + COMPONENT "core_python" +) diff --git a/gnuradio-core/src/python/gnuradio/gruimpl/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/gruimpl/CMakeLists.txt new file mode 100644 index 000000000..1863e96fd --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/gruimpl/CMakeLists.txt @@ -0,0 +1,39 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +INCLUDE(GrPython) + +GR_PYTHON_INSTALL(FILES + __init__.py + crc.py + freqz.py + gnuplot_freqz.py + hexint.py + listmisc.py + mathmisc.py + lmx2306.py + msgq_runner.py + os_read_exactly.py + sdr_1000.py + seq_with_cursor.py + socket_stuff.py + daemon.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/gruimpl + COMPONENT "core_python" +) diff --git a/gnuradio-core/src/tests/CMakeLists.txt b/gnuradio-core/src/tests/CMakeLists.txt new file mode 100644 index 000000000..46f9e630d --- /dev/null +++ b/gnuradio-core/src/tests/CMakeLists.txt @@ -0,0 +1,71 @@ +# Copyright 2010-2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio 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 3, or (at your option) +# any later version. +# +# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +######################################################################## +INCLUDE(GrMiscUtils) #check n def +GR_CHECK_HDR_N_DEF(sys/resource.h HAVE_SYS_RESOURCE_H) + +ADD_DEFINITIONS(${GR_COMMON_FLAGS_AND_DEFINES}) + +######################################################################## +# Setup the include and linker paths +######################################################################## +INCLUDE_DIRECTORIES(${GRUEL_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${GNURADIO_CORE_INCLUDE_DIRS}) + +INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) +LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) + +INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIRS}) +LINK_DIRECTORIES(${CPPUNIT_LIBRARY_DIRS}) + +######################################################################## +# Build benchmarks and non-registered tests +######################################################################## +SET(tests_not_run #single source per test + benchmark_dotprod_fff.cc + benchmark_dotprod_fsf.cc + benchmark_dotprod_ccf.cc + benchmark_dotprod_fcc.cc + benchmark_dotprod_scc.cc + benchmark_dotprod_ccc.cc + benchmark_nco.cc + benchmark_vco.cc + test_runtime.cc + test_general.cc + test_filter.cc + #test_atsc.cc + test_vmcircbuf.cc +) + +FOREACH(test_not_run_src ${tests_not_run}) + GET_FILENAME_COMPONENT(name ${test_not_run_src} NAME_WE) + ADD_EXECUTABLE(${name} ${test_not_run_src}) + TARGET_LINK_LIBRARIES(${name} test-gnuradio-core) +ENDFOREACH(test_not_run_src) + +######################################################################## +# Build the test-all test to end all tests +# Set the test environment so the build libs will be found under MSVC. +######################################################################## +INCLUDE(GrTest) +SET(GR_TEST_TARGET_DEPS gruel gnuradio-core test-gnuradio-core) +ADD_EXECUTABLE(gr_core_test_all test_all.cc) +TARGET_LINK_LIBRARIES(gr_core_test_all test-gnuradio-core) +GR_ADD_TEST(gr-core-test-all gr_core_test_all) |