summaryrefslogtreecommitdiff
path: root/volk/lib/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'volk/lib/CMakeLists.txt')
-rw-r--r--volk/lib/CMakeLists.txt242
1 files changed, 121 insertions, 121 deletions
diff --git a/volk/lib/CMakeLists.txt b/volk/lib/CMakeLists.txt
index 645a0dc17..f4177b16e 100644
--- a/volk/lib/CMakeLists.txt
+++ b/volk/lib/CMakeLists.txt
@@ -21,7 +21,7 @@
# If the test passes append the arch to the available list.
########################################################################
#extract the arch lines from the xml file using crazy python
-EXECUTE_PROCESS(
+execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"from xml.dom import minidom; print ';'.join(map(lambda a: '%s %s'%(a.attributes['name'].value,a.getElementsByTagName('flag')[0].firstChild.data),minidom.parse('${CMAKE_SOURCE_DIR}/gen/archs.xml').getElementsByTagName('arch')))"
OUTPUT_VARIABLE arch_lines OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -29,7 +29,7 @@ EXECUTE_PROCESS(
#get any mutually exclusive archs so we can exclude them
#this is really for compilers which can do both 32- and 64-bit compilations.
-EXECUTE_PROCESS(
+execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"from xml.dom import minidom; print ';'.join(map(lambda a: '%s %s'%(a.parentNode.attributes['name'].value,a.firstChild.data),minidom.parse('${CMAKE_SOURCE_DIR}/gen/archs.xml').getElementsByTagName('mutex')))"
OUTPUT_VARIABLE mutex_lines OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -37,56 +37,56 @@ EXECUTE_PROCESS(
#This macro sets the ${arch}_flag variable,
#and handles special cases for MSVC arch flags.
-MACRO(set_arch_flag name flag)
- IF(MSVC AND ${name} STREQUAL "mmx")
- SET(${name}_flag "/arch:SSE") #no /arch:MMX
- ELSEIF(MSVC AND ${name} STREQUAL "sse")
- SET(${name}_flag "/arch:SSE")
- ELSEIF(MSVC AND ${name} STREQUAL "sse2")
- SET(${name}_flag "/arch:SSE2")
- ELSE()
- SET(${name}_flag -${flag})
- ENDIF()
-ENDMACRO(set_arch_flag)
-
-MACRO(handle_arch name flag)
+macro(set_arch_flag name flag)
+ if(MSVC AND ${name} STREQUAL "mmx")
+ set(${name}_flag "/arch:SSE") #no /arch:MMX
+ elseif(MSVC AND ${name} STREQUAL "sse")
+ set(${name}_flag "/arch:SSE")
+ elseif(MSVC AND ${name} STREQUAL "sse2")
+ set(${name}_flag "/arch:SSE2")
+ else()
+ set(${name}_flag -${flag})
+ endif()
+endmacro(set_arch_flag)
+
+macro(handle_arch name flag)
#handle special case for none flag
- IF(${flag} STREQUAL "none")
- SET(have_${name} TRUE)
+ if(${flag} STREQUAL "none")
+ set(have_${name} TRUE)
#otherwise test the flag against the compiler
- ELSE()
- INCLUDE(CheckCXXCompilerFlag)
+ else()
+ include(CheckCXXCompilerFlag)
set_arch_flag(${name} ${flag})
CHECK_CXX_COMPILER_FLAG(${${name}_flag} have_${name})
- ENDIF()
+ endif()
- IF(have_${name})
- LIST(APPEND available_arches ${name})
- ENDIF()
-ENDMACRO(handle_arch)
+ if(have_${name})
+ list(APPEND available_arches ${name})
+ endif()
+endmacro(handle_arch)
-MACRO(remove_mutex name mutex)
- IF(have_${name})
- UNSET(have_${mutex})
- ENDIF()
- LIST(REMOVE_ITEM available_arches ${mutex})
-ENDMACRO(remove_mutex)
+macro(remove_mutex name mutex)
+ if(have_${name})
+ unset(have_${mutex})
+ endif()
+ list(REMOVE_ITEM available_arches ${mutex})
+endmacro(remove_mutex)
#create a list of available arches
-FOREACH(arch_line ${arch_lines})
- SEPARATE_ARGUMENTS(args UNIX_COMMAND "${arch_line}")
+foreach(arch_line ${arch_lines})
+ separate_arguments(args UNIX_COMMAND "${arch_line}")
handle_arch(${args})
-ENDFOREACH(arch_line)
+endforeach(arch_line)
#strip out mutex archs
-FOREACH(mutex_line ${mutex_lines})
- SEPARATE_ARGUMENTS(args UNIX_COMMAND "${mutex_line}")
+foreach(mutex_line ${mutex_lines})
+ separate_arguments(args UNIX_COMMAND "${mutex_line}")
remove_mutex(${args})
-ENDFOREACH(mutex_line)
+endforeach(mutex_line)
-MESSAGE(STATUS "Available arches: ${available_arches}")
+message(STATUS "Available arches: ${available_arches}")
########################################################################
# Parse the machines xml file:
@@ -94,61 +94,61 @@ MESSAGE(STATUS "Available arches: ${available_arches}")
# Build a list of supported machines and the machine definitions.
########################################################################
#extract the machine lines from the xml file using crazy python
-EXECUTE_PROCESS(
+execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"from xml.dom import minidom; print ';'.join(map(lambda a: '%s %s'%(a.attributes['name'].value,a.getElementsByTagName('archs')[0].firstChild.data),minidom.parse('${CMAKE_SOURCE_DIR}/gen/machines.xml').getElementsByTagName('machine')))"
OUTPUT_VARIABLE machine_lines OUTPUT_STRIP_TRAILING_WHITESPACE
)
-MACRO(handle_machine1 name)
- UNSET(machine_flags)
- STRING(TOUPPER LV_MACHINE_${name} machine_def)
+macro(handle_machine1 name)
+ unset(machine_flags)
+ string(TOUPPER LV_MACHINE_${name} machine_def)
#check if all the arches are supported
- FOREACH(arch ${ARGN})
- SET(is_match ${have_${arch}})
- IF(NOT is_match)
- SET(is_match FALSE)
- BREAK()
- ENDIF(NOT is_match)
- SET(machine_flags "${machine_flags} ${${arch}_flag}")
- ENDFOREACH(arch)
-
- IF(is_match)
+ foreach(arch ${ARGN})
+ set(is_match ${have_${arch}})
+ if(NOT is_match)
+ set(is_match FALSE)
+ break()
+ endif(NOT is_match)
+ set(machine_flags "${machine_flags} ${${arch}_flag}")
+ endforeach(arch)
+
+ if(is_match)
#this is a match, append the source and set its flags
- SET(machine_source ${CMAKE_CURRENT_BINARY_DIR}/volk_machine_${name}.c)
- SET_SOURCE_FILES_PROPERTIES(${machine_source} PROPERTIES COMPILE_FLAGS ${machine_flags})
- LIST(APPEND machine_sources ${machine_source})
- LIST(APPEND machine_defs ${machine_def})
- LIST(APPEND available_machines ${name})
- ENDIF()
-ENDMACRO(handle_machine1)
-
-MACRO(handle_machine name)
- SET(arches ${ARGN})
- LIST(FIND arches "32|64" index)
- IF(${index} EQUAL -1)
+ set(machine_source ${CMAKE_CURRENT_BINARY_DIR}/volk_machine_${name}.c)
+ set_source_files_properties(${machine_source} PROPERTIES COMPILE_FLAGS ${machine_flags})
+ list(APPEND machine_sources ${machine_source})
+ list(APPEND machine_defs ${machine_def})
+ list(APPEND available_machines ${name})
+ endif()
+endmacro(handle_machine1)
+
+macro(handle_machine name)
+ set(arches ${ARGN})
+ list(FIND arches "32|64" index)
+ if(${index} EQUAL -1)
handle_machine1(${name} ${arches})
- ELSE()
- LIST(REMOVE_ITEM arches "32|64")
+ else()
+ list(REMOVE_ITEM arches "32|64")
handle_machine1(${name}_32 32 ${arches})
handle_machine1(${name}_64 64 ${arches})
- ENDIF()
-ENDMACRO(handle_machine)
+ endif()
+endmacro(handle_machine)
#setup the available machines
-FOREACH(machine_line ${machine_lines})
- SEPARATE_ARGUMENTS(args UNIX_COMMAND "${machine_line}")
+foreach(machine_line ${machine_lines})
+ separate_arguments(args UNIX_COMMAND "${machine_line}")
handle_machine(${args})
-ENDFOREACH(machine_line)
+endforeach(machine_line)
-MESSAGE(STATUS "Available machines: ${available_machines}")
+message(STATUS "Available machines: ${available_machines}")
########################################################################
# Create rules to run the volk generator
########################################################################
#list of the generated sources
-SET(volk_gen_sources
+set(volk_gen_sources
${CMAKE_BINARY_DIR}/include/volk/volk.h
${CMAKE_BINARY_DIR}/lib/volk.c
${CMAKE_BINARY_DIR}/lib/volk_init.h
@@ -164,21 +164,21 @@ SET(volk_gen_sources
)
#dependencies are all python, xml, and header implementation files
-FILE(GLOB xml_files ${CMAKE_SOURCE_DIR}/gen/*.xml)
-FILE(GLOB py_files ${CMAKE_SOURCE_DIR}/gen/*.py)
-FILE(GLOB h_files ${CMAKE_SOURCE_DIR}/include/volk/*.h)
+file(GLOB xml_files ${CMAKE_SOURCE_DIR}/gen/*.xml)
+file(GLOB py_files ${CMAKE_SOURCE_DIR}/gen/*.py)
+file(GLOB h_files ${CMAKE_SOURCE_DIR}/include/volk/*.h)
#make sure we can use -B with python (introduced in 2.6)
-EXECUTE_PROCESS(
+execute_process(
COMMAND ${PYTHON_EXECUTABLE} -B -c ""
OUTPUT_QUIET ERROR_QUIET
RESULT_VARIABLE PYTHON_HAS_DASH_B_RESULT
)
-IF(PYTHON_HAS_DASH_B_RESULT EQUAL 0)
- SET(PYTHON_DASH_B "-B")
-ENDIF()
+if(PYTHON_HAS_DASH_B_RESULT EQUAL 0)
+ set(PYTHON_DASH_B "-B")
+endif()
-ADD_CUSTOM_COMMAND(
+add_custom_command(
OUTPUT ${volk_gen_sources}
DEPENDS ${xml_files} ${py_files} ${h_files}
COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B}
@@ -189,80 +189,80 @@ ADD_CUSTOM_COMMAND(
########################################################################
# Handle orc support
########################################################################
-FIND_PACKAGE(PkgConfig)
-IF(PKG_CONFIG_FOUND)
+find_package(PkgConfig)
+if(PKG_CONFIG_FOUND)
PKG_CHECK_MODULES(ORC "orc-0.4 > 0.4.11")
-ENDIF(PKG_CONFIG_FOUND)
+endif(PKG_CONFIG_FOUND)
-FIND_PROGRAM(ORCC_EXECUTABLE orcc)
+find_program(ORCC_EXECUTABLE orcc)
-IF(ORC_FOUND AND ORCC_EXECUTABLE)
+if(ORC_FOUND AND ORCC_EXECUTABLE)
#setup orc library usage
- INCLUDE_DIRECTORIES(${ORC_INCLUDE_DIRS})
- LINK_DIRECTORIES(${ORC_LIBRARY_DIRS})
- ADD_DEFINITIONS(-DLV_HAVE_ORC)
+ include_directories(${ORC_INCLUDE_DIRS})
+ link_directories(${ORC_LIBRARY_DIRS})
+ add_definitions(-DLV_HAVE_ORC)
#setup orc functions
- FILE(GLOB orc_files ${CMAKE_SOURCE_DIR}/orc/*.orc)
- FOREACH(orc_file ${orc_files})
+ file(GLOB orc_files ${CMAKE_SOURCE_DIR}/orc/*.orc)
+ foreach(orc_file ${orc_files})
#extract the name for the generated c source from the orc file
- GET_FILENAME_COMPONENT(orc_file_name_we ${orc_file} NAME_WE)
- SET(orcc_gen ${CMAKE_CURRENT_BINARY_DIR}/${orc_file_name_we}.c)
+ get_filename_component(orc_file_name_we ${orc_file} NAME_WE)
+ set(orcc_gen ${CMAKE_CURRENT_BINARY_DIR}/${orc_file_name_we}.c)
#create a rule to generate the source and add to the list of sources
- ADD_CUSTOM_COMMAND(
+ add_custom_command(
COMMAND ${ORCC_EXECUTABLE} --implementation -o ${orcc_gen} ${orc_file}
DEPENDS ${orc_file} OUTPUT ${orcc_gen}
)
- LIST(APPEND volk_sources ${orcc_gen})
+ list(APPEND volk_sources ${orcc_gen})
- ENDFOREACH(orc_file)
-ELSE()
- MESSAGE(STATUS "Did not find liborc and orcc, disabling orc support...")
-ENDIF()
+ endforeach(orc_file)
+else()
+ message(STATUS "Did not find liborc and orcc, disabling orc support...")
+endif()
########################################################################
# Setup the volk sources list and library
########################################################################
-IF(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32)
+if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32)
#http://gcc.gnu.org/wiki/Visibility
- ADD_DEFINITIONS(-fvisibility=hidden)
-ENDIF()
+ add_definitions(-fvisibility=hidden)
+endif()
-INCLUDE_DIRECTORIES(
+include_directories(
${CMAKE_SOURCE_DIR}/include
${CMAKE_BINARY_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
-LIST(APPEND volk_sources
+list(APPEND volk_sources
${CMAKE_CURRENT_SOURCE_DIR}/volk_prefs.c
${CMAKE_CURRENT_SOURCE_DIR}/volk_rank_archs.c
${volk_gen_sources}
)
#set the machine definitions where applicable
-SET_SOURCE_FILES_PROPERTIES(
+set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/volk.c
${CMAKE_CURRENT_BINARY_DIR}/volk_machines.c
PROPERTIES COMPILE_DEFINITIONS "${machine_defs}")
-IF(MSVC)
+if(MSVC)
#add compatibility includes for stdint types
- INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/msvc)
+ include_directories(${CMAKE_SOURCE_DIR}/msvc)
#compile the sources as C++ due to the lack of complex.h under MSVC
- SET_SOURCE_FILES_PROPERTIES(${volk_sources} PROPERTIES LANGUAGE CXX)
-ENDIF(MSVC)
+ set_source_files_properties(${volk_sources} PROPERTIES LANGUAGE CXX)
+endif(MSVC)
#create the volk runtime library
-ADD_LIBRARY(volk SHARED ${volk_sources})
-TARGET_LINK_LIBRARIES(volk ${ORC_LIBRARIES})
-SET_TARGET_PROPERTIES(volk PROPERTIES SOVERSION ${LIBVER})
-SET_TARGET_PROPERTIES(volk PROPERTIES DEFINE_SYMBOL "volk_EXPORTS")
+add_library(volk SHARED ${volk_sources})
+target_link_libraries(volk ${ORC_LIBRARIES})
+set_target_properties(volk PROPERTIES SOVERSION ${LIBVER})
+set_target_properties(volk PROPERTIES DEFINE_SYMBOL "volk_EXPORTS")
-INSTALL(TARGETS volk
+install(TARGETS volk
LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_runtime" # .so file
ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_devel" # .lib file
RUNTIME DESTINATION bin COMPONENT "volk_runtime" # .dll file
@@ -271,23 +271,23 @@ INSTALL(TARGETS volk
########################################################################
# Build the QA test application
########################################################################
-FIND_PACKAGE(Boost COMPONENTS unit_test_framework)
+find_package(Boost COMPONENTS unit_test_framework)
-IF(Boost_FOUND)
+if(Boost_FOUND)
-SET_SOURCE_FILES_PROPERTIES(
+set_source_files_properties(
${CMAKE_CURRENT_SOURCE_DIR}/testqa.cc PROPERTIES
COMPILE_DEFINITIONS "BOOST_TEST_DYN_LINK;BOOST_TEST_MAIN"
)
-INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
-LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+include_directories(${Boost_INCLUDE_DIRS})
+link_directories(${Boost_LIBRARY_DIRS})
-ADD_EXECUTABLE(test_all
+add_executable(test_all
${CMAKE_CURRENT_SOURCE_DIR}/testqa.cc
${CMAKE_CURRENT_SOURCE_DIR}/qa_utils.cc
)
-TARGET_LINK_LIBRARIES(test_all volk ${Boost_LIBRARIES})
+target_link_libraries(test_all volk ${Boost_LIBRARIES})
#ADD_TEST(qa_volk_test_all test_all)
-ENDIF()
+endif()