diff --git a/FFTS/.gitignore b/FFTS/.gitignore deleted file mode 100644 index 0023a53..0000000 --- a/FFTS/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -/.build -/Packages -xcuserdata/ -DerivedData/ -.swiftpm/configuration/registries.json -.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata -.netrc diff --git a/FFTS/Package.swift b/FFTS/Package.swift deleted file mode 100644 index 0cac178..0000000 --- a/FFTS/Package.swift +++ /dev/null @@ -1,24 +0,0 @@ -// swift-tools-version: 6.0 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "FFTS", - products: [ - // Products define the executables and libraries a package produces, making them visible to other packages. - .library( - name: "FFTS", - targets: ["FFTS"]), - ], - targets: [ - .plugin(name: "CMakePlugin", capability: .buildTool()), - .target( - name: "FFTS", - plugins: ["CMakePlugin"]), - .testTarget( - name: "FFTSTests", - dependencies: ["FFTS"] - ), - ] -) diff --git a/FFTS/Plugins/CMakePlugin/CMakePlugin.swift b/FFTS/Plugins/CMakePlugin/CMakePlugin.swift deleted file mode 100644 index 556baa5..0000000 --- a/FFTS/Plugins/CMakePlugin/CMakePlugin.swift +++ /dev/null @@ -1,3 +0,0 @@ -import PackagePlugin - -@main diff --git a/FFTS/Sources/FFTS/.gitignore b/FFTS/Sources/FFTS/.gitignore deleted file mode 100644 index bad3797..0000000 --- a/FFTS/Sources/FFTS/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -*.o -*.Po -*.a -*.la -*.lai -*.lo -*.Plo -*.so -*~ -*.log -*.swp -*.cache/* - -*Makefile - -config.h -config.status -compile -libtool -ffts.pc -stamp-h1 -tests/test - -java/android/local.properties -java/android/gen/* -java/android/obj/* -java/android/bin/* - -build diff --git a/FFTS/Sources/FFTS/.travis.yml b/FFTS/Sources/FFTS/.travis.yml deleted file mode 100644 index 1e70e8e..0000000 --- a/FFTS/Sources/FFTS/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: c -os: - - linux - - osx -addons: - apt: - packages: - - cmake - sources: - - kubuntu-backports -script: - - mkdir build && cd build && cmake .. && cmake --build . diff --git a/FFTS/Sources/FFTS/AUTHORS b/FFTS/Sources/FFTS/AUTHORS deleted file mode 100644 index cb27f48..0000000 --- a/FFTS/Sources/FFTS/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -FFTS was developed at the University of Waikato by Anthony Blake - -The following authors have also graciously contributed code: - -Michael Zucchi -- JNI java/android support -Michael Cree -- Architecture specific code, including support for Altivec and DEC Alpha diff --git a/FFTS/Sources/FFTS/CMakeLists.txt b/FFTS/Sources/FFTS/CMakeLists.txt deleted file mode 100644 index a0b9085..0000000 --- a/FFTS/Sources/FFTS/CMakeLists.txt +++ /dev/null @@ -1,626 +0,0 @@ -cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) - -project(ffts C ASM) - -# TODO: to support AutoConfigure building, this should came from "template" file -set(FFTS_MAJOR 0) -set(FFTS_MINOR 9) -set(FFTS_MICRO 0) - -set(FFTS_VERSION "${FFTS_MAJOR}.${FFTS_MINOR}.${FFTS_MICRO}") - -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) -set_property(GLOBAL PROPERTY USE_FOLDERS ON) - -# default build type is Debug which means no optimization -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release") -endif(NOT CMAKE_BUILD_TYPE) - -# installation parameters -set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/ffts) -set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib) - - -set(CMAKE_COMPILER_GCCLIKE OFF) -if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - # using Clang - set(CMAKE_COMPILER_GCCLIKE ON) -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - # using GCC - set(CMAKE_COMPILER_GCCLIKE ON) -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - # using Intel C++ -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - # using Visual Studio C++ -endif() - - -# common options - -# !!!! FOR TESTING ONLY !!!! -option(ENABLE_AVX - "Enables AVX instructions." OFF -) -# !!!! FOR TESTING ONLY !!!! -option(ENABLE_DOUBLE - "Enables double precision" OFF -) - -option(ENABLE_NEON - "Enables the use of NEON instructions." OFF -) - -option(ENABLE_VFP - "Enables the use of VFP instructions." OFF -) - -option(DISABLE_DYNAMIC_CODE - "Disables the use of dynamic machine code generation." OFF -) - -option(GENERATE_POSITION_INDEPENDENT_CODE - "Generate position independent code" OFF -) - -option(ENABLE_SHARED - "Enable building a shared library." OFF -) - -option(ENABLE_STATIC - "Enable building a static library." ON -) - -include(CheckCSourceCompiles) -include(CheckCSourceRuns) -include(CheckFunctionExists) -include(CheckIncludeFile) -include(CheckSymbolExists) - -# Ensure defined when building FFTS (as opposed to using it from -# another project). Used to export functions from Windows DLL. -add_definitions(-DFFTS_BUILD) - -# check existence of various headers -check_include_file(inttypes.h HAVE_INTTYPES_H) -check_include_file(malloc.h HAVE_MALLOC_H) -check_include_file(mm_malloc.h HAVE_MM_MALLOC_H) -check_include_file(stdint.h HAVE_STDINT_H) -check_include_file(stdlib.h HAVE_STDLIB_H) -check_include_file(string.h HAVE_STRING_H) -check_include_file(sys/mman.h HAVE_SYS_MMAN_H) -check_include_file(unistd.h HAVE_UNISTD_H) - -if(HAVE_INTTYPES_H) - add_definitions(-DHAVE_INTTYPES_H) -endif(HAVE_INTTYPES_H) - -if(HAVE_MALLOC_H) - add_definitions(-DHAVE_MALLOC_H) -endif(HAVE_MALLOC_H) - -if(HAVE_MM_MALLOC_H) - add_definitions(-DHAVE_MM_MALLOC_H) -endif(HAVE_MM_MALLOC_H) - -if(HAVE_STDINT_H) - add_definitions(-DHAVE_STDINT_H) -endif(HAVE_STDINT_H) - -if(HAVE_STDLIB_H) - add_definitions(-DHAVE_STDLIB_H) -endif(HAVE_STDLIB_H) - -if(HAVE_STRING_H) - add_definitions(-DHAVE_STRING_H) -endif(HAVE_STRING_H) - -if(HAVE_SYS_MMAN_H) - add_definitions(-DHAVE_SYS_MMAN_H) -endif(HAVE_SYS_MMAN_H) - -if(HAVE_UNISTD_H) - add_definitions(-DHAVE_UNISTD_H) -endif(HAVE_UNISTD_H) - -# check existence of various declarations -check_symbol_exists(memalign malloc.h HAVE_DECL_MEMALIGN) -check_symbol_exists(posix_memalign stdlib.h HAVE_DECL_POSIX_MEMALIGN) -check_symbol_exists(valloc stdlib.h HAVE_DECL_VALLOC) -check_symbol_exists(_mm_malloc malloc.h HAVE_DECL__MM_MALLOC) - -if(HAVE_DECL_MEMALIGN) - add_definitions(-DHAVE_DECL_MEMALIGN) -endif(HAVE_DECL_MEMALIGN) - -if(HAVE_DECL_POSIX_MEMALIGN) - add_definitions(-DHAVE_DECL_POSIX_MEMALIGN) -endif(HAVE_DECL_POSIX_MEMALIGN) - -if(HAVE_DECL_VALLOC) - add_definitions(-DHAVE_DECL_VALLOC) -endif(HAVE_DECL_VALLOC) - -if(HAVE_DECL__MM_MALLOC) - add_definitions(-DHAVE_DECL__MM_MALLOC) -endif(HAVE_DECL__MM_MALLOC) - -# check existence of various functions -check_function_exists(memalign HAVE_MEMALIGN) -check_function_exists(posix_memalign HAVE_POSIX_MEMALIGN) -check_function_exists(valloc HAVE_VALLOC) -check_function_exists(_mm_malloc HAVE__MM_MALLOC) - -if(HAVE_MEMALIGN) - add_definitions(-DHAVE_MEMALIGN) -endif(HAVE_MEMALIGN) - -if(HAVE_POSIX_MEMALIGN) - add_definitions(-DHAVE_POSIX_MEMALIGN) -endif(HAVE_POSIX_MEMALIGN) - -if(HAVE_VALLOC) - add_definitions(-DHAVE_VALLOC) -endif(HAVE_VALLOC) - -if(HAVE__MM_MALLOC) - add_definitions(-DHAVE__MM_MALLOC) -endif(HAVE__MM_MALLOC) - -# backup flags -set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - -# Determinate if we are cross-compiling -if(NOT CMAKE_CROSSCOMPILING) - if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") - # Determinate ARM architecture - - # Try to execute quietly without messages - set(CMAKE_REQUIRED_QUIET 1) - - # The test for ARM architecture - set(TEST_SOURCE_CODE "int main() { return 0; }") - - # GCC documentation says "native" is only supported on Linux, but let's try - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -march=native") - check_c_source_runs("${TEST_SOURCE_CODE}" GCC_MARCH_NATIVE_FLAG_SUPPORTED) - - if(NOT GCC_MARCH_NATIVE_FLAG_SUPPORTED) - # Fallback trying generic ARMv7 - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -march=armv7-a") - check_c_source_runs("${TEST_SOURCE_CODE}" GCC_MARCH_ARMV7A_FLAG_SUPPORTED) - - if(NOT GCC_MARCH_ARMV7A_FLAG_SUPPORTED) - # Fallback trying generic ARMv6 - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -march=armv6") - check_c_source_runs("${TEST_SOURCE_CODE}" GCC_MARCH_ARMV6_FLAG_SUPPORTED) - - if(NOT GCC_MARCH_ARMV6_FLAG_SUPPORTED) - message(WARNING "FFTS failed to determinate ARM architecture") - set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) - else() - message("FFTS is build using 'march=armv6'") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -march=armv6") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv6") - endif(NOT GCC_MARCH_ARMV6_FLAG_SUPPORTED) - else() - message("FFTS is build using 'march=armv7-a'") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -march=armv7-a") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv7-a") - endif(NOT GCC_MARCH_ARMV7A_FLAG_SUPPORTED) - else() - message("FFTS is build using 'march=native'") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -march=native") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native") - endif(NOT GCC_MARCH_NATIVE_FLAG_SUPPORTED) - - # Determinate what floating-point hardware (or hardware emulation) is available - set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - - # The test for ARM NEON support - set(TEST_SOURCE_CODE " - #include - int main() - { - float32x4_t v; - float zeros[4] = {0.0f, 0.0f, 0.0f, 0.0f}; - v = vld1q_f32(zeros); - return 0; - }" - ) - - # Test running with -mfpu=neon and -mfloat-abi=hard - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -mfpu=neon -mfloat-abi=hard") - check_c_source_runs("${TEST_SOURCE_CODE}" NEON_HARDFP_SUPPORTED) - - if(NOT NEON_HARDFP_SUPPORTED) - # Test running with -mfpu=neon and -mfloat-abi=softfp - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -mfpu=neon -mfloat-abi=softfp") - check_c_source_runs("${TEST_SOURCE_CODE}" NEON_SOFTFP_SUPPORTED) - - if(NOT NEON_SOFTFP_SUPPORTED) - if(ENABLE_NEON) - message(FATAL_ERROR "FFTS cannot enable NEON on this platform") - endif(ENABLE_NEON) - else() - message("FFTS is using 'neon' FPU and 'softfp' float ABI") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -mfpu=neon -mfloat-abi=softfp") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon -mfloat-abi=softfp") - set(ENABLE_NEON ON) - endif(NOT NEON_SOFTFP_SUPPORTED) - else() - message("FFTS is using 'neon' FPU and 'hard' float ABI") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -mfpu=neon -mfloat-abi=hard") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon -mfloat-abi=hard") - set(ENABLE_NEON ON) - endif(NOT NEON_HARDFP_SUPPORTED) - - # Fallback using VFP if NEON is not supported - if(NOT NEON_HARDFP_SUPPORTED AND NOT NEON_SOFTFP_SUPPORTED) - # Test for ARM VFP support - set(TEST_SOURCE_CODE " - double sum(double a, double b) - { - return a + b; - } - int main() - { - double s1, s2, v1 = 1.0, v2 = 2.0, v3 = 1.0e-322; - s1 = sum(v1, v2); - s2 = sum(v3, v3); - return 0; - }" - ) - - # Test running with -mfpu=vfp - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -mfpu=vfp") - check_c_source_runs("${TEST_SOURCE_CODE}" VFP_SUPPORTED) - - if(NOT VFP_SUPPORTED) - # Fallback using emulation if VFP is not supported - if(ENABLE_VFP) - message(FATAL_ERROR "FFTS cannot enable VFP on this platform") - endif(ENABLE_VFP) - - message(WARNING "FFTS is using 'soft' FPU") - else() - message("FFTS is using 'vfp' FPU") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -mfpu=vfp") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfp") - set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - set(ENABLE_VFP ON) - endif(NOT VFP_SUPPORTED) - - # Test running with -mfloat-abi=hard - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -mfloat-abi=hard") - - # Use the same test as before - check_c_source_runs("${TEST_SOURCE_CODE}" HARDFP_SUPPORTED) - - if(NOT HARDFP_SUPPORTED) - # Test running with -mfloat-abi=softfp - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -mfloat-abi=softfp") - check_c_source_runs("${TEST_SOURCE_CODE}" SOFTFP_SUPPORTED) - - if(NOT SOFTFP_SUPPORTED) - # Most likely development libraries are missing - message(WARNING "FFTS is using 'soft' float ABI") - else() - message("FFTS is using 'softfp' float ABI") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -mfloat-abi=softfp") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=softfp") - endif(NOT SOFTFP_SUPPORTED) - else() - message("FFTS is using 'hard' float ABI") - set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -mfloat-abi=hard") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard") - endif(NOT HARDFP_SUPPORTED) - endif(NOT NEON_HARDFP_SUPPORTED AND NOT NEON_SOFTFP_SUPPORTED) - else() - # enable SSE code generation - if(CMAKE_COMPILER_GCCLIKE) - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -msse") - endif(CMAKE_COMPILER_GCCLIKE) - - # check if the platform has support for SSE intrinsics - check_include_file(xmmintrin.h HAVE_XMMINTRIN_H) - if(HAVE_XMMINTRIN_H) - add_definitions(-DHAVE_SSE) - set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - - # TODO: not the right place - if(ENABLE_AVX) - add_definitions(-DHAVE_AVX) - endif(ENABLE_AVX) - if(ENABLE_DOUBLE) - add_definitions(-DFFTS_DOUBLE) - endif(ENABLE_DOUBLE) - endif(HAVE_XMMINTRIN_H) - - # enable SSE2 code generation - if(CMAKE_COMPILER_GCCLIKE) - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -msse2") - endif(CMAKE_COMPILER_GCCLIKE) - - # check if the platform has support for SSE2 intrinsics - check_include_file(emmintrin.h HAVE_EMMINTRIN_H) - if(HAVE_EMMINTRIN_H) - add_definitions(-DHAVE_SSE2) - set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - endif(HAVE_EMMINTRIN_H) - - # enable SSE3 code generation - if(CMAKE_COMPILER_GCCLIKE) - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS_SAVE} -msse3") - endif(CMAKE_COMPILER_GCCLIKE) - - # check if the platform has support for SSE3 intrinsics - check_include_file(pmmintrin.h HAVE_PMMINTRIN_H) - if(HAVE_PMMINTRIN_H) - add_definitions(-DHAVE_PMMINTRIN_H) - add_definitions(-DHAVE_SSE3) - set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - else() - # check if the platform has specific intrinsics - check_include_file(intrin.h HAVE_INTRIN_H) - if(HAVE_INTRIN_H) - add_definitions(-DHAVE_INTRIN_H) - - check_c_source_compiles(" - #include - int main(int argc, char** argv) - { - (void) argv; - (void) argc; - return _mm_movemask_ps(_mm_moveldup_ps(_mm_set_ss(1.0f))); - }" HAVE__MM_MOVELDUP_PS - ) - - if(HAVE__MM_MOVELDUP_PS) - # assume that we have all SSE3 intrinsics - add_definitions(-DHAVE_SSE3) - endif(HAVE__MM_MOVELDUP_PS) - endif(HAVE_INTRIN_H) - endif(HAVE_PMMINTRIN_H) - endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") -else() - # TODO: Add detections for compiler support and headers -endif(NOT CMAKE_CROSSCOMPILING) - -# restore flags -set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) - -# compiler settings -if(MSVC) - # enable all warnings but also disable some.. - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /wd4127") - - # mark debug versions - set(CMAKE_DEBUG_POSTFIX "d") - - add_definitions(-D_USE_MATH_DEFINES) -elseif(CMAKE_COMPILER_GCCLIKE) - include(CheckCCompilerFlag) - include(CheckLibraryExists) - - # enable all warnings - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra") - - # check if we can control visibility of symbols - check_c_compiler_flag(-fvisibility=hidden HAVE_GCC_VISIBILITY) - if(HAVE_GCC_VISIBILITY) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") - add_definitions(-DHAVE_GCC_VISIBILITY) - endif(HAVE_GCC_VISIBILITY) - - # some systems need libm for the math functions to work - check_library_exists(m pow "" HAVE_LIBM) - if(HAVE_LIBM) - list(APPEND CMAKE_REQUIRED_LIBRARIES m) - list(APPEND FFTS_EXTRA_LIBRARIES m) - endif(HAVE_LIBM) - - if(HAVE_PMMINTRIN_H) - add_definitions(-msse3) - elseif(HAVE_EMMINTRIN_H) - add_definitions(-msse2) - elseif(HAVE_XMMINTRIN_H) - add_definitions(-msse) - endif(HAVE_PMMINTRIN_H) -endif(MSVC) - -include_directories(include) -include_directories(src) -include_directories(${CMAKE_CURRENT_BINARY_DIR}) - -set(FFTS_HEADERS - include/ffts.h -) - -set(FFTS_SOURCES - src/ffts_attributes.h - src/ffts.c - src/ffts_chirp_z.c - src/ffts_chirp_z.h - src/ffts_cpu.c - src/ffts_cpu.h - src/ffts_internal.h - src/ffts_nd.c - src/ffts_nd.h - src/ffts_real.h - src/ffts_real.c - src/ffts_real_nd.c - src/ffts_real_nd.h - src/ffts_transpose.c - src/ffts_transpose.h - src/ffts_trig.c - src/ffts_trig.h - src/ffts_static.c - src/ffts_static.h - src/macros.h - src/patterns.h - src/types.h -) - -if(NOT DISABLE_DYNAMIC_CODE) - if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") - list(APPEND FFTS_SOURCES - src/codegen_sse.h - ) - else() - message(WARNING "Dynamic code is only supported with x64, disabling dynamic code.") - set(DISABLE_DYNAMIC_CODE ON) - endif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") -endif(NOT DISABLE_DYNAMIC_CODE) - -if(ENABLE_NEON) - list(APPEND FFTS_SOURCES - src/neon.s - ) - - if(DISABLE_DYNAMIC_CODE) - list(APPEND FFTS_SOURCES - src/neon_static.s - ) - endif(DISABLE_DYNAMIC_CODE) - - add_definitions(-DHAVE_NEON) -elseif(ENABLE_VFP) - if(NOT DISABLE_DYNAMIC_CODE) - list(APPEND FFTS_SOURCES - src/vfp.s - ) - endif(NOT DISABLE_DYNAMIC_CODE) - - add_definitions(-DHAVE_VFP) -elseif(HAVE_XMMINTRIN_H) - add_definitions(-DHAVE_SSE) - - list(APPEND FFTS_SOURCES - src/macros-avx.h - src/macros-sse.h - ) -endif(ENABLE_NEON) - -if(DISABLE_DYNAMIC_CODE) - add_definitions(-DDYNAMIC_DISABLED) -else() - list(APPEND FFTS_SOURCES - src/codegen.c - src/codegen.h - ) -endif(DISABLE_DYNAMIC_CODE) - -if(GENERATE_POSITION_INDEPENDENT_CODE) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) -endif(GENERATE_POSITION_INDEPENDENT_CODE) - -if(ENABLE_SHARED) - add_library(ffts_shared SHARED - ${FFTS_HEADERS} - ${FFTS_SOURCES} - ) - - # On unix-like platforms the library is called "libffts.so" and on Windows "ffts.dll" - set_target_properties(ffts_shared PROPERTIES - DEFINE_SYMBOL FFTS_SHARED - OUTPUT_NAME ffts - VERSION ${FFTS_MAJOR}.${FFTS_MINOR}.${FFTS_MICRO} - ) - - install( TARGETS ffts_shared DESTINATION ${LIB_INSTALL_DIR} ) -endif(ENABLE_SHARED) - -if(ENABLE_STATIC) - add_library(ffts_static STATIC - ${FFTS_HEADERS} - ${FFTS_SOURCES} - ) - - if(UNIX) - # On unix-like platforms the library is called "libffts.a" - set_target_properties(ffts_static PROPERTIES OUTPUT_NAME ffts) - endif(UNIX) - - install( TARGETS ffts_static DESTINATION ${LIB_INSTALL_DIR} ) -endif(ENABLE_STATIC) - -if(ENABLE_STATIC OR ENABLE_SHARED) - find_path(MPFR_INCLUDES - NAMES mpfr.h - PATHS ${INCLUDE_INSTALL_DIR} - ) - find_library(MPFR_LIBRARIES mpfr PATHS ${LIB_INSTALL_DIR}) - find_package(OpenMP) - - if(MPFR_INCLUDES) - add_definitions(-DHAVE_MPFR_H) - include_directories(${MPFR_INCLUDES}) - endif(MPFR_INCLUDES) - - add_executable(ffts_trig_test - tests/trig_test.c - ) - - target_link_libraries(ffts_trig_test ffts) - if(MPFR_LIBRARIES) - target_link_libraries(ffts_trig_test ${MPFR_LIBRARIES}) - endif(MPFR_LIBRARIES) - - if(OPENMP_FOUND) - if(MSVC) - set_target_properties(ffts_trig_test PROPERTIES - COMPILE_FLAGS "${OpenMP_C_FLAGS}" - LINK_FLAGS "${OpenMP_EXE_LINKER_FLAGS}" - ) - else() - set_target_properties(ffts_trig_test PROPERTIES - COMPILE_FLAGS "${OpenMP_C_FLAGS}" - LINK_FLAGS "${OpenMP_C_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}" - ) - endif(MSVC) - endif(OPENMP_FOUND) - - add_executable(ffts_test - tests/test.c - ) - - # link with static library by default - if(ENABLE_STATIC) - add_library(ffts ALIAS ffts_static) - else() - add_library(ffts ALIAS ffts_shared) - endif(ENABLE_STATIC) - - target_link_libraries(ffts_test - ffts - ${FFTS_EXTRA_LIBRARIES} - ) - - add_executable(ffts_cpu_test - src/ffts_cpu.c - src/ffts_cpu.h - tests/cpu_test.c - ) - - set_target_properties(ffts_cpu_test PROPERTIES COMPILE_DEFINITIONS FFTS_BUILDING_CPU_TEST) -endif(ENABLE_STATIC OR ENABLE_SHARED) - -# generate packageconfig file -if(UNIX) - include(FindPkgConfig QUIET) - if(PKG_CONFIG_FOUND) - # convert lists of link libraries into -lstdc++ -lm etc.. - foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS}) - set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}") - endforeach() - # Produce a pkg-config file for linking against the shared lib - configure_file("ffts.pc.cmake.in" "ffts.pc" @ONLY) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ffts.pc" - DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") - endif(PKG_CONFIG_FOUND) -endif(UNIX) - -install( FILES - ${FFTS_HEADERS} - DESTINATION ${INCLUDE_INSTALL_DIR} ) diff --git a/FFTS/Sources/FFTS/COPYRIGHT b/FFTS/Sources/FFTS/COPYRIGHT deleted file mode 100644 index f13acae..0000000 --- a/FFTS/Sources/FFTS/COPYRIGHT +++ /dev/null @@ -1,31 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, 2013 Anthony M. Blake - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ diff --git a/FFTS/Sources/FFTS/Makefile.am b/FFTS/Sources/FFTS/Makefile.am deleted file mode 100644 index 56427aa..0000000 --- a/FFTS/Sources/FFTS/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -AUTOMAKE_OPTIONS = foreign -SUBDIRS = src tests -EXTRA_DIST=COPYRIGHT ffts.pc.in build_iphone.sh build_android.sh -ACLOCAL_AMFLAGS = -Im4 - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = ffts.pc - -if ENABLE_JNI -SUBDIRS += java -endif diff --git a/FFTS/Sources/FFTS/Makefile.in b/FFTS/Sources/FFTS/Makefile.in deleted file mode 100644 index 6540453..0000000 --- a/FFTS/Sources/FFTS/Makefile.in +++ /dev/null @@ -1,879 +0,0 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@ENABLE_JNI_TRUE@am__append_1 = java -subdir = . -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/configure $(am__configure_deps) \ - $(srcdir)/config.h.in $(srcdir)/ffts.pc.in AUTHORS README \ - compile config.guess config.sub depcomp install-sh missing \ - ltmain.sh -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_classpath.m4 \ - $(top_srcdir)/m4/ax_check_java_home.m4 \ - $(top_srcdir)/m4/ax_java_options.m4 \ - $(top_srcdir)/m4/ax_jni_include_dir.m4 \ - $(top_srcdir)/m4/ax_prog_jar.m4 \ - $(top_srcdir)/m4/ax_prog_javac.m4 \ - $(top_srcdir)/m4/ax_prog_javac_works.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = ffts.pc -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -DIST_SUBDIRS = src tests java -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -DIST_TARGETS = dist-gzip -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -JAR = @JAR@ -JAVA = @JAVA@ -JAVAC = @JAVAC@ -JAVACFLAGS = @JAVACFLAGS@ -JAVAFLAGS = @JAVAFLAGS@ -JAVAPREFIX = @JAVAPREFIX@ -JAVA_PATH_NAME = @JAVA_PATH_NAME@ -JNI_CPPFLAGS = @JNI_CPPFLAGS@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -_ACJNI_JAVAC = @_ACJNI_JAVAC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign -SUBDIRS = src tests $(am__append_1) -EXTRA_DIST = COPYRIGHT ffts.pc.in build_iphone.sh build_android.sh -ACLOCAL_AMFLAGS = -Im4 -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = ffts.pc -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @test -f $@ || rm -f stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -ffts.pc: $(top_builddir)/config.status $(srcdir)/ffts.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__post_remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(am__recursive_targets) all install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libtool cscope cscopelist-am ctags ctags-am dist \ - dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ - dist-xz dist-zip distcheck distclean distclean-generic \ - distclean-hdr distclean-libtool distclean-tags distcleancheck \ - distdir distuninstallcheck dvi dvi-am html html-am info \ - info-am install install-am install-data install-data-am \ - install-dvi install-dvi-am install-exec install-exec-am \ - install-html install-html-am install-info install-info-am \ - install-man install-pdf install-pdf-am install-pkgconfigDATA \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-pkgconfigDATA - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/FFTS/Sources/FFTS/README.md b/FFTS/Sources/FFTS/README.md deleted file mode 100644 index 50fb60e..0000000 --- a/FFTS/Sources/FFTS/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# FFTS -- The Fastest Fourier Transform in the South - -[![Build Status](https://travis-ci.org/linkotec/ffts.svg?branch=master)](https://travis-ci.org/linkotec/ffts) - -To build for Android, edit and run build_android.sh - -To build for iOS, edit and run build_iphone.sh - -To build for Linux or OS X on x86, run - ./configure --enable-sse --enable-single --prefix=/usr/local - make - make install - -Optionally build for Windows and Linux with CMake, run - mkdir build - cd build - cmake .. - -FFTS dynamically generates code at runtime. This can be disabled with ---disable-dynamic-code - -Note that 32 bit x86 dynamic machine code generation is not supported at the moment. - -For JNI targets: --enable-jni will build the jni stuff automatically for -the host target, and --enable-shared must also be added manually for it to -work. - -If you like FFTS, please show your support by sending a postcard to: - -Anthony Blake
-Department of Computer Science
-The University of Waikato
-Private Bag 3105
-Hamilton 3240
-NEW ZEALAND diff --git a/FFTS/Sources/FFTS/aclocal.m4 b/FFTS/Sources/FFTS/aclocal.m4 deleted file mode 100644 index 2c0f014..0000000 --- a/FFTS/Sources/FFTS/aclocal.m4 +++ /dev/null @@ -1,9763 +0,0 @@ -# generated automatically by aclocal 1.14 -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3337 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2' -macro_revision='1.3337' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# Copyright (C) 2002-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.14' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.14], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.14])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# Figure out how to run the assembler. -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AS -# ---------- -AC_DEFUN([AM_PROG_AS], -[# By default we simply use the C compiler to build assembly code. -AC_REQUIRE([AC_PROG_CC]) -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS -AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) -AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) -_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl -]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/ax_check_classpath.m4]) -m4_include([m4/ax_check_java_home.m4]) -m4_include([m4/ax_java_options.m4]) -m4_include([m4/ax_jni_include_dir.m4]) -m4_include([m4/ax_prog_jar.m4]) -m4_include([m4/ax_prog_javac.m4]) -m4_include([m4/ax_prog_javac_works.m4]) diff --git a/FFTS/Sources/FFTS/build_android.sh b/FFTS/Sources/FFTS/build_android.sh deleted file mode 100755 index 38e9d2c..0000000 --- a/FFTS/Sources/FFTS/build_android.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/sh -# Compiles ffts for Android -# Make sure you have NDK_ROOT defined in .bashrc or .bash_profile -# Modify INSTALL_DIR to suit your situation - -INSTALL_DIR="`pwd`/java/android/bin" - -PLATFORM=android-8 -TOOL="4.6" - -case $(uname -s) in - Darwin) - CONFBUILD=i386-apple-darwin`uname -r` - HOSTPLAT=darwin-x86 - ;; - Linux) - CONFBUILD=x86-unknown-linux - HOSTPLAT=linux-`uname -m` - ;; - *) echo $0: Unknown platform; exit -esac - -case arm in - arm) - TARGPLAT=arm-linux-androideabi - ARCH=arm - CONFTARG=arm-eabi - ;; - x86) - TARGPLAT=x86 - ARCH=x86 - CONFTARG=x86 - ;; - mips) - ## probably wrong - TARGPLAT=mipsel-linux-android - ARCH=mips - CONFTARG=mips - ;; - *) echo $0: Unknown target; exit -esac - -: ${NDK_ROOT:?} - -echo "Using: $NDK_ROOT/toolchains/${TARGPLAT}-${TOOL}/prebuilt/${HOSTPLAT}/bin" - -export PATH="$NDK_ROOT/toolchains/${TARGPLAT}-${TOOL}/prebuilt/${HOSTPLAT}/bin/:$PATH" -export SYS_ROOT="$NDK_ROOT/platforms/${PLATFORM}/arch-${ARCH}/" -export CC="${TARGPLAT}-gcc --sysroot=$SYS_ROOT" -export LD="${TARGPLAT}-ld" -export AR="${TARGPLAT}-ar" -export RANLIB="${TARGPLAT}-ranlib" -export STRIP="${TARGPLAT}-strip" -export CFLAGS="-Os" - -mkdir -p $INSTALL_DIR -./configure --enable-neon --build=${CONFBUILD} --host=${CONFTARG} --prefix=$INSTALL_DIR LIBS="-lc -lgcc" - -make clean -make -make install - -if [ -z "$ANDROID_HOME" ] ; then - echo "" - echo " No ANDROID_HOME defined" - echo " Android JNI interfaces will not be built" - echo -else - echo - echo "Using android_home ${ANDROID_HOME}" - echo - ( cd java/android ; ${ANDROID_HOME}/tools/android update lib-project -p . ) || exit 1 - ( cd java/android/jni ; ${NDK_ROOT}/ndk-build V=1 ) || exit 1 - ( cd java/android ; ant release ) || exit 1 - echo - echo "Android library project location:" - echo " `pwd`/java/android" - echo -fi -exit 0 diff --git a/FFTS/Sources/FFTS/build_iphone.sh b/FFTS/Sources/FFTS/build_iphone.sh deleted file mode 100755 index 8817af6..0000000 --- a/FFTS/Sources/FFTS/build_iphone.sh +++ /dev/null @@ -1,22 +0,0 @@ -#/bin/sh -# Compiles ffts for iOS -# Modify INSTALL_DIR, SDKVER and DEVROOT to suit your situation - -INSTALL_DIR="`pwd`/build" - -export SDKVER="6.1" -export DEVROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer" -export SDKROOT="$DEVROOT/SDKs/iPhoneOS$SDKVER.sdk" -export CFLAGS="-O3 -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-shorten-64-to-32 -Wno-trigraphs -fpascal-strings -miphoneos-version-min=5.0 -mcpu=cortex-a9 -arch armv7 -mfpu=neon -pipe -isysroot $SDKROOT -isystem $SDKROOT/usr/include -isystem $DEVROOT/usr/include -mno-thumb -no-integrated-as" -export AR="$DEVROOT/usr/bin/ar" -export CC="clang" - - -mkdir -p $INSTALL_DIR -./configure --enable-neon --build=i386-apple-darwin`uname -r` --host=arm-eabi --prefix=$INSTALL_DIR - -make clean -make -make install - -exit 0 diff --git a/FFTS/Sources/FFTS/config.guess b/FFTS/Sources/FFTS/config.guess deleted file mode 100755 index 137bedf..0000000 --- a/FFTS/Sources/FFTS/config.guess +++ /dev/null @@ -1,1537 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -timestamp='2012-08-14' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/FFTS/Sources/FFTS/config.h.in b/FFTS/Sources/FFTS/config.h.in deleted file mode 100644 index 6b3ca60..0000000 --- a/FFTS/Sources/FFTS/config.h.in +++ /dev/null @@ -1,147 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to disable dynamic code generation. */ -#undef DYNAMIC_DISABLED - -/* JNI being built. */ -#undef ENABLE_JNI - -/* Define to FFT in single precision. */ -#undef FFTS_PREC_SINGLE - -/* Define to 1 if you have the declaration of `memalign', and to 0 if you - don't. */ -#undef HAVE_DECL_MEMALIGN - -/* Define to 1 if you have the declaration of `posix_memalign', and to 0 if - you don't. */ -#undef HAVE_DECL_POSIX_MEMALIGN - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `gettimeofday' function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the `m' library (-lm). */ -#undef HAVE_LIBM - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to FFT with ARM NEON. */ -#undef HAVE_NEON - -/* Define to 1 if you have the `pow' function. */ -#undef HAVE_POW - -/* Define to FFT with SSE. */ -#undef HAVE_SSE - -/* Define to 1 if stdbool.h conforms to C99. */ -#undef HAVE_STDBOOL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_SOCKET_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to FFT with ARM VFP. */ -#undef HAVE_VFP - -/* Define to 1 if the system has the type `_Bool'. */ -#undef HAVE__BOOL - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION - -/* Define for Solaris 2.5.1 so the uint64_t typedef from , - , or is not used. If the typedef were allowed, the - #define below would cause a syntax error. */ -#undef _UINT64_T - -/* Define to `__inline__' or `__inline' if that's what the C compiler - calls it, or to nothing if 'inline' is not supported under any name. */ -#ifndef __cplusplus -#undef inline -#endif - -/* Define to the type of a signed integer type of width exactly 32 bits if - such a type exists and the standard includes do not define it. */ -#undef int32_t - -/* Define to the equivalent of the C99 'restrict' keyword, or to - nothing if this is not supported. Do not define if restrict is - supported directly. */ -#undef restrict -/* Work around a bug in Sun C++: it does not support _Restrict or - __restrict__, even though the corresponding Sun C compiler ends up with - "#define restrict _Restrict" or "#define restrict __restrict__" in the - previous line. Perhaps some future version of Sun C++ will work with - restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ -#if defined __SUNPRO_CC && !defined __RESTRICT -# define _Restrict -# define __restrict__ -#endif - -/* Define to `unsigned int' if does not define. */ -#undef size_t - -/* Define to the type of an unsigned integer type of width exactly 64 bits if - such a type exists and the standard includes do not define it. */ -#undef uint64_t - -// vim: set autoindent noexpandtab tabstop=3 shiftwidth=3: diff --git a/FFTS/Sources/FFTS/config.sub b/FFTS/Sources/FFTS/config.sub deleted file mode 100755 index bdda9e4..0000000 --- a/FFTS/Sources/FFTS/config.sub +++ /dev/null @@ -1,1786 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. - -timestamp='2012-08-18' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i386-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/FFTS/Sources/FFTS/configure b/FFTS/Sources/FFTS/configure deleted file mode 100755 index 2321b62..0000000 --- a/FFTS/Sources/FFTS/configure +++ /dev/null @@ -1,19454 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ffts 0.7. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and amb@anthonix.com -$0: about your system, including any error possibly output -$0: before this message. Then install a modern shell, or -$0: manually run the script under such a shell if you do -$0: have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='ffts' -PACKAGE_TARNAME='ffts' -PACKAGE_VERSION='0.7' -PACKAGE_STRING='ffts 0.7' -PACKAGE_BUGREPORT='amb@anthonix.com' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -ENABLE_JNI_FALSE -ENABLE_JNI_TRUE -JNI_CPPFLAGS -_ACJNI_JAVAC -JAR -JAVA_PATH_NAME -JAVAC -JAVA -JAVAFLAGS -JAVACFLAGS -JAVAPREFIX -HAVE_VFP_FALSE -HAVE_VFP_TRUE -HAVE_NEON_FALSE -HAVE_NEON_TRUE -HAVE_SSE_FALSE -HAVE_SSE_TRUE -DYNAMIC_DISABLED_FALSE -DYNAMIC_DISABLED_TRUE -am__fastdepCCAS_FALSE -am__fastdepCCAS_TRUE -CCASDEPMODE -CCASFLAGS -CCAS -CXXCPP -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -ac_ct_CC -CFLAGS -CC -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CXX -CPPFLAGS -LDFLAGS -CXXFLAGS -CXX -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_silent_rules -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_dynamic_code -enable_single -enable_sse -enable_neon -enable_vfp -with_float_abi -enable_jni -with_java_prefix -with_javac_flags -with_java_flags -' - ac_precious_vars='build_alias -host_alias -target_alias -CXX -CXXFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCC -CC -CFLAGS -CPP -CXXCPP -CCAS -CCASFLAGS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures ffts 0.7 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/ffts] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of ffts 0.7:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-shared[=PKGS] build shared libraries [default=no] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-dynamic-code dynamically generate code - --enable-single compile single-precision library - --enable-sse enable SSE extensions - --enable-neon enable NEON extensions - --enable-vfp enable VFP extensions - --enable-jni enable JNI binding - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - --with-float-abi=ABI set float abi for arm, hard or softfp (default is - softfp) - --with-java-prefix=PFX prefix where Java runtime is installed (optional) - --with-javac-flags=FLAGS flags to pass to the Java compiler (optional) - --with-java-flags=FLAGS flags to pass to the Java VM (optional) - -Some influential environment variables: - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CC C compiler command - CFLAGS C compiler flags - CPP C preprocessor - CXXCPP C++ preprocessor - CCAS assembler compiler command (defaults to CC) - CCASFLAGS assembler compiler flags (defaults to CFLAGS) - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -ffts configure 0.7 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_decl - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to amb@anthonix.com ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_find_intX_t LINENO BITS VAR -# ----------------------------------- -# Finds a signed integer type with width BITS, setting cache variable VAR -# accordingly. -ac_fn_c_find_intX_t () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 -$as_echo_n "checking for int$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - # Order is important - never check a type that is potentially smaller - # than half of the expected target width. - for ac_type in int$2_t 'int' 'long int' \ - 'long long int' 'short int' 'signed char'; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - enum { N = $2 / 2 - 1 }; -int -main () -{ -static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - enum { N = $2 / 2 - 1 }; -int -main () -{ -static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) - < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - case $ac_type in #( - int$2_t) : - eval "$3=yes" ;; #( - *) : - eval "$3=\$ac_type" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : - -else - break -fi - done -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_find_intX_t - -# ac_fn_c_find_uintX_t LINENO BITS VAR -# ------------------------------------ -# Finds an unsigned integer type with width BITS, setting cache variable VAR -# accordingly. -ac_fn_c_find_uintX_t () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 -$as_echo_n "checking for uint$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - # Order is important - never check a type that is potentially smaller - # than half of the expected target width. - for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ - 'unsigned long long int' 'unsigned short int' 'unsigned char'; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - case $ac_type in #( - uint$2_t) : - eval "$3=yes" ;; #( - *) : - eval "$3=\$ac_type" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : - -else - break -fi - done -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_find_uintX_t -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by ffts $as_me 0.7, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -am__api_version='1.14' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - - PACKAGE=ffts - VERSION=0.7 - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - - - -# AC_CONFIG_SRCDIR([include/common.h]) -ac_config_headers="$ac_config_headers config.h" - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -# Checks for programs. -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C++ compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -$as_echo_n "checking for C++ compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C++ compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -#AX_COMPILER_VENDOR -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.2' -macro_revision='1.3337' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options -# Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=no -fi - - - - - - - - - - - enable_dlopen=no - - - enable_win32_dll=no - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - gnu*) - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -# By default we simply use the C compiler to build assembly code. - -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - - - -depcc="$CCAS" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CCAS_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CCAS_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CCAS_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } -CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then - am__fastdepCCAS_TRUE= - am__fastdepCCAS_FALSE='#' -else - am__fastdepCCAS_TRUE='#' - am__fastdepCCAS_FALSE= -fi - - -#CXX="clang++" -#CXXFLAGS="$CXXFLAGS -stdlib=libc++" - -#SFFT_AR="/usr/bin/ar" -#SFFT_CFLAGS="$CFLAGS" -#SFFT_CC="$CC" -# Check whether --enable-dynamic-code was given. -if test "${enable_dynamic_code+set}" = set; then : - enableval=$enable_dynamic_code; sfft_dynamic=$enableval -else - sfft_dynamic=yes -fi - -if test "$sfft_dynamic" = "no"; then - -$as_echo "#define DYNAMIC_DISABLED 1" >>confdefs.h - -fi - if test "$sfft_dynamic" = "no"; then - DYNAMIC_DISABLED_TRUE= - DYNAMIC_DISABLED_FALSE='#' -else - DYNAMIC_DISABLED_TRUE='#' - DYNAMIC_DISABLED_FALSE= -fi - - -# Check whether --enable-single was given. -if test "${enable_single+set}" = set; then : - enableval=$enable_single; sfft_single=$enableval -else - sfft_single=no -fi - -if test "$sfft_single" = "yes"; then - -$as_echo "#define FFTS_PREC_SINGLE 1" >>confdefs.h - -fi -if test "$sfft_single" = "no"; then - -$as_echo "#define FFTS_PREC_SINGLE 0" >>confdefs.h - -fi - -# Check whether --enable-sse was given. -if test "${enable_sse+set}" = set; then : - enableval=$enable_sse; have_sse=$enableval -else - have_sse=no -fi - -if test "$have_sse" = "yes"; then - SIMD=sse - -$as_echo "#define HAVE_SSE 1" >>confdefs.h - -fi - if test "$have_sse" = "yes"; then - HAVE_SSE_TRUE= - HAVE_SSE_FALSE='#' -else - HAVE_SSE_TRUE='#' - HAVE_SSE_FALSE= -fi - - -# Check whether --enable-neon was given. -if test "${enable_neon+set}" = set; then : - enableval=$enable_neon; have_neon=$enableval -else - have_neon=no -fi - -if test "$have_neon" = "yes"; then - -$as_echo "#define HAVE_NEON 1" >>confdefs.h - -fi - if test "$have_neon" = "yes"; then - HAVE_NEON_TRUE= - HAVE_NEON_FALSE='#' -else - HAVE_NEON_TRUE='#' - HAVE_NEON_FALSE= -fi - - -# Check whether --enable-vfp was given. -if test "${enable_vfp+set}" = set; then : - enableval=$enable_vfp; have_vfp=$enableval -else - have_vfp=no -fi - -if test "$have_vfp" = "yes"; then - -$as_echo "#define HAVE_VFP 1" >>confdefs.h - -fi - if test "$have_vfp" = "yes"; then - HAVE_VFP_TRUE= - HAVE_VFP_FALSE='#' -else - HAVE_VFP_TRUE='#' - HAVE_VFP_FALSE= -fi - - - -# Check whether --with-float-abi was given. -if test "${with_float_abi+set}" = set; then : - withval=$with_float_abi; float_abi=$withval -else - float_abi=softfp -fi - - -# Check whether --enable-jni was given. -if test "${enable_jni+set}" = set; then : - enableval=$enable_jni; have_jni=$enableval -else - have_jni=no -fi - -if test "$have_jni" = "yes"; then - # Java stuff - - -# Check whether --with-java-prefix was given. -if test "${with_java_prefix+set}" = set; then : - withval=$with_java_prefix; -fi - - -# Check whether --with-javac-flags was given. -if test "${with_javac_flags+set}" = set; then : - withval=$with_javac_flags; -fi - - -# Check whether --with-java-flags was given. -if test "${with_java_flags+set}" = set; then : - withval=$with_java_flags; -fi - -JAVAPREFIX=$with_java_prefix -JAVACFLAGS=$with_javac_flags -JAVAFLAGS=$with_java_flags - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVA_HOME" >&5 -$as_echo_n "checking for JAVA_HOME... " >&6; } -# We used a fake loop so that we can use "break" to exit when the result -# is found. -while true -do - # If the user defined JAVA_HOME, don't touch it. - test "${JAVA_HOME+set}" = set && break - - # On Mac OS X 10.5 and following, run /usr/libexec/java_home to get - # the value of JAVA_HOME to use. - # (http://developer.apple.com/library/mac/#qa/qa2001/qa1170.html). - JAVA_HOME=`/usr/libexec/java_home 2>/dev/null` - test x"$JAVA_HOME" != x && break - - # See if we can find the java executable, and compute from there. - TRY_JAVA_HOME=`ls -dr /usr/java/* 2> /dev/null | head -n 1` - if test x$TRY_JAVA_HOME != x; then - PATH=$PATH:$TRY_JAVA_HOME/bin - fi - # Extract the first word of "java", so it can be a program name with args. -set dummy java; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_JAVA_PATH_NAME+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $JAVA_PATH_NAME in - [\\/]* | ?:[\\/]*) - ac_cv_path_JAVA_PATH_NAME="$JAVA_PATH_NAME" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_JAVA_PATH_NAME="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -JAVA_PATH_NAME=$ac_cv_path_JAVA_PATH_NAME -if test -n "$JAVA_PATH_NAME"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA_PATH_NAME" >&5 -$as_echo "$JAVA_PATH_NAME" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "x$JAVA_PATH_NAME" != x; then - JAVA_HOME=`echo $JAVA_PATH_NAME | sed "s/\(.*\)[/]bin[/]java.*/\1/"` - break - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not compute JAVA_HOME" >&5 -$as_echo "$as_me: Could not compute JAVA_HOME" >&6;} - break -done -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA_HOME" >&5 -$as_echo "$JAVA_HOME" >&6; } - - -if test "x$CLASSPATH" = x; then - echo "You have no CLASSPATH, I hope it is good" -else - echo "You have CLASSPATH $CLASSPATH, hope it is correct" -fi - - -if test "x$JAVAPREFIX" = x; then - test "x$JAVAC" = x && for ac_prog in "gcj -C" guavac jikes javac -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_JAVAC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$JAVAC"; then - ac_cv_prog_JAVAC="$JAVAC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_JAVAC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -JAVAC=$ac_cv_prog_JAVAC -if test -n "$JAVAC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5 -$as_echo "$JAVAC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$JAVAC" && break -done - -else - test "x$JAVAC" = x && for ac_prog in "gcj -C" guavac jikes javac -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_JAVAC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$JAVAC"; then - ac_cv_prog_JAVAC="$JAVAC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_JAVAC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -JAVAC=$ac_cv_prog_JAVAC -if test -n "$JAVAC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5 -$as_echo "$JAVAC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$JAVAC" && break -done -test -n "$JAVAC" || JAVAC="$JAVAPREFIX" - -fi -test "x$JAVAC" = x && as_fn_error $? "no acceptable Java compiler found in \$PATH" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $JAVAC works" >&5 -$as_echo_n "checking if $JAVAC works... " >&6; } -if ${ac_cv_prog_javac_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - -JAVA_TEST=Test.java -CLASS_TEST=Test.class -cat << \EOF > $JAVA_TEST -/* #line 15898 "configure" */ -public class Test { -} -EOF -if { ac_try='$JAVAC $JAVACFLAGS $JAVA_TEST' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } >/dev/null 2>&1; then - ac_cv_prog_javac_works=yes -else - as_fn_error $? "The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)" "$LINENO" 5 - echo "configure: failed program was:" >&5 - cat $JAVA_TEST >&5 -fi -rm -f $JAVA_TEST $CLASS_TEST - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_javac_works" >&5 -$as_echo "$ac_cv_prog_javac_works" >&6; } - - - # blah this whinges about something - #AC_PROG_JAVAH - - -if test "x$JAVAPREFIX" = x; then - test "x$JAR" = x && for ac_prog in jar$EXEEXT -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_JAR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$JAR"; then - ac_cv_prog_JAR="$JAR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_JAR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -JAR=$ac_cv_prog_JAR -if test -n "$JAR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5 -$as_echo "$JAR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$JAR" && break -done - -else - test "x$JAR" = x && for ac_prog in jar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_JAR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$JAR"; then - ac_cv_prog_JAR="$JAR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_JAR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -JAR=$ac_cv_prog_JAR -if test -n "$JAR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5 -$as_echo "$JAR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$JAR" && break -done -test -n "$JAR" || JAR="$JAVAPREFIX" - -fi -test "x$JAR" = x && as_fn_error $? "no acceptable jar program found in \$PATH" "$LINENO" 5 - - - -JNI_INCLUDE_DIRS="" - -test "x$JAVAC" = x && as_fn_error $? "'\$JAVAC' undefined" "$LINENO" 5 -# Extract the first word of "$JAVAC", so it can be a program name with args. -set dummy $JAVAC; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path__ACJNI_JAVAC+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $_ACJNI_JAVAC in - [\\/]* | ?:[\\/]*) - ac_cv_path__ACJNI_JAVAC="$_ACJNI_JAVAC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path__ACJNI_JAVAC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path__ACJNI_JAVAC" && ac_cv_path__ACJNI_JAVAC="no" - ;; -esac -fi -_ACJNI_JAVAC=$ac_cv_path__ACJNI_JAVAC -if test -n "$_ACJNI_JAVAC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_ACJNI_JAVAC" >&5 -$as_echo "$_ACJNI_JAVAC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -test "x$_ACJNI_JAVAC" = xno && as_fn_error $? "$JAVAC could not be found in path" "$LINENO" 5 - - -# find the include directory relative to the javac executable -_cur=""$_ACJNI_JAVAC"" -while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking symlink for $_cur" >&5 -$as_echo_n "checking symlink for $_cur... " >&6; } - _slink=`ls -ld "$_cur" | sed 's/.* -> //'` - case "$_slink" in - /*) _cur="$_slink";; - # 'X' avoids triggering unwanted echo options. - *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[^/]*$::'`"$_slink";; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_cur" >&5 -$as_echo "$_cur" >&6; } -done -_ACJNI_FOLLOWED="$_cur" - -_JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[^/]*$::'` -case "$host_os" in - darwin*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[^/]*$::'` - _JINC="$_JTOPDIR/Headers";; - *) _JINC="$_JTOPDIR/include";; -esac -$as_echo "$as_me:${as_lineno-$LINENO}: _JTOPDIR=$_JTOPDIR" >&5 -$as_echo "$as_me:${as_lineno-$LINENO}: _JINC=$_JINC" >&5 - -# On Mac OS X 10.6.4, jni.h is a symlink: -# /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/jni.h -# -> ../../CurrentJDK/Headers/jni.h. -if test -f "$_JINC/jni.h" || test -L "$_JINC/jni.h"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC" -else - _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[^/]*$::'` - if test -f "$_JTOPDIR/include/jni.h"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include" - else - as_fn_error $? "cannot find java include files" "$LINENO" 5 - fi -fi - -# get the likely subdirectories for system specific java includes -case "$host_os" in -bsdi*) _JNI_INC_SUBDIRS="bsdos";; -freebsd*) _JNI_INC_SUBDIRS="freebsd";; -linux*) _JNI_INC_SUBDIRS="linux genunix";; -osf*) _JNI_INC_SUBDIRS="alpha";; -solaris*) _JNI_INC_SUBDIRS="solaris";; -mingw*) _JNI_INC_SUBDIRS="win32";; -cygwin*) _JNI_INC_SUBDIRS="win32";; -*) _JNI_INC_SUBDIRS="genunix";; -esac - -# add any subdirectories that are present -for JINCSUBDIR in $_JNI_INC_SUBDIRS -do - if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR" - fi -done - - for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS - do - JNI_CPPFLAGS="$JNI_CPPFLAGS -I$JNI_INCLUDE_DIR" - done - JNI_CPPFLAGS=$JNI_CPPFLAGS - - - -$as_echo "#define ENABLE_JNI 1" >>confdefs.h - -fi - if test "$have_jni" = "yes"; then - ENABLE_JNI_TRUE= - ENABLE_JNI_FALSE='#' -else - ENABLE_JNI_TRUE='#' - ENABLE_JNI_FALSE= -fi - - -fpu="" -if test "$have_vfp" = "yes"; then : - fpu="-mfpu=vfp" -elif test "$have_neon" = "yes"; then : - fpu="-mfpu=neon" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: host is \"${host}\"" >&5 -$as_echo "$as_me: host is \"${host}\"" >&6;} -case "${host}" in - arm* ) - CFLAGS="$CFLAGS -mfloat-abi=${float_abi} ${fpu} -std=c99" - CCASFLAGS="$CCASFLAGS -mfloat-abi=${float_abi} ${fpu}" - ;; - *) - ;; -esac - -#if test "$ord_sr" = "no"; then -# AC_DEFINE(SFFT_ORD_SR,0,[Define to enable ordinary split radix.]) -#fi - -# Checks for libraries. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_cos=yes -else - ac_cv_lib_m_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" - -fi - -ac_fn_c_check_decl "$LINENO" "posix_memalign" "ac_cv_have_decl_posix_memalign" "#define _XOPEN_SOURCE 600 - #include - #include -" -if test "x$ac_cv_have_decl_posix_memalign" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_POSIX_MEMALIGN $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "memalign" "ac_cv_have_decl_memalign" "#define _XOPEN_SOURCE 600 - #include - #include -" -if test "x$ac_cv_have_decl_memalign" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_MEMALIGN $ac_have_decl -_ACEOF - - -# Checks for header files. -for ac_header in stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -# Checks for typedefs, structures, and compiler characteristics. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } -if ${ac_cv_header_stdbool_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #if false - "error: false is not 0" - #endif - #ifndef true - "error: true is not defined" - #endif - #if true != 1 - "error: true is not 1" - #endif - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" - #endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(_Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - _Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; - /* Catch a bug in an HP-UX C compiler. See - http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html - */ - _Bool q = true; - _Bool *pq = &q; - -int -main () -{ - - bool e = &s; - *pq |= q; - *pq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdbool_h=yes -else - ac_cv_header_stdbool_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 -$as_echo "$ac_cv_header_stdbool_h" >&6; } - ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" -if test "x$ac_cv_type__Bool" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE__BOOL 1 -_ACEOF - - -fi - - -if test $ac_cv_header_stdbool_h = yes; then - -$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - -ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" -case $ac_cv_c_int32_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int32_t $ac_cv_c_int32_t -_ACEOF -;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 -$as_echo_n "checking for C/C++ restrict keyword... " >&6; } -if ${ac_cv_c_restrict+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_restrict=no - # The order here caters to the fact that C++ does not require restrict. - for ac_kw in __restrict __restrict__ _Restrict restrict; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -typedef int * int_ptr; - int foo (int_ptr $ac_kw ip) { - return ip[0]; - } -int -main () -{ -int s[1]; - int * $ac_kw t = s; - t[0] = 0; - return foo(t) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_restrict=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_restrict" != no && break - done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 -$as_echo "$ac_cv_c_restrict" >&6; } - - case $ac_cv_c_restrict in - restrict) ;; - no) $as_echo "#define restrict /**/" >>confdefs.h - ;; - *) cat >>confdefs.h <<_ACEOF -#define restrict $ac_cv_c_restrict -_ACEOF - ;; - esac - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" -case $ac_cv_c_uint64_t in #( - no|yes) ;; #( - *) - -$as_echo "#define _UINT64_T 1" >>confdefs.h - - -cat >>confdefs.h <<_ACEOF -#define uint64_t $ac_cv_c_uint64_t -_ACEOF -;; - esac - - case $ac_cv_prog_cc_stdc in #( - no) : - ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} - -int -main () -{ - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); - - ; - return 0; -} -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 -else - ac_cv_prog_cc_stdc=no -fi - -fi - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 -$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } - if ${ac_cv_prog_cc_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -fi - - case $ac_cv_prog_cc_stdc in #( - no) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; #( - '') : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; #( - *) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 -$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; -esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - - - -# Checks for library functions. -#AC_FUNC_MALLOC -for ac_func in gettimeofday pow -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -ac_config_files="$ac_config_files Makefile src/Makefile tests/Makefile ffts.pc java/Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${DYNAMIC_DISABLED_TRUE}" && test -z "${DYNAMIC_DISABLED_FALSE}"; then - as_fn_error $? "conditional \"DYNAMIC_DISABLED\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_SSE_TRUE}" && test -z "${HAVE_SSE_FALSE}"; then - as_fn_error $? "conditional \"HAVE_SSE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_NEON_TRUE}" && test -z "${HAVE_NEON_FALSE}"; then - as_fn_error $? "conditional \"HAVE_NEON\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_VFP_TRUE}" && test -z "${HAVE_VFP_FALSE}"; then - as_fn_error $? "conditional \"HAVE_VFP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_JNI_TRUE}" && test -z "${ENABLE_JNI_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_JNI\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by ffts $as_me 0.7, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -ffts config.status 0.7 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "ffts.pc") CONFIG_FILES="$CONFIG_FILES ffts.pc" ;; - "java/Makefile") CONFIG_FILES="$CONFIG_FILES java/Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/FFTS/Sources/FFTS/configure.ac b/FFTS/Sources/FFTS/configure.ac deleted file mode 100644 index bdb19e6..0000000 --- a/FFTS/Sources/FFTS/configure.ac +++ /dev/null @@ -1,137 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ([2.65]) -AC_INIT(ffts, 0.7, amb@anthonix.com) -AM_INIT_AUTOMAKE(ffts, 0.7) - -AC_CONFIG_MACRO_DIR([m4]) - -# AC_CONFIG_SRCDIR([include/common.h]) -AC_CONFIG_HEADERS([config.h]) - -AC_CANONICAL_HOST - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -#AX_COMPILER_VENDOR -LT_INIT([disable-shared]) -AM_PROG_AS -#CXX="clang++" -#CXXFLAGS="$CXXFLAGS -stdlib=libc++" - -#SFFT_AR="/usr/bin/ar" -#SFFT_CFLAGS="$CFLAGS" -#SFFT_CC="$CC" -AC_ARG_ENABLE(dynamic-code, [AC_HELP_STRING([--enable-dynamic-code],[dynamically generate code])], sfft_dynamic=$enableval, sfft_dynamic=yes) -if test "$sfft_dynamic" = "no"; then - AC_DEFINE(DYNAMIC_DISABLED,1,[Define to disable dynamic code generation.]) -fi -AM_CONDITIONAL(DYNAMIC_DISABLED, test "$sfft_dynamic" = "no") - -AC_ARG_ENABLE(single, [AC_HELP_STRING([--enable-single],[compile single-precision library])], sfft_single=$enableval, sfft_single=no) -if test "$sfft_single" = "yes"; then - AC_DEFINE(FFTS_PREC_SINGLE,1,[Define to FFT in single precision.]) -fi -if test "$sfft_single" = "no"; then - AC_DEFINE(FFTS_PREC_SINGLE,0,[Define to FFT in single precision.]) -fi - -AC_ARG_ENABLE(sse, [AC_HELP_STRING([--enable-sse],[enable SSE extensions])], have_sse=$enableval, have_sse=no) -if test "$have_sse" = "yes"; then - SIMD=sse - AC_DEFINE(HAVE_SSE,1,[Define to FFT with SSE.]) -fi -AM_CONDITIONAL(HAVE_SSE, test "$have_sse" = "yes") - -AC_ARG_ENABLE(neon, [AC_HELP_STRING([--enable-neon],[enable NEON extensions])], have_neon=$enableval, have_neon=no) -if test "$have_neon" = "yes"; then - AC_DEFINE(HAVE_NEON,1,[Define to FFT with ARM NEON.]) -fi -AM_CONDITIONAL(HAVE_NEON, test "$have_neon" = "yes") - -AC_ARG_ENABLE(vfp, [AC_HELP_STRING([--enable-vfp],[enable VFP extensions])], have_vfp=$enableval, have_vfp=no) -if test "$have_vfp" = "yes"; then - AC_DEFINE(HAVE_VFP,1,[Define to FFT with ARM VFP.]) -fi -AM_CONDITIONAL(HAVE_VFP, test "$have_vfp" = "yes") - -AC_ARG_WITH(float-abi, [AS_HELP_STRING([--with-float-abi=ABI],[set float abi for arm, hard or softfp (default is softfp)])], - float_abi=$withval, float_abi=softfp) - -AC_ARG_ENABLE(jni, [AC_HELP_STRING([--enable-jni],[enable JNI binding])], have_jni=$enableval, have_jni=no) -if test "$have_jni" = "yes"; then - # Java stuff - AX_JAVA_OPTIONS - AC_CHECK_JAVA_HOME - AC_CHECK_CLASSPATH - AC_PROG_JAVAC - # blah this whinges about something - #AC_PROG_JAVAH - AC_PROG_JAR - AX_JNI_INCLUDE_DIR - for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS - do - JNI_CPPFLAGS="$JNI_CPPFLAGS -I$JNI_INCLUDE_DIR" - done - AC_SUBST(JNI_CPPFLAGS, [$JNI_CPPFLAGS]) - - AC_DEFINE(ENABLE_JNI,1,[JNI being built.]) -fi -AM_CONDITIONAL(ENABLE_JNI, test "$have_jni" = "yes") - -fpu="" -AS_IF([test "$have_vfp" = "yes"],[fpu="-mfpu=vfp"], - [test "$have_neon" = "yes"],[fpu="-mfpu=neon"], - []) - -AC_MSG_NOTICE([host is "${host}"]) -case "${host}" in - arm* ) - CFLAGS="$CFLAGS -mfloat-abi=${float_abi} ${fpu} -std=c99" - CCASFLAGS="$CCASFLAGS -mfloat-abi=${float_abi} ${fpu}" - ;; - *) - ;; -esac - -#if test "$ord_sr" = "no"; then -# AC_DEFINE(SFFT_ORD_SR,0,[Define to enable ordinary split radix.]) -#fi - -# Checks for libraries. -AC_CHECK_LIB([m], [cos]) -AC_CHECK_DECLS([posix_memalign, - memalign],,, - [#define _XOPEN_SOURCE 600 - #include - #include ]) - -# Checks for header files. -AC_CHECK_HEADERS([malloc.h stddef.h stdint.h stdlib.h string.h sys/mman.h sys/socket.h sys/time.h unistd.h]) - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_INLINE -AC_TYPE_INT32_T -AC_C_RESTRICT -AC_TYPE_SIZE_T -AC_TYPE_UINT64_T -AC_PROG_CC_STDC -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_LIBTOOL - -# Checks for library functions. -#AC_FUNC_MALLOC -AC_CHECK_FUNCS([gettimeofday pow]) - - -AC_CONFIG_FILES([Makefile - src/Makefile - tests/Makefile - ffts.pc - java/Makefile - ]) -AC_OUTPUT diff --git a/FFTS/Sources/FFTS/depcomp b/FFTS/Sources/FFTS/depcomp deleted file mode 100755 index 0544c68..0000000 --- a/FFTS/Sources/FFTS/depcomp +++ /dev/null @@ -1,780 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2012-07-12.20; # UTC - -# Copyright (C) 1999-2012 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | -## Some versions of gcc put a space before the ':'. On the theory -## that the space means something, we add a space to the output as -## well. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the - # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -## The order of this option in the case statement is important, since the -## shell code in configure will try each of these formats in the order -## listed in this file. A plain '-MD' option would be understood by many -## compilers, so we must ensure this comes after the gcc and icc options. -pgcc) - # Portland's C compiler understands '-MD'. - # Will always output deps to 'file.d' where file is the root name of the - # source file under compilation, even if file resides in a subdirectory. - # The object file name does not affect the name of the '.d' file. - # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - # Use the source, not the object, to determine the base name, since - # that's sadly what pgcc will do too. - base=`echo "$source" | sed -e 's|^.*/||' -e 's/\.[-_a-zA-Z0-9]*$//'` - tmpdepfile="$base.d" - - # For projects that build the same source file twice into different object - # files, the pgcc approach of using the *source* file root name can cause - # problems in parallel builds. Use a locking strategy to avoid stomping on - # the same $tmpdepfile. - lockdir="$base.d-lock" - trap "echo '$0: caught signal, cleaning up...' >&2; rm -rf $lockdir" 1 2 13 15 - numtries=100 - i=$numtries - while test $i -gt 0 ; do - # mkdir is a portable test-and-set. - if mkdir $lockdir 2>/dev/null; then - # This process acquired the lock. - "$@" -MD - stat=$? - # Release the lock. - rm -rf $lockdir - break - else - ## the lock is being held by a different process, - ## wait until the winning process is done or we timeout - while test -d $lockdir && test $i -gt 0; do - sleep 1 - i=`expr $i - 1` - done - fi - i=`expr $i - 1` - done - trap - 1 2 13 15 - if test $i -le 0; then - echo "$0: failed to acquire lock after $numtries attempts" >&2 - echo "$0: check lockdir '$lockdir'" >&2 - exit 1 - fi - - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/FFTS/Sources/FFTS/ffts.pc.cmake.in b/FFTS/Sources/FFTS/ffts.pc.cmake.in deleted file mode 100644 index 63d4cc0..0000000 --- a/FFTS/Sources/FFTS/ffts.pc.cmake.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${prefix}/include - -Name: @CMAKE_PROJECT_NAME@ -Description: fast Fourier transform library -Version: @FFTS_VERSION@ -Libs: -L${libdir} -lffts -lm -Cflags: -I${includedir}/ffts diff --git a/FFTS/Sources/FFTS/ffts.pc.in b/FFTS/Sources/FFTS/ffts.pc.in deleted file mode 100644 index 985e5f8..0000000 --- a/FFTS/Sources/FFTS/ffts.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: FFTS -Description: fast Fourier transform library -Version: @VERSION@ -Libs: -L${libdir} -lffts -lm -Cflags: -I${includedir}/ffts diff --git a/FFTS/Sources/FFTS/include/ffts.h b/FFTS/Sources/FFTS/include/ffts.h deleted file mode 100644 index b13316f..0000000 --- a/FFTS/Sources/FFTS/include/ffts.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - - This file is part of FFTS. - - Copyright (c) 2012, Anthony M. Blake - Copyright (c) 2018, Jukka Ojanen - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_H -#define FFTS_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if (defined(_WIN32) || defined(WIN32)) && defined(FFTS_SHARED) -# ifdef FFTS_BUILD -# define FFTS_API __declspec(dllexport) -# else -# define FFTS_API __declspec(dllimport) -# endif -#else -# if (__GNUC__ >= 4) || defined(HAVE_GCC_VISIBILITY) -# define FFTS_API __attribute__ ((visibility("default"))) -# else -# define FFTS_API -# endif -#endif - -/* The direction of the transform - (i.e, the sign of the exponent in the transform.) -*/ -#define FFTS_FORWARD (-1) -#define FFTS_BACKWARD (+1) - -struct _ffts_plan_t; -typedef struct _ffts_plan_t ffts_plan_t; - -/* Complex data is stored in the interleaved format - (i.e, the real and imaginary parts composing each - element of complex data are stored adjacently in memory) - - The multi-dimensional arrays passed are expected to be - stored as a single contiguous block in row-major order -*/ -FFTS_API ffts_plan_t* -ffts_init_1d(size_t N, int sign); - -FFTS_API ffts_plan_t* -ffts_init_1d_64f(size_t N, int sign); - -FFTS_API ffts_plan_t* -ffts_init_2d(size_t N1, size_t N2, int sign); - -FFTS_API ffts_plan_t* -ffts_init_nd(int rank, size_t *Ns, int sign); - -/* For real transforms, sign == FFTS_FORWARD implies a real-to-complex - forwards tranform, and sign == FFTS_BACKWARD implies a complex-to-real - backwards transform. - - The output of a real-to-complex transform is N/2+1 complex numbers, - where the redundant outputs have been omitted. -*/ -FFTS_API ffts_plan_t* -ffts_init_1d_real(size_t N, int sign); - -FFTS_API ffts_plan_t* -ffts_init_2d_real(size_t N1, size_t N2, int sign); - -FFTS_API ffts_plan_t* -ffts_init_nd_real(int rank, size_t *Ns, int sign); - -FFTS_API void -ffts_execute(ffts_plan_t *p, const void *input, void *output); - -FFTS_API void -ffts_free(ffts_plan_t *p); - -#ifdef __cplusplus -} -#endif - -#endif /* FFTS_H */ diff --git a/FFTS/Sources/FFTS/install-sh b/FFTS/Sources/FFTS/install-sh deleted file mode 100755 index 377bb86..0000000 --- a/FFTS/Sources/FFTS/install-sh +++ /dev/null @@ -1,527 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2011-11-20.07; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call 'install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names problematic for 'test' and other utilities. - case $src in - -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/FFTS/Sources/FFTS/java/Makefile.am b/FFTS/Sources/FFTS/java/Makefile.am deleted file mode 100644 index 83ff5d8..0000000 --- a/FFTS/Sources/FFTS/java/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ - -# TODO: the ax_prog_javah thing doesn't work so this -# requires javah in the path - -if ENABLE_JNI -JAVA_SRC=$(shell find $(srcdir)/src -name '*.java') - -BUILT_SOURCES = nz_ac_waikato_ffts_FFTS.h - -all: ffts.jar - -classes ffts.jar: $(JAVA_SRC) - -rm -rf classes - mkdir classes - $(JAVAC) -d classes -sourcepath src $(JAVA_SRC) - $(JAR) -cf ffts.jar -C classes . - -lib_LTLIBRARIES = libffts_jni.la -libffts_jni_la_SOURCES = jni/ffts_jni.c -nodist_include_HEADERS = nz_ac_waikato_ffts_FFTS.h -libffts_jni_la_LIBADD = $(top_builddir)/src/libffts.la -libffts_jni_la_CFLAGS = @JNI_CPPFLAGS@ $(AM_CFLAGS) -I$(top_srcdir)/include -libffts_jni_la_LDFLAGS = -shared - -pkgdata_DATA = ffts.jar - -nz_ac_waikato_ffts_FFTS.h: classes - javah -cp $< nz.ac.waikato.ffts.FFTS - -CLEANFILES=ffts.jar nz_ac_waikato_ffts_FFTS.h -clean-local: - -rm -rf classes -endif diff --git a/FFTS/Sources/FFTS/java/Makefile.in b/FFTS/Sources/FFTS/java/Makefile.in deleted file mode 100644 index da274b2..0000000 --- a/FFTS/Sources/FFTS/java/Makefile.in +++ /dev/null @@ -1,741 +0,0 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# TODO: the ax_prog_javah thing doesn't work so this -# requires javah in the path - - - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = java -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_classpath.m4 \ - $(top_srcdir)/m4/ax_check_java_home.m4 \ - $(top_srcdir)/m4/ax_java_options.m4 \ - $(top_srcdir)/m4/ax_jni_include_dir.m4 \ - $(top_srcdir)/m4/ax_prog_jar.m4 \ - $(top_srcdir)/m4/ax_prog_javac.m4 \ - $(top_srcdir)/m4/ax_prog_javac_works.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" \ - "$(DESTDIR)$(includedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -@ENABLE_JNI_TRUE@libffts_jni_la_DEPENDENCIES = \ -@ENABLE_JNI_TRUE@ $(top_builddir)/src/libffts.la -am__libffts_jni_la_SOURCES_DIST = jni/ffts_jni.c -@ENABLE_JNI_TRUE@am_libffts_jni_la_OBJECTS = \ -@ENABLE_JNI_TRUE@ libffts_jni_la-ffts_jni.lo -libffts_jni_la_OBJECTS = $(am_libffts_jni_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libffts_jni_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(libffts_jni_la_CFLAGS) $(CFLAGS) $(libffts_jni_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -@ENABLE_JNI_TRUE@am_libffts_jni_la_rpath = -rpath $(libdir) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libffts_jni_la_SOURCES) -DIST_SOURCES = $(am__libffts_jni_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(pkgdata_DATA) -HEADERS = $(nodist_include_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -JAR = @JAR@ -JAVA = @JAVA@ -JAVAC = @JAVAC@ -JAVACFLAGS = @JAVACFLAGS@ -JAVAFLAGS = @JAVAFLAGS@ -JAVAPREFIX = @JAVAPREFIX@ -JAVA_PATH_NAME = @JAVA_PATH_NAME@ -JNI_CPPFLAGS = @JNI_CPPFLAGS@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -_ACJNI_JAVAC = @_ACJNI_JAVAC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -@ENABLE_JNI_TRUE@JAVA_SRC = $(shell find $(srcdir)/src -name '*.java') -@ENABLE_JNI_TRUE@BUILT_SOURCES = nz_ac_waikato_ffts_FFTS.h -@ENABLE_JNI_TRUE@lib_LTLIBRARIES = libffts_jni.la -@ENABLE_JNI_TRUE@libffts_jni_la_SOURCES = jni/ffts_jni.c -@ENABLE_JNI_TRUE@nodist_include_HEADERS = nz_ac_waikato_ffts_FFTS.h -@ENABLE_JNI_TRUE@libffts_jni_la_LIBADD = $(top_builddir)/src/libffts.la -@ENABLE_JNI_TRUE@libffts_jni_la_CFLAGS = @JNI_CPPFLAGS@ $(AM_CFLAGS) -I$(top_srcdir)/include -@ENABLE_JNI_TRUE@libffts_jni_la_LDFLAGS = -shared -@ENABLE_JNI_TRUE@pkgdata_DATA = ffts.jar -@ENABLE_JNI_TRUE@CLEANFILES = ffts.jar nz_ac_waikato_ffts_FFTS.h -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu java/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libffts_jni.la: $(libffts_jni_la_OBJECTS) $(libffts_jni_la_DEPENDENCIES) $(EXTRA_libffts_jni_la_DEPENDENCIES) - $(AM_V_CCLD)$(libffts_jni_la_LINK) $(am_libffts_jni_la_rpath) $(libffts_jni_la_OBJECTS) $(libffts_jni_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffts_jni_la-ffts_jni.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -libffts_jni_la-ffts_jni.lo: jni/ffts_jni.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffts_jni_la_CFLAGS) $(CFLAGS) -MT libffts_jni_la-ffts_jni.lo -MD -MP -MF $(DEPDIR)/libffts_jni_la-ffts_jni.Tpo -c -o libffts_jni_la-ffts_jni.lo `test -f 'jni/ffts_jni.c' || echo '$(srcdir)/'`jni/ffts_jni.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffts_jni_la-ffts_jni.Tpo $(DEPDIR)/libffts_jni_la-ffts_jni.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jni/ffts_jni.c' object='libffts_jni_la-ffts_jni.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffts_jni_la_CFLAGS) $(CFLAGS) -c -o libffts_jni_la-ffts_jni.lo `test -f 'jni/ffts_jni.c' || echo '$(srcdir)/'`jni/ffts_jni.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-pkgdataDATA: $(pkgdata_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ - done - -uninstall-pkgdataDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) -install-nodist_includeHEADERS: $(nodist_include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-nodist_includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -@ENABLE_JNI_FALSE@clean-local: -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-nodist_includeHEADERS install-pkgdataDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS \ - uninstall-pkgdataDATA - -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-local cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES install-man \ - install-nodist_includeHEADERS install-pdf install-pdf-am \ - install-pkgdataDATA install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ - uninstall-nodist_includeHEADERS uninstall-pkgdataDATA - - -@ENABLE_JNI_TRUE@all: ffts.jar - -@ENABLE_JNI_TRUE@classes ffts.jar: $(JAVA_SRC) -@ENABLE_JNI_TRUE@ -rm -rf classes -@ENABLE_JNI_TRUE@ mkdir classes -@ENABLE_JNI_TRUE@ $(JAVAC) -d classes -sourcepath src $(JAVA_SRC) -@ENABLE_JNI_TRUE@ $(JAR) -cf ffts.jar -C classes . - -@ENABLE_JNI_TRUE@nz_ac_waikato_ffts_FFTS.h: classes -@ENABLE_JNI_TRUE@ javah -cp $< nz.ac.waikato.ffts.FFTS -@ENABLE_JNI_TRUE@clean-local: -@ENABLE_JNI_TRUE@ -rm -rf classes - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/FFTS/Sources/FFTS/java/android/.classpath b/FFTS/Sources/FFTS/java/android/.classpath deleted file mode 100644 index 46f15fa..0000000 --- a/FFTS/Sources/FFTS/java/android/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/FFTS/Sources/FFTS/java/android/.project b/FFTS/Sources/FFTS/java/android/.project deleted file mode 100644 index aff6a0c..0000000 --- a/FFTS/Sources/FFTS/java/android/.project +++ /dev/null @@ -1,40 +0,0 @@ - - - ffts-android - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - - - src - 2 - PARENT-1-PROJECT_LOC/src - - - diff --git a/FFTS/Sources/FFTS/java/android/.settings/org.eclipse.jdt.core.prefs b/FFTS/Sources/FFTS/java/android/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b080d2d..0000000 --- a/FFTS/Sources/FFTS/java/android/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/FFTS/Sources/FFTS/java/android/.settings/org.eclipse.ltk.core.refactoring.prefs b/FFTS/Sources/FFTS/java/android/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index b196c64..0000000 --- a/FFTS/Sources/FFTS/java/android/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/FFTS/Sources/FFTS/java/android/AndroidManifest.xml b/FFTS/Sources/FFTS/java/android/AndroidManifest.xml deleted file mode 100644 index 6475e8e..0000000 --- a/FFTS/Sources/FFTS/java/android/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/FFTS/Sources/FFTS/java/android/ant.properties b/FFTS/Sources/FFTS/java/android/ant.properties deleted file mode 100644 index 95346d2..0000000 --- a/FFTS/Sources/FFTS/java/android/ant.properties +++ /dev/null @@ -1,18 +0,0 @@ -# This file is used to override default values used by the Ant build system. -# -# This file must be checked into Version Control Systems, as it is -# integral to the build system of your project. - -# This file is only used by the Ant script. - -# You can use this to override default values such as -# 'source.dir' for the location of your java source folder and -# 'out.dir' for the location of your output folder. -source.dir=../src - -# You can also use it define how the release builds are signed by declaring -# the following properties: -# 'key.store' for the location of your keystore and -# 'key.alias' for the name of the key to use. -# The password will be asked during the build when you use the 'release' target. - diff --git a/FFTS/Sources/FFTS/java/android/build.xml b/FFTS/Sources/FFTS/java/android/build.xml deleted file mode 100644 index 4d6cc3d..0000000 --- a/FFTS/Sources/FFTS/java/android/build.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FFTS/Sources/FFTS/java/android/jni/Android.mk b/FFTS/Sources/FFTS/java/android/jni/Android.mk deleted file mode 100644 index 879ef4d..0000000 --- a/FFTS/Sources/FFTS/java/android/jni/Android.mk +++ /dev/null @@ -1,25 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -TOP=../../.. - -# Include the shared library -#include $(CLEAR_VARS) -#LOCAL_MODULE := ffts -#LOCAL_SRC_FILES := ../../../src/.libs/libffts.so -#include $(PREBUILT_SHARED_LIBRARY) - -# Include the static library in shared lib -include $(CLEAR_VARS) -LOCAL_MODULE := ffts -LOCAL_SRC_FILES := $(TOP)/java/android/bin/lib/libffts.a -LOCAL_EXPORT_C_INCLUDES := $(TOP)/include -include $(PREBUILT_STATIC_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_MODULE := ffts_jni -LOCAL_CFLAGS := -I$(TOP)/include -I$(TOP)/java/jni -I$(TOP) -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -LOCAL_SRC_FILES := $(TOP)/java/jni/ffts_jni.c -LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -LOCAL_STATIC_LIBRARIES := ffts - -include $(BUILD_SHARED_LIBRARY) diff --git a/FFTS/Sources/FFTS/java/android/jni/Application.mk b/FFTS/Sources/FFTS/java/android/jni/Application.mk deleted file mode 100644 index 12c9df6..0000000 --- a/FFTS/Sources/FFTS/java/android/jni/Application.mk +++ /dev/null @@ -1,2 +0,0 @@ -# requires NEON atm -APP_ABI := armeabi-v7a diff --git a/FFTS/Sources/FFTS/java/android/proguard-project.txt b/FFTS/Sources/FFTS/java/android/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/FFTS/Sources/FFTS/java/android/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/FFTS/Sources/FFTS/java/android/project.properties b/FFTS/Sources/FFTS/java/android/project.properties deleted file mode 100644 index 88ca83f..0000000 --- a/FFTS/Sources/FFTS/java/android/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -android.library=true -# Project target. -target=android-10 diff --git a/FFTS/Sources/FFTS/java/jni/ffts_jni.c b/FFTS/Sources/FFTS/java/jni/ffts_jni.c deleted file mode 100644 index d044f95..0000000 --- a/FFTS/Sources/FFTS/java/jni/ffts_jni.c +++ /dev/null @@ -1,237 +0,0 @@ -/* - * This file is part of FFTS -- The Fastest Fourier Transform in the South - * - * Copyright (c) 2013, Michael Zucchi - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" - -#include -#include - -// Bit of a hack for android, as we can't build the *.h without -// the classes ... but we can't build the project without the jni. -#ifdef ANDROID -#include -#define NEEDS_ALIGNED -#undef HAVE_DECL_POSIX_MEMALIGN -#else -#include "nz_ac_waikato_ffts_FFTS.h" -#endif - -// TODO: feature tests instead -#ifdef HAVE_SSE -#define NEEDS_ALIGNED -#endif - -#ifdef NEEDS_ALIGNED -#define ALIGN_MASK 15 - -static void * -xmemalign(size_t align, size_t size) { -#if defined(HAVE_DECL_POSIX_MEMALIGN) - void *r; - - if (posix_memalign(&r, align, size) != 0) - return NULL; - return r; -#elif defined(HAVE_DECL_MEMALIGN) - return memalign(align, size); -#else -#error "Require an aligning malloc" -#endif -} -#endif - -static void -throwOutOfMemoryError(JNIEnv *env, const char *msg) { - jclass jc = (*env)->FindClass(env, "java/lang/OutOfMemoryError"); - - if (jc) - (*env)->ThrowNew(env, jc, msg); -} - -JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_complex_11d -(JNIEnv *env, jclass jc, jint N, jint sign) { - ffts_plan_t *plan; - - plan = ffts_init_1d(N, sign); - if (!plan) - throwOutOfMemoryError(env, NULL); - - return (jlong)plan; -} - -JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_complex_12d -(JNIEnv *env, jclass jc, jint N1, jint N2, jint sign) { - ffts_plan_t *plan; - - plan = ffts_init_2d(N1, N2, sign); - if (!plan) - throwOutOfMemoryError(env, NULL); - - return (jlong)plan; -} - -JNIEXPORT jlong JNICALL Java_nz_ac_waikato_ffts_FFTS_complex_1nd -(JNIEnv *env, jclass jc, jintArray jNs, jint sign) { - ffts_plan_t *plan; - int n = (*env)->GetArrayLength(env, jNs); - int *cNs; - size_t *Ns; - int i; - - // Needs to convert java int array to size_t array - // Get the int elements and conver to C type - Ns = alloca(sizeof(*Ns) * n); - cNs = alloca(sizeof(int) * n); - (*env)->GetIntArrayRegion(env, jNs, 0, n, cNs); - for (i=0;iGetArrayLength(env, jNs); - int *cNs; - size_t *Ns; - int i; - - // Needs to convert java int array to size_t array - // Get the int elements and conver to C type - Ns = alloca(sizeof(*Ns) * n); - cNs = alloca(sizeof(int) * n); - (*env)->GetIntArrayRegion(env, jNs, 0, n, cNs); - for (i=0;iGetFloatArrayRegion(env, jsrc, 0, size, src + soff); - ffts_execute(plan, src, dst); - (*env)->SetFloatArrayRegion(env, jdst, 0, size, dst + doff); - - free(dst); - free(src); -#else - // This is the fastest with oracle jvm, but doesn't work with sse ... - void *src = (*env)->GetPrimitiveArrayCritical(env, jsrc, NULL); - void *dst = (*env)->GetPrimitiveArrayCritical(env, jdst, NULL); - - ffts_execute(plan, src + soff, dst + doff); - - (*env)->ReleasePrimitiveArrayCritical(env, jdst, dst, 0); - (*env)->ReleasePrimitiveArrayCritical(env, jsrc, src, 0); -#endif - -#if 0 - // This is the slowest - void *src = (*env)->GetFloatArrayElements(env, jsrc, NULL); - void *dst = (*env)->GetFloatArrayElements(env, jdst, NULL); - - ffts_execute(plan, src + soff, dst + doff); - - (*env)->ReleaseFloatArrayElements(env, jdst, dst, 0); - (*env)->ReleaseFloatArrayElements(env, jsrc, src, 0); -#endif -} - -JNIEXPORT void JNICALL Java_nz_ac_waikato_ffts_FFTS_execute__JJLjava_nio_FloatBuffer_2Ljava_nio_FloatBuffer_2 -(JNIEnv *env, jclass jc, jlong p, jlong size, jobject jsrc, jobject jdst) { - ffts_plan_t *plan = (ffts_plan_t *)p; - void *src = (*env)->GetDirectBufferAddress(env, jsrc); - void *dst = (*env)->GetDirectBufferAddress(env, jdst); - - // Bounds checking etc is in java side. - - ffts_execute(plan, src, dst); -} - -JNIEXPORT void JNICALL Java_nz_ac_waikato_ffts_FFTS_free -(JNIEnv *env, jclass jc, jlong p) { - ffts_plan_t *plan = (ffts_plan_t *)p; - - ffts_free(plan); -} - -// vim: set autoindent noexpandtab tabstop=3 shiftwidth=3: diff --git a/FFTS/Sources/FFTS/java/src/nz/ac/waikato/ffts/FFTS.java b/FFTS/Sources/FFTS/java/src/nz/ac/waikato/ffts/FFTS.java deleted file mode 100644 index 5b6771c..0000000 --- a/FFTS/Sources/FFTS/java/src/nz/ac/waikato/ffts/FFTS.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * This file is part of FFTS -- The Fastest Fourier Transform in the South - * - * Copyright (c) 2013, Michael Zucchi - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package nz.ac.waikato.ffts; - -import java.nio.FloatBuffer; - -/** - * A java wrapper for ffts plans. - * - * Plans must currently be freed explicitly. - * - * @author notzed - */ -public class FFTS { - - /** - * C pointer - */ - private long p; - /** - * Minimum size of input - */ - final protected long inSize; - /** - * Minimum size of output - */ - final protected long outSize; - - private FFTS(long p, long inSize) { - this(p, inSize, inSize); - } - - private FFTS(long p, long inSize, long outSize) { - this.p = p; - this.inSize = inSize; - this.outSize = inSize; - } - /** - * The sign to use for a forward transform. - */ - public static final int FORWARD = -1; - /** - * The sign to use for a backward transform. - */ - public static final int BACKWARD = 1; - - /** - * Create a FFT plan for a 1-dimensional complex transform. - * - * The src and dst parameters to execute() use complex data. - * - * @param sign The direction of the transform. - * @param N The size of the transform. - * @return - */ - public static FFTS complex(int sign, int N) { - return new FFTS(complex_1d(N, sign), N * 2); - } - - /** - * Create a FFT plan for a 2-dimensional complex transform. - * @param sign The direction of the transform. - * @param N1 The size of the transform. - * @param N2 The size of the transform. - * @return - */ - public static FFTS complex(int sign, int N1, int N2) { - return new FFTS(complex_2d(N1, N2, sign), N1 * N2 * 2); - } - - public static FFTS complex(int sign, int... Ns) { - return new FFTS(complex_nd(Ns, sign), size(Ns) * 2); - } - - public static FFTS real(int sign, int N) { - return new FFTS(real_1d(N, sign), sign == FORWARD ? N : (N / 2 + 1) * 2, sign == FORWARD ? (N / 2 + 1) * 2 : N); - } - - public static FFTS real(int sign, int N1, int N2) { - return new FFTS(real_2d(N1, N2, sign), sign == FORWARD ? N1 * N2 : (N1 * N2 / 2 + 1) * 2, sign == FORWARD ? (N1 * N2 / 2 + 1) * 2 : N1 * N2); - } - - public static FFTS real(int sign, int... Ns) { - return new FFTS(real_nd(Ns, sign), sign == FORWARD ? size(Ns) : (size(Ns) / 2 + 1) * 2, sign == FORWARD ? (size(Ns) / 2 + 1) * 2 : size(Ns)); - } - - /** - * Execute this plan with the given array data. - * - * @param src - * @param dst - */ - public void execute(float[] src, float[] dst) { - execute(src, 0, dst, 0); - } - - /** - * Execute this plan with the given array data. - * @param src - * @param soff Start offset into src array. - * @param dst - * @param doff Start offset into dst array. - */ - public void execute(float[] src, int soff, float[] dst, int doff) { - if (src.length - soff < inSize || dst.length - doff < outSize) - throw new ArrayIndexOutOfBoundsException(); - if (p == 0) - throw new NullPointerException(); - - execute(p, inSize, src, soff, dst, doff); - } - - /** - * Execute this plan with the given nio buffers. The bufffers - * must be derived from direct buffers. - * - * The buffer position and limits are ignored. - * - * @param src - * @param dst - */ - public void execute(FloatBuffer src, FloatBuffer dst) { - if (src.capacity() < inSize || dst.capacity() < outSize) - throw new ArrayIndexOutOfBoundsException(); - if (p == 0) - throw new NullPointerException(); - - execute(p, inSize, src, dst); - } - - /** - * Free the plan. - */ - public void free() { - if (p == 0) - throw new NullPointerException(); - free(p); - } - - /* - * Calculate the number of elements required to store one - * set of n-dimensional data. - */ - protected static long size(int[] Ns) { - long s = Ns[0]; - for (int i = 1; i < Ns.length; i++) - s *= Ns[i]; - return s; - } - - static { - System.loadLibrary("ffts_jni"); - } - - /* - * Native interface - */ - protected static native long complex_1d(int N, int sign); - - protected static native long complex_2d(int N1, int N2, int sign); - - protected static native long complex_nd(int[] Ns, int sign); - - protected static native long real_1d(int N, int sign); - - protected static native long real_2d(int N1, int N2, int sign); - - protected static native long real_nd(int[] Ns, int sign); - - protected static native void execute(long p, long size, float[] src, int soff, float[] dst, int doff); - - protected static native void execute(long p, long size, FloatBuffer src, FloatBuffer dst); - - protected static native void free(long p); -} diff --git a/FFTS/Sources/FFTS/ltmain.sh b/FFTS/Sources/FFTS/ltmain.sh deleted file mode 100644 index 9ae038c..0000000 --- a/FFTS/Sources/FFTS/ltmain.sh +++ /dev/null @@ -1,9656 +0,0 @@ - -# libtool (GNU libtool) 2.4.2 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --no-warn don't display warning messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.2 -TIMESTAMP="" -package_revision=1.3337 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation - - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation - - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation - - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# func_split_short_opt shortopt -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () -{ - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' - - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation - - -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () -{ - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' - - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation - -exit_cmd=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation - - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation - - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation - - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac - - - -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_warning=: -opt_verbose=: -opt_silent=false -opt_verbose=false - - -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-warning|--no-warn) - opt_warning=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - - # Validate options: - - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case "$lt_sysroot:$1" in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $opt_debug - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $opt_debug - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $opt_debug - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $opt_debug - if test -z "$2" && test -n "$1" ; then - func_error "Could not determine host file name corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result="$1" - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $opt_debug - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " \`$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result="$3" - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $opt_debug - case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via `$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $opt_debug - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $opt_debug - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result="$1" -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via `$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $opt_debug - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $opt_debug - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result="$1" -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "\`$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument \`$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $opt_debug - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $opt_debug - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result="" - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -stdlib=* select c++ std lib with clang - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-stdlib=*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib="$l" - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - case "$host" in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$absdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$opt_mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # Remove ${wl} instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test "$try_normal_branch" = yes \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=${output_objdir}/${output_la}.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - func_resolve_sysroot "$deplib" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/FFTS/Sources/FFTS/m4/ax_check_class.m4 b/FFTS/Sources/FFTS/m4/ax_check_class.m4 deleted file mode 100644 index 098aa77..0000000 --- a/FFTS/Sources/FFTS/m4/ax_check_class.m4 +++ /dev/null @@ -1,144 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_class.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_CLASS -# -# DESCRIPTION -# -# AX_CHECK_CLASS tests the existence of a given Java class, either in a -# jar or in a '.class' file. -# -# *Warning*: its success or failure can depend on a proper setting of the -# CLASSPATH env. variable. -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Stephane Bortzmeyer -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 7 - -AU_ALIAS([AC_CHECK_CLASS], [AX_CHECK_CLASS]) -AC_DEFUN([AX_CHECK_CLASS],[ -AC_REQUIRE([AX_PROG_JAVA]) -ac_var_name=`echo $1 | sed 's/\./_/g'` -dnl Normaly I'd use a AC_CACHE_CHECK here but since the variable name is -dnl dynamic I need an extra level of extraction -AC_MSG_CHECKING([for $1 class]) -AC_CACHE_VAL(ax_cv_class_$ac_var_name, [ -if test x$ac_cv_prog_uudecode_base64 = xyes; then -dnl /** -dnl * Test.java: used to test dynamicaly if a class exists. -dnl */ -dnl public class Test -dnl { -dnl -dnl public static void -dnl main( String[] argv ) -dnl { -dnl Class lib; -dnl if (argv.length < 1) -dnl { -dnl System.err.println ("Missing argument"); -dnl System.exit (77); -dnl } -dnl try -dnl { -dnl lib = Class.forName (argv[0]); -dnl } -dnl catch (ClassNotFoundException e) -dnl { -dnl System.exit (1); -dnl } -dnl lib = null; -dnl System.exit (0); -dnl } -dnl -dnl } -cat << \EOF > Test.uue -begin-base64 644 Test.class -yv66vgADAC0AKQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE -bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51 -bWJlclRhYmxlDAAKAAsBAANlcnIBABVMamF2YS9pby9QcmludFN0cmVhbTsJ -AA0ACQcADgEAEGphdmEvbGFuZy9TeXN0ZW0IABABABBNaXNzaW5nIGFyZ3Vt -ZW50DAASABMBAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWCgAV -ABEHABYBABNqYXZhL2lvL1ByaW50U3RyZWFtDAAYABkBAARleGl0AQAEKEkp -VgoADQAXDAAcAB0BAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylM -amF2YS9sYW5nL0NsYXNzOwoAHwAbBwAgAQAPamF2YS9sYW5nL0NsYXNzBwAi -AQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BAAY8aW5pdD4B -AAMoKVYMACMAJAoAAwAlAQAKU291cmNlRmlsZQEACVRlc3QuamF2YQAhAAEA -AwAAAAAAAgAJAAUABgABAAcAAABtAAMAAwAAACkqvgSiABCyAAwSD7YAFBBN -uAAaKgMyuAAeTKcACE0EuAAaAUwDuAAasQABABMAGgAdACEAAQAIAAAAKgAK -AAAACgAAAAsABgANAA4ADgATABAAEwASAB4AFgAiABgAJAAZACgAGgABACMA -JAABAAcAAAAhAAEAAQAAAAUqtwAmsQAAAAEACAAAAAoAAgAAAAQABAAEAAEA -JwAAAAIAKA== -==== -EOF - if $UUDECODE Test.uue; then - : - else - echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AS_MESSAGE_LOG_FD - echo "configure: failed file was:" >&AS_MESSAGE_LOG_FD - cat Test.uue >&AS_MESSAGE_LOG_FD - ac_cv_prog_uudecode_base64=no - fi - rm -f Test.uue - if AC_TRY_COMMAND($JAVA $JAVAFLAGS Test $1) >/dev/null 2>&1; then - eval "ac_cv_class_$ac_var_name=yes" - else - eval "ac_cv_class_$ac_var_name=no" - fi - rm -f Test.class -else - AX_TRY_COMPILE_JAVA([$1], , [eval "ac_cv_class_$ac_var_name=yes"], - [eval "ac_cv_class_$ac_var_name=no"]) -fi -eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`" -eval "HAVE_$ac_var_name=$`echo ac_cv_class_$ac_var_val`" -HAVE_LAST_CLASS=$ac_var_val -if test x$ac_var_val = xyes; then - ifelse([$2], , :, [$2]) -else - ifelse([$3], , :, [$3]) -fi -]) -dnl for some reason the above statment didn't fall though here? -dnl do scripts have variable scoping? -eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`" -AC_MSG_RESULT($ac_var_val) -]) diff --git a/FFTS/Sources/FFTS/m4/ax_check_classpath.m4 b/FFTS/Sources/FFTS/m4/ax_check_classpath.m4 deleted file mode 100644 index 3c9081a..0000000 --- a/FFTS/Sources/FFTS/m4/ax_check_classpath.m4 +++ /dev/null @@ -1,60 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_classpath.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_CLASSPATH -# -# DESCRIPTION -# -# AX_CHECK_CLASSPATH just displays the CLASSPATH, for the edification of -# the user. -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Stephane Bortzmeyer -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 5 - -AU_ALIAS([AC_CHECK_CLASSPATH], [AX_CHECK_CLASSPATH]) -AC_DEFUN([AX_CHECK_CLASSPATH],[ -if test "x$CLASSPATH" = x; then - echo "You have no CLASSPATH, I hope it is good" -else - echo "You have CLASSPATH $CLASSPATH, hope it is correct" -fi -]) diff --git a/FFTS/Sources/FFTS/m4/ax_check_java_home.m4 b/FFTS/Sources/FFTS/m4/ax_check_java_home.m4 deleted file mode 100644 index cfe8f58..0000000 --- a/FFTS/Sources/FFTS/m4/ax_check_java_home.m4 +++ /dev/null @@ -1,80 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_java_home.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_JAVA_HOME -# -# DESCRIPTION -# -# Check for Sun Java (JDK / JRE) installation, where the 'java' VM is in. -# If found, set environment variable JAVA_HOME = Java installation home, -# else left JAVA_HOME untouch, which in most case means JAVA_HOME is -# empty. -# -# LICENSE -# -# Copyright (c) 2008 Gleen Salmon -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 6 - -AU_ALIAS([AC_CHECK_JAVA_HOME], [AX_CHECK_JAVA_HOME]) - -AC_DEFUN([AX_CHECK_JAVA_HOME], -[AC_MSG_CHECKING([for JAVA_HOME]) -# We used a fake loop so that we can use "break" to exit when the result -# is found. -while true -do - # If the user defined JAVA_HOME, don't touch it. - test "${JAVA_HOME+set}" = set && break - - # On Mac OS X 10.5 and following, run /usr/libexec/java_home to get - # the value of JAVA_HOME to use. - # (http://developer.apple.com/library/mac/#qa/qa2001/qa1170.html). - JAVA_HOME=`/usr/libexec/java_home 2>/dev/null` - test x"$JAVA_HOME" != x && break - - # See if we can find the java executable, and compute from there. - TRY_JAVA_HOME=`ls -dr /usr/java/* 2> /dev/null | head -n 1` - if test x$TRY_JAVA_HOME != x; then - PATH=$PATH:$TRY_JAVA_HOME/bin - fi - AC_PATH_PROG([JAVA_PATH_NAME], [java]) - if test "x$JAVA_PATH_NAME" != x; then - JAVA_HOME=`echo $JAVA_PATH_NAME | sed "s/\(.*\)[[/]]bin[[/]]java.*/\1/"` - break - fi - - AC_MSG_NOTICE([Could not compute JAVA_HOME]) - break -done -AC_MSG_RESULT([$JAVA_HOME]) -]) diff --git a/FFTS/Sources/FFTS/m4/ax_check_java_plugin.m4 b/FFTS/Sources/FFTS/m4/ax_check_java_plugin.m4 deleted file mode 100644 index 34f3dc6..0000000 --- a/FFTS/Sources/FFTS/m4/ax_check_java_plugin.m4 +++ /dev/null @@ -1,101 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_java_plugin.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_JAVA_PLUGIN() -# -# DESCRIPTION -# -# This macro sets to empty on failure and to a compatible -# version of plugin.jar otherwise. Directories searched are /usr/java/* -# and /usr/local/java/*, which are assumed to be j{dk,re} installations. -# Apply the shell variable as you see fit. If sun changes things so -# /lib/plugin.jar is not the magic file it will stop working. -# -# This macro assumes that unzip, zipinfo or pkzipc is avialable (and can -# list the contents of the jar archive). The first two are assumed to work -# similarly enough to the infozip versisonms. The pkzipc version is -# assumed to work if I undertstand the documentation on pkware's site but -# YMMV. I do not have access to pwkware's version to test it. -# -# LICENSE -# -# Copyright (c) 2008 Duncan Simpson -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 6 - -AU_ALIAS([DPS_CHECK_PLUGIN], [AX_CHECK_JAVA_PLUGIN]) -AC_DEFUN([AX_CHECK_JAVA_PLUGIN], -[AC_REQUIRE([AC_PROG_AWK]) -AC_REQUIRE([AC_PROG_FGREP]) -AC_CHECK_PROG(ZIPINFO,[zipinfo unzip pkzipc]) -AC_MSG_CHECKING([for the java plugin]) -case "x$ZIPINFO" in -[*/zipinfo)] - zipinf="zipinfo -1" ;; -[*/unzip)] - zipinf="unzip -l";; -[*/pkzipc)] - ziping="unzipc -view";; -[x*)] - AC_MSG_RESULT([skiped, none of zipinfo, unzip and pkzipc found]) - AC_SUBST($1,[]) - zipinf="";; -esac -if test "x$zipinf" != "x"; then -jplugin="" -for jhome in `ls -dr /usr/java/* /usr/local/java/* 2> /dev/null`; do -for jfile in lib/plugin.jar jre/lib/plugin.jar; do -if test "x$jplugin" = "x" && test -f "$jhome/$jfile"; then -eval "$zipinf $jhome/$jfile | $AWK '{ print \$NF; }' | $FGREP netscape/javascript/JSObject" >/dev/null 2>/dev/null -if test $? -eq 0; then -dnl Some version of gcj (and javac) refuse to work with some files -dnl that pass this test. To stop this problem make sure that the compiler -dnl still works with this jar file in the classpath -cat << \EOF > Test.java -/* [#]line __oline__ "configure" */ -public class Test { -} -EOF -if eval "$JAVAC -classpath $jhome/$jfile Test.java 2>/dev/null >/dev/null" && test -f Test.class; then -jplugin="$jhome/$jfile" -fi -rm -f Test.java Test.class -fi; fi; done; done -if test "x$jplugin" != "x"; then -AC_SUBST($1,$jplugin) -AC_MSG_RESULT($jplugin) -else -AC_MSG_RESULT([java plugin not found]) -AC_SUBST($1,[]) -fi -fi -]) diff --git a/FFTS/Sources/FFTS/m4/ax_java_check_class.m4 b/FFTS/Sources/FFTS/m4/ax_java_check_class.m4 deleted file mode 100644 index bd5052a..0000000 --- a/FFTS/Sources/FFTS/m4/ax_java_check_class.m4 +++ /dev/null @@ -1,85 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_java_check_class.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_JAVA_CHECK_CLASS(,,) -# -# DESCRIPTION -# -# Test if a Java class is available. Based on AX_PROG_JAVAC_WORKS. This -# version uses a cache variable which is both compiler, options and -# classpath dependent (so if you switch from javac to gcj it correctly -# notices and redoes the test). -# -# The macro tries to compile a minimal program importing . Some -# newer compilers moan about the failure to use this but fail or produce a -# class file anyway. All moaing is sunk to /dev/null since I only wanted -# to know if the class could be imported. This is a recommended followup -# to AX_CHECK_JAVA_PLUGIN with classpath appropriately adjusted. -# -# LICENSE -# -# Copyright (c) 2008 Duncan Simpson -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 8 - -AU_ALIAS([DPS_JAVA_CHECK_CLASS], [AX_JAVA_CHECK_CLASS]) -AC_DEFUN([AX_JAVA_CHECK_CLASS],[ -m4_define([cache_val],[m4_translit(ax_cv_have_java_class_$1, " ." ,"__")]) -if test "x$CLASSPATH" != "x"; then -xtra=" with classpath ${CLASSPATH}" -xopts=`echo ${CLASSPATH} | ${SED} 's/^ *://'` -xopts="-classpath $xopts" -else xtra=""; xopts=""; fi -cache_var="cache_val"AS_TR_SH([_Jc_${JAVAC}_Cp_${CLASSPATH}]) -AC_CACHE_CHECK([if the $1 class is avialable$xtra], [$cache_var], [ -JAVA_TEST=Test.java -CLASS_TEST=Test.class -cat << \EOF > $JAVA_TEST -/* [#]xline __oline__ "configure" */ -import $1; -public class Test { -} -EOF -if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $xopts $JAVA_TEST) >/dev/null 2>&1; then - eval "${cache_var}=yes" -else - eval "${cache_var}=no" - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat $JAVA_TEST >&AS_MESSAGE_LOG_FD -fi -rm -f $JAVA_TEST $CLASS_TEST -]) -if eval 'test "x$'${cache_var}'" = "xyes"'; then -$2 -true; else -$3 -false; fi]) diff --git a/FFTS/Sources/FFTS/m4/ax_java_options.m4 b/FFTS/Sources/FFTS/m4/ax_java_options.m4 deleted file mode 100644 index 36c10d9..0000000 --- a/FFTS/Sources/FFTS/m4/ax_java_options.m4 +++ /dev/null @@ -1,48 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_java_options.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_JAVA_OPTIONS -# -# DESCRIPTION -# -# AX_JAVA_OPTIONS adds configure command line options used for Java m4 -# macros. This Macro is optional. -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Devin Weaver -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 6 - -AU_ALIAS([AC_JAVA_OPTIONS], [AX_JAVA_OPTIONS]) -AC_DEFUN([AX_JAVA_OPTIONS],[ -AC_ARG_WITH(java-prefix, - [ --with-java-prefix=PFX prefix where Java runtime is installed (optional)]) -AC_ARG_WITH(javac-flags, - [ --with-javac-flags=FLAGS flags to pass to the Java compiler (optional)]) -AC_ARG_WITH(java-flags, - [ --with-java-flags=FLAGS flags to pass to the Java VM (optional)]) -JAVAPREFIX=$with_java_prefix -JAVACFLAGS=$with_javac_flags -JAVAFLAGS=$with_java_flags -AC_SUBST(JAVAPREFIX)dnl -AC_SUBST(JAVACFLAGS)dnl -AC_SUBST(JAVAFLAGS)dnl -AC_SUBST(JAVA)dnl -AC_SUBST(JAVAC)dnl -]) diff --git a/FFTS/Sources/FFTS/m4/ax_jni_include_dir.m4 b/FFTS/Sources/FFTS/m4/ax_jni_include_dir.m4 deleted file mode 100644 index 5769895..0000000 --- a/FFTS/Sources/FFTS/m4/ax_jni_include_dir.m4 +++ /dev/null @@ -1,120 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_jni_include_dir.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_JNI_INCLUDE_DIR -# -# DESCRIPTION -# -# AX_JNI_INCLUDE_DIR finds include directories needed for compiling -# programs using the JNI interface. -# -# JNI include directories are usually in the java distribution This is -# deduced from the value of JAVAC. When this macro completes, a list of -# directories is left in the variable JNI_INCLUDE_DIRS. -# -# Example usage follows: -# -# AX_JNI_INCLUDE_DIR -# -# for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS -# do -# CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR" -# done -# -# If you want to force a specific compiler: -# -# - at the configure.in level, set JAVAC=yourcompiler before calling -# AX_JNI_INCLUDE_DIR -# -# - at the configure level, setenv JAVAC -# -# Note: This macro can work with the autoconf M4 macros for Java programs. -# This particular macro is not part of the original set of macros. -# -# LICENSE -# -# Copyright (c) 2008 Don Anderson -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 8 - -AU_ALIAS([AC_JNI_INCLUDE_DIR], [AX_JNI_INCLUDE_DIR]) -AC_DEFUN([AX_JNI_INCLUDE_DIR],[ - -JNI_INCLUDE_DIRS="" - -test "x$JAVAC" = x && AC_MSG_ERROR(['\$JAVAC' undefined]) -AC_PATH_PROG([_ACJNI_JAVAC], [$JAVAC], [no]) -test "x$_ACJNI_JAVAC" = xno && AC_MSG_ERROR([$JAVAC could not be found in path]) - -_ACJNI_FOLLOW_SYMLINKS("$_ACJNI_JAVAC") -_JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'` -case "$host_os" in - darwin*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` - _JINC="$_JTOPDIR/Headers";; - *) _JINC="$_JTOPDIR/include";; -esac -_AS_ECHO_LOG([_JTOPDIR=$_JTOPDIR]) -_AS_ECHO_LOG([_JINC=$_JINC]) - -# On Mac OS X 10.6.4, jni.h is a symlink: -# /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/jni.h -# -> ../../CurrentJDK/Headers/jni.h. -if test -f "$_JINC/jni.h" || test -L "$_JINC/jni.h"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC" -else - _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` - if test -f "$_JTOPDIR/include/jni.h"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include" - else - AC_MSG_ERROR([cannot find java include files]) - fi -fi - -# get the likely subdirectories for system specific java includes -case "$host_os" in -bsdi*) _JNI_INC_SUBDIRS="bsdos";; -freebsd*) _JNI_INC_SUBDIRS="freebsd";; -linux*) _JNI_INC_SUBDIRS="linux genunix";; -osf*) _JNI_INC_SUBDIRS="alpha";; -solaris*) _JNI_INC_SUBDIRS="solaris";; -mingw*) _JNI_INC_SUBDIRS="win32";; -cygwin*) _JNI_INC_SUBDIRS="win32";; -*) _JNI_INC_SUBDIRS="genunix";; -esac - -# add any subdirectories that are present -for JINCSUBDIR in $_JNI_INC_SUBDIRS -do - if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR" - fi -done -]) - -# _ACJNI_FOLLOW_SYMLINKS -# Follows symbolic links on , -# finally setting variable _ACJNI_FOLLOWED -# ---------------------------------------- -AC_DEFUN([_ACJNI_FOLLOW_SYMLINKS],[ -# find the include directory relative to the javac executable -_cur="$1" -while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do - AC_MSG_CHECKING([symlink for $_cur]) - _slink=`ls -ld "$_cur" | sed 's/.* -> //'` - case "$_slink" in - /*) _cur="$_slink";; - # 'X' avoids triggering unwanted echo options. - *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";; - esac - AC_MSG_RESULT([$_cur]) -done -_ACJNI_FOLLOWED="$_cur" -])# _ACJNI diff --git a/FFTS/Sources/FFTS/m4/ax_prog_jar.m4 b/FFTS/Sources/FFTS/m4/ax_prog_jar.m4 deleted file mode 100644 index 776e804..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_jar.m4 +++ /dev/null @@ -1,52 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_jar.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAR -# -# DESCRIPTION -# -# AX_PROG_JAR tests for an existing jar program. It uses the environment -# variable JAR then tests in sequence various common jar programs. -# -# If you want to force a specific compiler: -# -# - at the configure.in level, set JAR=yourcompiler before calling -# AX_PROG_JAR -# -# - at the configure level, setenv JAR -# -# You can use the JAR variable in your Makefile.in, with @JAR@. -# -# Note: This macro depends on the autoconf M4 macros for Java programs. It -# is VERY IMPORTANT that you download that whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. -# -# The general documentation of those macros, as well as the sample -# configure.in, is included in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Egon Willighagen -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 6 - -AU_ALIAS([AC_PROG_JAR], [AX_PROG_JAR]) -AC_DEFUN([AX_PROG_JAR],[ -AC_REQUIRE([AC_EXEEXT])dnl -if test "x$JAVAPREFIX" = x; then - test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar$EXEEXT) -else - test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar, $JAVAPREFIX) -fi -test "x$JAR" = x && AC_MSG_ERROR([no acceptable jar program found in \$PATH]) -AC_PROVIDE([$0])dnl -]) diff --git a/FFTS/Sources/FFTS/m4/ax_prog_java.m4 b/FFTS/Sources/FFTS/m4/ax_prog_java.m4 deleted file mode 100644 index 5471f32..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_java.m4 +++ /dev/null @@ -1,115 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_java.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAVA -# -# DESCRIPTION -# -# Here is a summary of the main macros: -# -# AX_PROG_JAVAC: finds a Java compiler. -# -# AX_PROG_JAVA: finds a Java virtual machine. -# -# AX_CHECK_CLASS: finds if we have the given class (beware of CLASSPATH!). -# -# AX_CHECK_RQRD_CLASS: finds if we have the given class and stops -# otherwise. -# -# AX_TRY_COMPILE_JAVA: attempt to compile user given source. -# -# AX_TRY_RUN_JAVA: attempt to compile and run user given source. -# -# AX_JAVA_OPTIONS: adds Java configure options. -# -# AX_PROG_JAVA tests an existing Java virtual machine. It uses the -# environment variable JAVA then tests in sequence various common Java -# virtual machines. For political reasons, it starts with the free ones. -# You *must* call [AX_PROG_JAVAC] before. -# -# If you want to force a specific VM: -# -# - at the configure.in level, set JAVA=yourvm before calling AX_PROG_JAVA -# -# (but after AC_INIT) -# -# - at the configure level, setenv JAVA -# -# You can use the JAVA variable in your Makefile.in, with @JAVA@. -# -# *Warning*: its success or failure can depend on a proper setting of the -# CLASSPATH env. variable. -# -# TODO: allow to exclude virtual machines (rationale: most Java programs -# cannot run with some VM like kaffe). -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. -# -# A Web page, with a link to the latest CVS snapshot is at -# . -# -# This is a sample configure.in Process this file with autoconf to produce -# a configure script. -# -# AC_INIT(UnTag.java) -# -# dnl Checks for programs. -# AC_CHECK_CLASSPATH -# AX_PROG_JAVAC -# AX_PROG_JAVA -# -# dnl Checks for classes -# AX_CHECK_RQRD_CLASS(org.xml.sax.Parser) -# AX_CHECK_RQRD_CLASS(com.jclark.xml.sax.Driver) -# -# AC_OUTPUT(Makefile) -# -# LICENSE -# -# Copyright (c) 2008 Stephane Bortzmeyer -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 8 - -AU_ALIAS([AC_PROG_JAVA], [AX_PROG_JAVA]) -AC_DEFUN([AX_PROG_JAVA],[ -if test x$JAVAPREFIX = x; then - test x$JAVA = x && AC_CHECK_PROGS(JAVA, kaffe java) -else - test x$JAVA = x && AC_CHECK_PROGS(JAVA, kaffe java, $JAVAPREFIX) -fi -test x$JAVA = x && AC_MSG_ERROR([no acceptable Java virtual machine found in \$PATH]) -AX_PROG_JAVA_WORKS -AC_PROVIDE([$0])dnl -]) diff --git a/FFTS/Sources/FFTS/m4/ax_prog_java_cc.m4 b/FFTS/Sources/FFTS/m4/ax_prog_java_cc.m4 deleted file mode 100644 index 3df064f..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_java_cc.m4 +++ /dev/null @@ -1,104 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_java_cc.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAVA_CC -# -# DESCRIPTION -# -# Finds the appropriate java compiler on your path. By preference the java -# compiler is gcj, then jikes then javac. -# -# The macro can take one argument specifying a space separated list of -# java compiler names. -# -# For example: -# -# AX_PROG_JAVA_CC(javac, gcj) -# -# The macro also sets the compiler options variable: JAVA_CC_OPTS to -# something sensible: -# -# - for GCJ it sets it to: @GCJ_OPTS@ -# (if GCJ_OPTS is not yet defined then it is set to "-C") -# -# - no other compiler has applicable options yet -# -# Here's an example configure.in: -# -# AC_INIT(Makefile.in) -# AX_PROG_JAVA_CC() -# AC_OUTPUT(Makefile) -# dnl End. -# -# And here's the start of the Makefile.in: -# -# PROJECT_ROOT := @srcdir@ -# # Tool definitions. -# JAVAC := @JAVA_CC@ -# JAVAC_OPTS := @JAVA_CC_OPTS@ -# JAR_TOOL := @jar_tool@ -# -# LICENSE -# -# Copyright (c) 2008 Nic Ferrier -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 4 - -# AX_PROG_JAVA_CC([COMPILER ...]) -# -------------------------- -# COMPILER ... is a space separated list of java compilers to search for. -# This just gives the user an opportunity to specify an alternative -# search list for the java compiler. -AU_ALIAS([AC_PROG_JAVA_CC], [AX_PROG_JAVA_CC]) -AC_DEFUN([AX_PROG_JAVA_CC], -[AC_ARG_VAR([JAVA_CC], [java compiler command])dnl -AC_ARG_VAR([JAVA_CC_FLAGS], [java compiler flags])dnl -m4_ifval([$1], - [AC_CHECK_TOOLS(JAVA_CC, [$1])], -[AC_CHECK_TOOL(JAVA_CC, gcj) -if test -z "$JAVA_CC"; then - AC_CHECK_TOOL(JAVA_CC, javac) -fi -if test -z "$JAVA_CC"; then - AC_CHECK_TOOL(JAVA_CC, jikes) -fi -]) - -if test "$JAVA_CC" = "gcj"; then - if test "$GCJ_OPTS" = ""; then - AC_SUBST(GCJ_OPTS,-C) - fi - AC_SUBST(JAVA_CC_OPTS, @GCJ_OPTS@, - [Define the compilation options for GCJ]) -fi -test -z "$JAVA_CC" && AC_MSG_ERROR([no acceptable java compiler found in \$PATH]) -])# AX_PROG_JAVA_CC diff --git a/FFTS/Sources/FFTS/m4/ax_prog_java_works.m4 b/FFTS/Sources/FFTS/m4/ax_prog_java_works.m4 deleted file mode 100644 index 741bd56..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_java_works.m4 +++ /dev/null @@ -1,134 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_java_works.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAVA_WORKS -# -# DESCRIPTION -# -# Internal use ONLY. -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Stephane Bortzmeyer -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 8 - -AU_ALIAS([AC_PROG_JAVA_WORKS], [AX_PROG_JAVA_WORKS]) -AC_DEFUN([AX_PROG_JAVA_WORKS], [ -AC_PATH_PROG(UUDECODE, uudecode, [no]) -if test x$UUDECODE != xno; then -AC_CACHE_CHECK([if uudecode can decode base 64 file], ac_cv_prog_uudecode_base64, [ -dnl /** -dnl * Test.java: used to test if java compiler works. -dnl */ -dnl public class Test -dnl { -dnl -dnl public static void -dnl main( String[] argv ) -dnl { -dnl System.exit (0); -dnl } -dnl -dnl } -cat << \EOF > Test.uue -begin-base64 644 Test.class -yv66vgADAC0AFQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE -bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51 -bWJlclRhYmxlDAAKAAsBAARleGl0AQAEKEkpVgoADQAJBwAOAQAQamF2YS9s -YW5nL1N5c3RlbQEABjxpbml0PgEAAygpVgwADwAQCgADABEBAApTb3VyY2VG -aWxlAQAJVGVzdC5qYXZhACEAAQADAAAAAAACAAkABQAGAAEABwAAACEAAQAB -AAAABQO4AAyxAAAAAQAIAAAACgACAAAACgAEAAsAAQAPABAAAQAHAAAAIQAB -AAEAAAAFKrcAErEAAAABAAgAAAAKAAIAAAAEAAQABAABABMAAAACABQ= -==== -EOF -if $UUDECODE Test.uue; then - ac_cv_prog_uudecode_base64=yes -else - echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AS_MESSAGE_LOG_FD - echo "configure: failed file was:" >&AS_MESSAGE_LOG_FD - cat Test.uue >&AS_MESSAGE_LOG_FD - ac_cv_prog_uudecode_base64=no -fi -rm -f Test.uue]) -fi -if test x$ac_cv_prog_uudecode_base64 != xyes; then - rm -f Test.class - AC_MSG_WARN([I have to compile Test.class from scratch]) - if test x$ac_cv_prog_javac_works = xno; then - AC_MSG_ERROR([Cannot compile java source. $JAVAC does not work properly]) - fi - if test x$ac_cv_prog_javac_works = x; then - AX_PROG_JAVAC - fi -fi -AC_CACHE_CHECK(if $JAVA works, ac_cv_prog_java_works, [ -JAVA_TEST=Test.java -CLASS_TEST=Test.class -TEST=Test -changequote(, )dnl -cat << \EOF > $JAVA_TEST -/* [#]line __oline__ "configure" */ -public class Test { -public static void main (String args[]) { - System.exit (0); -} } -EOF -changequote([, ])dnl -if test x$ac_cv_prog_uudecode_base64 != xyes; then - if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $JAVA_TEST) && test -s $CLASS_TEST; then - : - else - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat $JAVA_TEST >&AS_MESSAGE_LOG_FD - AC_MSG_ERROR(The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)) - fi -fi -if AC_TRY_COMMAND($JAVA $JAVAFLAGS $TEST) >/dev/null 2>&1; then - ac_cv_prog_java_works=yes -else - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat $JAVA_TEST >&AS_MESSAGE_LOG_FD - AC_MSG_ERROR(The Java VM $JAVA failed (see config.log, check the CLASSPATH?)) -fi -rm -fr $JAVA_TEST $CLASS_TEST Test.uue -]) -AC_PROVIDE([$0])dnl -] -) diff --git a/FFTS/Sources/FFTS/m4/ax_prog_javac.m4 b/FFTS/Sources/FFTS/m4/ax_prog_javac.m4 deleted file mode 100644 index d9bcc2d..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_javac.m4 +++ /dev/null @@ -1,79 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_javac.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAVAC -# -# DESCRIPTION -# -# AX_PROG_JAVAC tests an existing Java compiler. It uses the environment -# variable JAVAC then tests in sequence various common Java compilers. For -# political reasons, it starts with the free ones. -# -# If you want to force a specific compiler: -# -# - at the configure.in level, set JAVAC=yourcompiler before calling -# AX_PROG_JAVAC -# -# - at the configure level, setenv JAVAC -# -# You can use the JAVAC variable in your Makefile.in, with @JAVAC@. -# -# *Warning*: its success or failure can depend on a proper setting of the -# CLASSPATH env. variable. -# -# TODO: allow to exclude compilers (rationale: most Java programs cannot -# compile with some compilers like guavac). -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Stephane Bortzmeyer -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 6 - -AU_ALIAS([AC_PROG_JAVAC], [AX_PROG_JAVAC]) -AC_DEFUN([AX_PROG_JAVAC],[ -if test "x$JAVAPREFIX" = x; then - test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, "gcj -C" guavac jikes javac) -else - test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, "gcj -C" guavac jikes javac, $JAVAPREFIX) -fi -test "x$JAVAC" = x && AC_MSG_ERROR([no acceptable Java compiler found in \$PATH]) -AX_PROG_JAVAC_WORKS -AC_PROVIDE([$0])dnl -]) diff --git a/FFTS/Sources/FFTS/m4/ax_prog_javac_works.m4 b/FFTS/Sources/FFTS/m4/ax_prog_javac_works.m4 deleted file mode 100644 index 7dfa1e3..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_javac_works.m4 +++ /dev/null @@ -1,72 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_javac_works.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAVAC_WORKS -# -# DESCRIPTION -# -# Internal use ONLY. -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Stephane Bortzmeyer -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 6 - -AU_ALIAS([AC_PROG_JAVAC_WORKS], [AX_PROG_JAVAC_WORKS]) -AC_DEFUN([AX_PROG_JAVAC_WORKS],[ -AC_CACHE_CHECK([if $JAVAC works], ac_cv_prog_javac_works, [ -JAVA_TEST=Test.java -CLASS_TEST=Test.class -cat << \EOF > $JAVA_TEST -/* [#]line __oline__ "configure" */ -public class Test { -} -EOF -if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $JAVA_TEST) >/dev/null 2>&1; then - ac_cv_prog_javac_works=yes -else - AC_MSG_ERROR([The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)]) - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat $JAVA_TEST >&AS_MESSAGE_LOG_FD -fi -rm -f $JAVA_TEST $CLASS_TEST -]) -AC_PROVIDE([$0])dnl -]) diff --git a/FFTS/Sources/FFTS/m4/ax_prog_javadoc.m4 b/FFTS/Sources/FFTS/m4/ax_prog_javadoc.m4 deleted file mode 100644 index 508375d..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_javadoc.m4 +++ /dev/null @@ -1,52 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_javadoc.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAVADOC -# -# DESCRIPTION -# -# AX_PROG_JAVADOC tests for an existing javadoc generator. It uses the -# environment variable JAVADOC then tests in sequence various common -# javadoc generator. -# -# If you want to force a specific compiler: -# -# - at the configure.in level, set JAVADOC=yourgenerator before calling -# AX_PROG_JAVADOC -# -# - at the configure level, setenv JAVADOC -# -# You can use the JAVADOC variable in your Makefile.in, with @JAVADOC@. -# -# Note: This macro depends on the autoconf M4 macros for Java programs. It -# is VERY IMPORTANT that you download that whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. -# -# The general documentation of those macros, as well as the sample -# configure.in, is included in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Egon Willighagen -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 7 - -AU_ALIAS([AC_PROG_JAVADOC], [AX_PROG_JAVADOC]) -AC_DEFUN([AX_PROG_JAVADOC],[ -if test "x$JAVAPREFIX" = x; then - test "x$JAVADOC" = x && AC_CHECK_PROGS(JAVADOC, javadoc) -else - test "x$JAVADOC" = x && AC_CHECK_PROGS(JAVADOC, javadoc, $JAVAPREFIX) -fi -test "x$JAVADOC" = x && AC_MSG_ERROR([no acceptable javadoc generator found in \$PATH]) -AC_PROVIDE([$0])dnl -]) diff --git a/FFTS/Sources/FFTS/m4/ax_prog_javah.m4 b/FFTS/Sources/FFTS/m4/ax_prog_javah.m4 deleted file mode 100644 index 7afe410..0000000 --- a/FFTS/Sources/FFTS/m4/ax_prog_javah.m4 +++ /dev/null @@ -1,43 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_prog_javah.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_JAVAH -# -# DESCRIPTION -# -# AX_PROG_JAVAH tests the availability of the javah header generator and -# looks for the jni.h header file. If available, JAVAH is set to the full -# path of javah and CPPFLAGS is updated accordingly. -# -# LICENSE -# -# Copyright (c) 2008 Luc Maisonobe -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 5 - -AU_ALIAS([AC_PROG_JAVAH], [AX_PROG_JAVAH]) -AC_DEFUN([AX_PROG_JAVAH],[ -AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl -AC_REQUIRE([AC_PROG_CPP])dnl -AC_PATH_PROG(JAVAH,javah) -if test x"`eval 'echo $ac_cv_path_JAVAH'`" != x ; then - AC_TRY_CPP([#include ],,[ - ac_save_CPPFLAGS="$CPPFLAGS" -changequote(, )dnl - ac_dir=`echo $ac_cv_path_JAVAH | sed 's,\(.*\)/[^/]*/[^/]*$,\1/include,'` - ac_machdep=`echo $build_os | sed 's,[-0-9].*,,' | sed 's,cygwin,win32,'` -changequote([, ])dnl - CPPFLAGS="$ac_save_CPPFLAGS -I$ac_dir -I$ac_dir/$ac_machdep" - AC_TRY_CPP([#include ], - ac_save_CPPFLAGS="$CPPFLAGS", - AC_MSG_WARN([unable to include ])) - CPPFLAGS="$ac_save_CPPFLAGS"]) -fi]) diff --git a/FFTS/Sources/FFTS/m4/ax_try_compile_java.m4 b/FFTS/Sources/FFTS/m4/ax_try_compile_java.m4 deleted file mode 100644 index 8efd091..0000000 --- a/FFTS/Sources/FFTS/m4/ax_try_compile_java.m4 +++ /dev/null @@ -1,55 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_try_compile_java.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_TRY_COMPILE_JAVA -# -# DESCRIPTION -# -# AX_TRY_COMPILE_JAVA attempt to compile user given source. -# -# *Warning*: its success or failure can depend on a proper setting of the -# CLASSPATH env. variable. -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Devin Weaver -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 7 - -AU_ALIAS([AC_TRY_COMPILE_JAVA], [AX_TRY_COMPILE_JAVA]) -AC_DEFUN([AX_TRY_COMPILE_JAVA],[ -AC_REQUIRE([AX_PROG_JAVAC])dnl -cat << \EOF > Test.java -/* [#]line __oline__ "configure" */ -ifelse([$1], , , [import $1;]) -public class Test { -[$2] -} -EOF -if AC_TRY_COMMAND($JAVAC $JAVACFLAGS Test.java) && test -s Test.class -then -dnl Don't remove the temporary files here, so they can be examined. - ifelse([$3], , :, [$3]) -else - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat Test.java >&AS_MESSAGE_LOG_FD -ifelse([$4], , , [ rm -fr Test* - $4 -])dnl -fi -rm -fr Test*]) diff --git a/FFTS/Sources/FFTS/m4/ax_try_run_java.m4 b/FFTS/Sources/FFTS/m4/ax_try_run_java.m4 deleted file mode 100644 index 80ec934..0000000 --- a/FFTS/Sources/FFTS/m4/ax_try_run_java.m4 +++ /dev/null @@ -1,56 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_try_run_java.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_TRY_RUN_JAVA -# -# DESCRIPTION -# -# AX_TRY_RUN_JAVA attempt to compile and run user given source. -# -# *Warning*: its success or failure can depend on a proper setting of the -# CLASSPATH env. variable. -# -# Note: This is part of the set of autoconf M4 macros for Java programs. -# It is VERY IMPORTANT that you download the whole set, some macros depend -# on other. Unfortunately, the autoconf archive does not support the -# concept of set of macros, so I had to break it for submission. The -# general documentation, as well as the sample configure.in, is included -# in the AX_PROG_JAVA macro. -# -# LICENSE -# -# Copyright (c) 2008 Devin Weaver -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 1 - -AU_ALIAS([AC_TRY_RUN_JAVA], [AX_TRY_RUN_JAVA]) -AC_DEFUN([AX_TRY_RUN_JAVA],[ -AC_REQUIRE([AX_PROG_JAVAC])dnl -AC_REQUIRE([AX_PROG_JAVA])dnl -cat << \EOF > Test.java -/* [#]line __oline__ "configure" */ -ifelse([$1], , , [include $1;]) -public class Test { -[$2] -} -EOF -if AC_TRY_COMMAND($JAVAC $JAVACFLAGS Test.java) && test -s Test.class && ($JAVA $JAVAFLAGS Test; exit) 2>/dev/null -then -dnl Don't remove the temporary files here, so they can be examined. - ifelse([$3], , :, [$3]) -else - echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD - cat Test.java >&AS_MESSAGE_LOG_FD -ifelse([$4], , , [ rm -fr Test* - $4 -])dnl -fi -rm -fr Test*]) diff --git a/FFTS/Sources/FFTS/missing b/FFTS/Sources/FFTS/missing deleted file mode 100755 index 9a55648..0000000 --- a/FFTS/Sources/FFTS/missing +++ /dev/null @@ -1,330 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2012-01-06.18; # UTC - -# Copyright (C) 1996-2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try '$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, 'missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file 'aclocal.m4' - autoconf touch file 'configure' - autoheader touch file 'config.h.in' - autom4te touch the output file, or create a stub one - automake touch all 'Makefile.in' files - bison create 'y.tab.[ch]', if possible, from existing .[ch] - flex create 'lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create 'lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create 'y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and -'g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown '$1' option" - echo 1>&2 "Try '$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running '$TOOL --version' or '$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'acinclude.m4' or '${configure_ac}'. You might want - to install the Automake and Perl packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified '${configure_ac}'. You might want to install the - Autoconf and GNU m4 packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'acconfig.h' or '${configure_ac}'. You might want - to install the Autoconf and GNU m4 packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'. - You might want to install the Automake and Perl packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: '$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get '$1' as part of Autoconf from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: '$1' $msg. You should only need it if - you modified a '.y' file. You may need the Bison package - in order for those modifications to take effect. You can get - Bison from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a '.l' file. You may need the Flex package - in order for those modifications to take effect. You can get - Flex from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - Help2man package in order for those modifications to take - effect. You can get Help2man from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a '.texi' or '.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy 'make' (AIX, - DU, IRIX). You might want to install the Texinfo package or - the GNU make package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: '$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the 'README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing '$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/FFTS/Sources/FFTS/src/Makefile.am b/FFTS/Sources/FFTS/src/Makefile.am deleted file mode 100644 index ff6b0cc..0000000 --- a/FFTS/Sources/FFTS/src/Makefile.am +++ /dev/null @@ -1,35 +0,0 @@ - - -lib_LTLIBRARIES = libffts.la - -libffts_la_SOURCES = ffts.c ffts_nd.c ffts_real.c ffts_real_nd.c ffts_transpose.c ffts_trig.c ffts_static.c ffts_chirp_z.c -libffts_la_SOURCES += codegen.h codegen_arm.h codegen_sse.h ffts.h ffts_nd.h ffts_real.h ffts_real_nd.h ffts_small.h ffts_static.h macros-alpha.h macros-altivec.h macros-neon.h macros-sse.h macros.h neon.h neon_float.h patterns.h types.h vfp.h - -if DYNAMIC_DISABLED -libffts_la_SOURCES += ffts_static.c -else -libffts_la_SOURCES += codegen.c -endif - -libffts_includedir=$(includedir)/ffts -libffts_include_HEADERS = ../include/ffts.h - -AM_CFLAGS = -I$(top_srcdir)/include -DAUTOTOOLS_BUILD=yes - -if HAVE_VFP -libffts_la_SOURCES += vfp.s -else -if HAVE_NEON - -libffts_la_SOURCES += neon.s - -if DYNAMIC_DISABLED -libffts_la_SOURCES += neon_static_f.s neon_static_i.s -endif - -else -if HAVE_SSE -libffts_la_SOURCES += macros-sse.h -endif -endif -endif diff --git a/FFTS/Sources/FFTS/src/Makefile.in b/FFTS/Sources/FFTS/src/Makefile.in deleted file mode 100644 index 2002ad8..0000000 --- a/FFTS/Sources/FFTS/src/Makefile.in +++ /dev/null @@ -1,730 +0,0 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@DYNAMIC_DISABLED_TRUE@am__append_1 = ffts_static.c -@DYNAMIC_DISABLED_FALSE@am__append_2 = codegen.c -@HAVE_VFP_TRUE@am__append_3 = vfp.s -@HAVE_NEON_TRUE@@HAVE_VFP_FALSE@am__append_4 = neon.s -@DYNAMIC_DISABLED_TRUE@@HAVE_NEON_TRUE@@HAVE_VFP_FALSE@am__append_5 = neon_static_f.s neon_static_i.s -@HAVE_NEON_FALSE@@HAVE_SSE_TRUE@@HAVE_VFP_FALSE@am__append_6 = sse.s -subdir = src -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/depcomp $(libffts_include_HEADERS) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_classpath.m4 \ - $(top_srcdir)/m4/ax_check_java_home.m4 \ - $(top_srcdir)/m4/ax_java_options.m4 \ - $(top_srcdir)/m4/ax_jni_include_dir.m4 \ - $(top_srcdir)/m4/ax_prog_jar.m4 \ - $(top_srcdir)/m4/ax_prog_javac.m4 \ - $(top_srcdir)/m4/ax_prog_javac_works.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" \ - "$(DESTDIR)$(libffts_includedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libffts_la_LIBADD = -am__libffts_la_SOURCES_DIST = ffts.c ffts_small.c ffts_nd.c \ - ffts_real.c ffts_real_nd.c patterns.c codegen.h codegen_arm.h \ - codegen_sse.h ffts.h ffts_nd.h ffts_real.h ffts_real_nd.h \ - ffts_small.h ffts_static.h macros-alpha.h macros-altivec.h \ - macros-neon.h macros-sse.h macros.h neon.h neon_float.h \ - patterns.h types.h vfp.h ffts_static.c codegen.c vfp.s neon.s \ - neon_static_f.s neon_static_i.s sse.s -@DYNAMIC_DISABLED_TRUE@am__objects_1 = ffts_static.lo -@DYNAMIC_DISABLED_FALSE@am__objects_2 = codegen.lo -@HAVE_VFP_TRUE@am__objects_3 = vfp.lo -@HAVE_NEON_TRUE@@HAVE_VFP_FALSE@am__objects_4 = neon.lo -@DYNAMIC_DISABLED_TRUE@@HAVE_NEON_TRUE@@HAVE_VFP_FALSE@am__objects_5 = neon_static_f.lo \ -@DYNAMIC_DISABLED_TRUE@@HAVE_NEON_TRUE@@HAVE_VFP_FALSE@ neon_static_i.lo -@HAVE_NEON_FALSE@@HAVE_SSE_TRUE@@HAVE_VFP_FALSE@am__objects_6 = \ -@HAVE_NEON_FALSE@@HAVE_SSE_TRUE@@HAVE_VFP_FALSE@ sse.lo -am_libffts_la_OBJECTS = ffts.lo ffts_small.lo ffts_nd.lo ffts_real.lo \ - ffts_real_nd.lo patterns.lo $(am__objects_1) $(am__objects_2) \ - $(am__objects_3) $(am__objects_4) $(am__objects_5) \ - $(am__objects_6) -libffts_la_OBJECTS = $(am_libffts_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) -LTCCASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(AM_CCASFLAGS) \ - $(CCASFLAGS) -AM_V_CCAS = $(am__v_CCAS_@AM_V@) -am__v_CCAS_ = $(am__v_CCAS_@AM_DEFAULT_V@) -am__v_CCAS_0 = @echo " CCAS " $@; -am__v_CCAS_1 = -SOURCES = $(libffts_la_SOURCES) -DIST_SOURCES = $(am__libffts_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -HEADERS = $(libffts_include_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -JAR = @JAR@ -JAVA = @JAVA@ -JAVAC = @JAVAC@ -JAVACFLAGS = @JAVACFLAGS@ -JAVAFLAGS = @JAVAFLAGS@ -JAVAPREFIX = @JAVAPREFIX@ -JAVA_PATH_NAME = @JAVA_PATH_NAME@ -JNI_CPPFLAGS = @JNI_CPPFLAGS@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -_ACJNI_JAVAC = @_ACJNI_JAVAC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -lib_LTLIBRARIES = libffts.la -libffts_la_SOURCES = ffts.c ffts_small.c ffts_nd.c ffts_real.c \ - ffts_real_nd.c patterns.c codegen.h codegen_arm.h \ - codegen_sse.h ffts.h ffts_nd.h ffts_real.h ffts_real_nd.h \ - ffts_small.h ffts_static.h macros-alpha.h macros-altivec.h \ - macros-neon.h macros-sse.h macros.h neon.h neon_float.h \ - patterns.h types.h vfp.h $(am__append_1) $(am__append_2) \ - $(am__append_3) $(am__append_4) $(am__append_5) \ - $(am__append_6) -libffts_includedir = $(includedir)/ffts -libffts_include_HEADERS = ../include/ffts.h -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj .s -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libffts.la: $(libffts_la_OBJECTS) $(libffts_la_DEPENDENCIES) $(EXTRA_libffts_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libffts_la_OBJECTS) $(libffts_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codegen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffts.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffts_nd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffts_real.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffts_real_nd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffts_small.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffts_static.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/patterns.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -.s.o: - $(AM_V_CCAS)$(CCASCOMPILE) -c -o $@ $< - -.s.obj: - $(AM_V_CCAS)$(CCASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.s.lo: - $(AM_V_CCAS)$(LTCCASCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libffts_includeHEADERS: $(libffts_include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(libffts_include_HEADERS)'; test -n "$(libffts_includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(libffts_includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libffts_includedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libffts_includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(libffts_includedir)" || exit $$?; \ - done - -uninstall-libffts_includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(libffts_include_HEADERS)'; test -n "$(libffts_includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(libffts_includedir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libffts_includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-libffts_includeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES \ - uninstall-libffts_includeHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES \ - install-libffts_includeHEADERS install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ - uninstall-libffts_includeHEADERS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/FFTS/Sources/FFTS/src/arch/.gitignore b/FFTS/Sources/FFTS/src/arch/.gitignore deleted file mode 100644 index 16c9840..0000000 --- a/FFTS/Sources/FFTS/src/arch/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/Makefile -/Makefile.in -/.deps -/.libs -/*.la -/*.lo diff --git a/FFTS/Sources/FFTS/src/arch/ChangeLog b/FFTS/Sources/FFTS/src/arch/ChangeLog deleted file mode 100644 index c42aa63..0000000 --- a/FFTS/Sources/FFTS/src/arch/ChangeLog +++ /dev/null @@ -1,4805 +0,0 @@ -commit e8fa461503cf681fd7f6fffdbe94346cb4a0b94f -Author: Zoltan Varga -Date: Sat Sep 13 13:56:18 2014 -0400 - - [runtime] Remove an unused interpreter file. - -commit b8e69265771d2d730847add35620628ff003aed1 -Author: Rodrigo Kumpera -Date: Tue Sep 9 09:14:37 2014 -0400 - - [cleanup] Remove more old files. - -commit 69d89956fcc24cec955246588269cb7c8012b7cb -Author: Rodrigo Kumpera -Date: Mon Sep 1 13:25:07 2014 -0400 - - [runtime] Remove the interpreter. - -commit a9db0d5b41d17cb7ff5788a63ce0eee1e01652b3 -Author: Neale Ferguson -Date: Tue Jun 3 11:52:00 2014 -0400 - - Architectural level set to z10 instruction set - -commit edeeadda807c9189ad6b7cdd0f221c355ad95e52 -Author: Alex Rønne Petersen -Date: Tue Apr 29 16:56:12 2014 +0200 - - Add .gitignore file in mono/arch/arm64. - -commit 62b813772cfa4af873a278c39dd1f01dc6e50c2e -Author: Zoltan Varga -Date: Sat Apr 19 20:16:47 2014 +0200 - - [arm64] Add JIT support. - -commit 1d58ec09524d6f4ce37f39698e68fb45a3c0231b -Author: Zoltan Varga -Date: Sat Apr 19 17:03:21 2014 +0200 - - [arm64] Add basic port infrastructure. - -commit 12741090edd2230bfd0fac498af3e304680380b4 -Author: Zoltan Varga -Date: Tue Apr 1 18:39:05 2014 +0000 - - [jit] Implement support for atomic intrinsics on arm. - -commit 21ca1bad7d0447bb5d420a58128e1c2733635efa -Author: Rodrigo Kumpera -Date: Wed Dec 11 11:13:14 2013 -0500 - - [arch]Add cvtsi2ss to amd64 codegen. - -commit 4a25d5fa1811be15c62979993cd1a37c2891d0a5 -Author: Alex Rønne Petersen -Date: Sat Nov 23 18:26:55 2013 +0100 - - Fix the encoding of x86_imul_reg_mem_imm. - -commit 43b05e3c36d05526f7a9f3f8767569d026e4f1c6 -Author: Alex Rønne Petersen -Date: Fri Nov 15 15:08:06 2013 +0100 - - Fix the `nop` opcode on some MIPS-based Loongson CPUs. - - After much trouble building Mono in Debian/MIPS, @directhex - narrowed it down to this issue: - - https://sourceware.org/ml/binutils/2009-11/msg00387.html - - So since some of the 2E and 2F versions of the Loongson CPUs - break with a regular `sll zero, zero, 0` we need to issue an - `or at, at, 0`. This makes sure we don't randomly deadlock or - blow up when the CPU is under heavy load. - - Yes, really. - -commit 2f56d471f089b8f514377ce501a0c1643652d639 -Author: Zoltan Varga -Date: Fri May 24 23:41:39 2013 +0200 - - Merge some Nacl/ARM changes from https://github.com/igotti-google/mono/commit/65d8d68e8c81cf6adb1076de7a9425c84cab86a3. - -commit ab6a96ef346220433f9f7967b763a0453d9cbc66 -Author: Zoltan Varga -Date: Tue May 14 18:27:32 2013 +0200 - - Enable hw division/remainder on mt in non-thumb mode as well. - -commit 78c1e65942210449d0d1c4957b42242ebc9bdb5a -Author: Alex Rønne Petersen -Date: Tue May 14 03:10:43 2013 +0200 - - Kill support for the ancient FPA format on ARM. - -commit a42bc8f14a3393150fb6fbb772c2b0259267f5ae -Author: Neale Ferguson -Date: Thu Apr 25 10:01:14 2013 -0400 - - Add lazy rgctx support to s390x - -commit 92b3dc346aad94e7e6a91e7356adcebbb180c618 -Author: Zoltan Varga -Date: Mon Apr 22 17:54:27 2013 +0200 - - Remove obsolete 32 bit s390 backend. - -commit 0d9d79945bfc7e791ed39e7519b8769a3c09fe28 -Author: Elijah Taylor -Date: Thu Jan 31 12:48:49 2013 -0800 - - NaCl GC improvements - - - inline managed code implementation - (add x86 test mem imm8 codegen macro for this as well) - - clean up libgc NaCl code - - centralize mono_nacl_gc into mini.c - -commit a2b380c30f8e12e508d9b761b9b049d17dff3617 -Author: Zoltan Varga -Date: Fri Mar 1 20:27:07 2013 +0100 - - Remove the unmaintained and incomplete alpha backend. - -commit ddee8bb5125ad07f673a5f9a45ddc629dec8c126 -Author: Zoltan Varga -Date: Tue Feb 26 22:08:26 2013 +0100 - - Remove the unmaintained and incomplete hppa backend. - -commit 9c434db79ba98565a8dadcfbbe8737621a698589 -Author: Rodrigo Kumpera -Date: Tue Oct 9 17:23:38 2012 -0400 - - Use full path for includes as this was braking the cross compiler. - -commit 600580c96563f5702acee5a0307432e96731d837 -Author: Zoltan Varga -Date: Thu Oct 4 13:03:06 2012 +0200 - - Save fp registers in the ARM throw trampoline, ios has callee saved fp registers, and LLVM generates code which uses them. - -commit 0b64268e0a56e3f76063f0b679975be0daaf68b1 -Author: Zoltan Varga -Date: Wed Oct 3 10:26:37 2012 +0200 - - Use AM_CPPFLAGS instead of INCLUDES in Makefile.am files, as the later is no longer supported, see http://lists.gnu.org/archive/html/automake/2012-08/msg00087.html. - -commit f2e43c392dde726d2f1008dfcc8515d34354e968 -Author: Zoltan Varga -Date: Wed Sep 19 01:37:26 2012 +0000 - - Save/restore fp registers in MonoContext on ios. Fixes #1949. - -commit a841c76b86e38fc8e5db24f152b5fab2501ddf1a -Author: Iain Lane -Date: Sun Apr 15 14:49:55 2012 +0100 - - Fix ARM printf format problems - - When building with -Werror=format-security on ARM, mono fails to build - due to incorrect format strings in arm-dis.c - -commit 33426abe6bd7ad8eb37d2f214afe08a0a3d70a0b -Author: Neale Ferguson -Date: Mon Apr 2 13:30:43 2012 -0400 - - s390x-codegen.h - Define s390_SP and s390_BP - sgen-major-copy-object.h - Correct assertion test - sgen-os-posix.c - Prevent race condition between restarting and suspending a thread - -commit c565eab0f9d79f6009c3878eaa190529838b0204 -Author: Miguel de Icaza -Date: Mon Mar 12 16:15:46 2012 -0400 - - Update some copyrights - -commit d711efe0d6403fa49697c304696843a789805112 -Author: Zoltan Varga -Date: Fri Dec 2 06:20:16 2011 +0000 - - Ongoing MIPS work. Fix mips_load () to be patchable, fix endianness issue in OP_MIPS_MFC1D, fix OP_JMP. make rcheck runs now. - -commit 32a164a381080aee3afa42ea33e31d89579519a4 -Author: Zoltan Varga -Date: Wed Nov 16 04:35:31 2011 -0500 - - Revert "Add support for hardfp abi on ARM." - - This reverts commit e7055b45b9211fb20021997f7da0fa24992421f5. - -commit aaae806b8bd16a82937c9417689aeb82bea0b952 -Author: Miguel de Icaza -Date: Wed Nov 9 10:25:48 2011 -0500 - - Update two days worth of copyrights, many more missing - -commit 96e5ba7724999828facefb30e0982d0be6931bda -Author: Zoltan Varga -Date: Wed Nov 9 01:13:16 2011 +0100 - - Add support for hardfp abi on ARM. - -commit c6d53e16991eb2dcc3e4d99a008fdd899d2b78f2 -Author: Elijah Taylor -Date: Fri Aug 5 17:02:45 2011 +0200 - - Fix up bugs in x86-codegen for NaCl. - -commit 8034d4b8f49485babcbffd12d3e09fd372c00ccb -Author: Zoltan Varga -Date: Wed Jul 6 16:16:16 2011 +0200 - - Prefix ARM FPA codegen macros with 'FPA'. - -commit d2a95b8feb24584dd528b3deb0f5f1ec5d7766a3 -Author: Zoltan Varga -Date: Thu Jun 23 21:33:43 2011 +0200 - - Fix out-of-tree builds on arm. - -commit d093f6fff2bcaa4ccfc795354b151c7ca1a0c613 -Author: Neale Ferguson -Date: Fri May 6 12:52:19 2011 -0400 - - Implement soft debugger for s390x and fix context macro for s390x - -commit 4c9723aa3efac03bc33deed252ebda71cbb1ae86 -Author: Zoltan Varga -Date: Tue Mar 8 12:14:52 2011 +0100 - - Fix some warnings. - -commit b1a613aca13e03185d0ba49e46fd77fd8eb98fc9 -Author: Zoltan Varga -Date: Sun Feb 20 03:22:52 2011 +0100 - - Implement mono_memory_barrier () and OP_MEMORY_BARRIER for ARM. - -commit f81e3005a53a10c39f4ca8dd30a2a88719c7d005 -Author: Neale Ferguson -Date: Sun Jan 16 23:40:23 2011 -0500 - - Cast result of s390x_emit16/32 to eliminate lots of warning messages - Check for wrapper-managed-to-native when assessing call parameters and have emit_prolog use native_size when processing those parameters - Signed-off-by: Neale Ferguson - -commit 92a55ae009739b5ec652676b8fdd615375c27fc0 -Author: Rodrigo Kumpera -Date: Mon Jan 10 10:52:46 2011 +0000 - - Implement mono.simd new conversion ops on amd64 - -commit b7639e01d7603a1e34dd225edb5e99fd2181494b -Author: Rodrigo Kumpera -Date: Mon Jan 10 10:40:12 2011 +0100 - - Implement a few conversion operations. - - Add conversion operations between 4f, 2d and 4i. - Implemented only on x86 for now. - -commit f0e5c2be6946491ba052c82794361ec0d33cb04c -Author: Rodrigo Kumpera -Date: Fri Jan 7 00:19:03 2011 +0000 - - AMD64 version of the new mono.simd ops - -commit 1aa6254fb828e043ea55d7d3e37b02812e2d9bdf -Author: Rodrigo Kumpera -Date: Thu Jan 6 21:36:31 2011 +0100 - - Implement Shuffle for 64bits types. - - * x86-codegen.h: Add macro and define to emit pshufpd. - - * mini-ops.h: Add OP_SHUPD. - - * cpu-x86.md: - * mini-x86.h: Implement x86 support. - - * simd-intrinsics.c: Handle shuffle on 64bit types. - - * VectorOperations.cs: Add new methods. - -commit c1fb94e7e72e58924dcebe8cdfcdbcbe1e65b644 -Author: Rodrigo Kumpera -Date: Thu Jan 6 18:43:59 2011 +0100 - - Add SHUFPS and macro to emit it. - -commit 48f5efeb334eb4b6e867c65ae53e21b3c45fd771 -Author: Zoltan Varga -Date: Thu Jan 6 19:35:45 2011 +0100 - - Put back a macro definition accidently removed by the nacl changes. - -commit a7074ea55af096913e4bcc8e044be7601bcc55b5 -Author: Zoltan Varga -Date: Thu Jan 6 11:49:32 2011 +0100 - - Fix warnings introduced by the NACL merge. - -commit 4edb45273377cc0858dab7e12b19026467e796c5 -Author: Elijah Taylor -Date: Tue Dec 14 16:03:45 2010 -0800 - - Merge mono/io-layer, mono/metadata, mono/arch/x86 and configure.in for Native Client - -commit cfdf246cd2ffd65bd25e09f1d66bb55d57bf8953 -Author: Elijah Taylor -Date: Tue Dec 14 14:37:36 2010 -0800 - - Changes to mono/arch/amd64 for Native Client - -commit aa974c33a3cee416fc456053164835acbf81df70 -Author: Rodrigo Kumpera -Date: Fri Sep 24 11:28:46 2010 -0300 - - Implement amd64 support for OP_CARDTABLE. - - * amd64-codegen.h (amd64_alu_reg_membase_size): Add support - for RIP based addressing. - - * cpu-amd64.md: Add card_table_wbarrier. - - * mini-amd64.c (mono_arch_output_basic_block): Emit the - new OP. - - * mini-amd64.c (mono_arch_emit_exceptions): Handle another - kind of patch-info - GC_CARD_TABLE_ADDR. This is required - because we can neither have 64bits immediates with amd64 - or 2 scratch regiters with current regalloc. - - * mini-amd64.h: Define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER. - -commit 7981b77489eba9fafe98b764ae8c423143e55a25 -Author: Mark Mason -Date: Wed Aug 18 23:39:36 2010 +0800 - - Simplify test for MIPS imm16 operands. - - Code contributed under the MIT/X11 license. - -commit 881a8fe8dfebf42e0f50228319132001d121c983 -Author: Elijah Taylor -Date: Mon Aug 9 17:40:18 2010 +0200 - - Add hooks to the codegen macros to support NACL codegen. - -commit da52cebbb28392e8043a36e8c29f4ceb4f706741 -Author: Raja R Harinath -Date: Sun Jul 25 20:09:25 2010 +0530 - - EOL handling - - This set of .gitattributes was automatically generated from the list of files - that GIT tried to normalize when I enabled automatic EOL conversion. - - With this set of attributes, we prevent automated EOL conversion on files that - we know will cause trouble down the road. - -commit 80806328ee52ed52783e005f044e8447d34efac5 -Author: Zoltan Varga -Date: Wed May 19 02:35:46 2010 +0000 - - 2010-05-19 Zoltan Varga - - * ppc/ppc-codegen.h (ppc_load_func): Fix ilp32 support. - - svn path=/trunk/mono/; revision=157521 - -commit bb66b04f8ca017660ae65afa4b86a33b32d48cdb -Author: Zoltan Varga -Date: Thu Apr 8 04:41:44 2010 +0000 - - .gitignore - - svn path=/trunk/mono/; revision=155025 - -commit 2b562993a3dced62eb48aeedcf38f234b655e86f -Author: Zoltan Varga -Date: Mon Mar 29 23:21:23 2010 +0000 - - 2010-03-30 Zoltan Varga - - * arm/*.sh: Remove bash dependency. - - svn path=/trunk/mono/; revision=154407 - -commit 977db7f5b92aa4e7b8909f6d2440f3347e548364 -Author: Neale Ferguson -Date: Tue Mar 23 20:00:46 2010 +0000 - - Primarily, add support for mono_arch_get_throw_corlib_exception and IMT - for s390x. Other s390x fixes to instruction sizes, parameter passing, and ARCH - settings. - - - svn path=/trunk/mono/; revision=154085 - -commit 282ce11cd7691698334563b95ca4b49e6c32f900 -Author: Gonzalo Paniagua Javier -Date: Fri Nov 20 22:34:30 2009 +0000 - - removing PLATFORM_WIN32 - - svn path=/trunk/mono/; revision=146652 - -commit 774d55350115d1c4f08dc2a9b015e9502d796cef -Author: Zoltan Varga -Date: Tue Nov 10 00:58:49 2009 +0000 - - 2009-11-10 Zoltan Varga - - * arm/arm-codegen.h: Fix the names of the LDMIA/STMIA macros, they don't actually - update the base register. - - svn path=/trunk/mono/; revision=145786 - -commit 568b4a7ab726e87c664a682193fa57c5521ed23c -Author: Zoltan Varga -Date: Fri Aug 14 13:49:01 2009 +0000 - - 2009-08-14 Zoltan Varga - - * arm/arm-codegen.h: Add armv6 MOVW/MOVT. - - svn path=/trunk/mono/; revision=139918 - -commit c4d98f3131b6b7d0732050c2e0ac7bd05b6c27c2 -Author: Jerri Maine -Date: Tue Aug 4 00:31:14 2009 +0000 - - Contributed under the terms of the MIT/X11 license by - Jerry Maine . - - * mono/arch/amd64/amd64-codegen.h: Added missing code gen marco for single packed square root. - * mono/mini/basic-simd.cs: added test for packed double square root. - * mono/mini/cpu-amd64.md: added opcode info for packed double square root. - * mono/mini/cpu-x86.md: added opcode info for packed double square root. - * mono/mini/mini-ops.h: added IR opcode for packed double square root. - * mono/mini/mini-x86.c: added IR to native translation code for packed double square root. - * mono/mini/mini-amd64.c: removed todo for packed double square root. - * mono/mini/simd-intrinsics.c: added method to IR opcode converstion for - packed double square root. - - svn path=/trunk/mono/; revision=139309 - -commit fc5d2d293fe800d860e9af4fcd9b19f9be7d4e17 -Author: Paolo Molaro -Date: Fri Jul 24 15:00:25 2009 +0000 - - Fri Jul 24 16:54:13 CEST 2009 Steven Munroe - - This patch is contributed under the terms of the MIT/X11 license - - * arch/ppc/ppc-codegen.h (ppc_ha): Define high adjusted - conversion to support combining addis for bits 32-47 with - signed load/store diplacements for bits 48-63. - (ppc_fcfidx, ppc_fctidx, ppc_fctidzx): Share with PPC32. - These instructions are availble to 32-bit programs on 64-bit - hardware and 32-bit both starting with PowerISA V2.01. - [__mono_ppc64__]: Define ppc_mftgpr and ppc_mffgpr for Power6 - native mode. - [!__mono_ppc64__]: Define ppc_is_imm32 as constant true for - ppc32. - - - svn path=/trunk/mono/; revision=138635 - -commit f44bc9e40cc840bf63bf782aa0338aae3e898f7f -Author: Zoltan Varga -Date: Mon Jul 20 20:45:49 2009 +0000 - - 2009-07-20 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_sse_pminud_reg_reg): Fix the encoding - of this instruction. - - svn path=/trunk/mono/; revision=138242 - -commit 88ccf5c589b23d6e79ea5a588d3986693b09879a -Author: Zoltan Varga -Date: Mon Jul 13 21:58:58 2009 +0000 - - 2009-07-13 Zoltan Varga - - * x86/x86-codegen.h: Applied patch from Marian Salaj . - Fix encoding of PMINSW and PMINSD. Fixes #521662. - - svn path=/trunk/mono/; revision=137821 - -commit 64d366eddf3b1c93bcaaff2190fa1cc2b01f7f03 -Author: Jerri Maine -Date: Fri Jul 10 22:35:07 2009 +0000 - - Contributed under the terms of the MIT/X11 license by - Jerry Maine . - - * amd64/amd64-codegen.h: Add marcos for coding several specific sse opcodes. - * amd64/amd64-codegen.h: Fix bugs in simd marcos. - - svn path=/trunk/mono/; revision=137736 - -commit d7fa5cedae9e4859b340ee29e997dfd48b45ce6e -Author: Jerri Maine -Date: Wed Jun 24 21:25:11 2009 +0000 - - Fix wrong date in my entry to ChangeLog files. Sorry! :(( - - svn path=/trunk/mono/; revision=136786 - -commit 1c634ebda21ddf5392c9d8edd030323d1ad85962 -Author: Jerri Maine -Date: Wed Jun 24 21:19:29 2009 +0000 - - mini-amd64.c: Added code to convert simd IR to native amd64 sse. - amd64/amd64-codegen.h: Add marcos for coding several specific sse opcodes. - - svn path=/trunk/mono/; revision=136785 - -commit bb994071dcc42ba150d88776fe70f8d35fc522a9 -Author: Neale Ferguson -Date: Tue Jun 23 23:55:26 2009 +0000 - - Fix LCONV_TO_xx and ICONV_TO_xx. Fix leave_method dump of returned - structure. Fix formatting. - Correct instruction lengths. - Add new instructions. - - svn path=/trunk/mono/; revision=136748 - -commit f48a4f5a13745caf5350d6f190efb97ec6b605ef -Author: Zoltan Varga -Date: Mon Jun 22 15:25:02 2009 +0000 - - Fix a few uses of ppc_store_reg. - - svn path=/trunk/mono/; revision=136607 - -commit 4ecc9d712b82d78c853e574edc0345c85bfcd660 -Author: Zoltan Varga -Date: Mon Jun 22 15:24:56 2009 +0000 - - Fix a few uses of ppc_load_reg/ppc_store_reg. - - svn path=/trunk/mono/; revision=136606 - -commit 40c668ecb1553ffb7b6575b439b3ff8420265cd8 -Author: Zoltan Varga -Date: Mon Jun 22 15:22:10 2009 +0000 - - 2009-06-22 Zoltan Varga - - * ppc/ppc-codegen.h: Rework the naming of the load/store macros, - ldr/str now handle register sized quantities, while ldptr/stptr handle - pointer sized quantities. - - svn path=/trunk/mono/; revision=136604 - -commit cf0e113f7dd91ff8b46e35047cc48c2e5ece925c -Author: Zoltan Varga -Date: Sat Jun 20 18:47:03 2009 +0000 - - 2009-06-20 Zoltan Varga - - * ppc/ppc-codegen.h: Fix the last change to avoid self-assignments inside - macros. - - svn path=/trunk/mono/; revision=136548 - -commit 3858973d0bd980206ea3725a2e74f2a336aa1aa1 -Author: Zoltan Varga -Date: Sat Jun 20 13:04:42 2009 +0000 - - 2009-06-20 Zoltan Varga - - * ppc/ppc-codegen.h: Add ppc_ldr/ppc_str macros to store regsize quantities. - Handle little endian host platforms in ppc_emit32. - - svn path=/trunk/mono/; revision=136539 - -commit 9629536810d07a63b980a29912eaf3df7313fee9 -Author: Jerri Maine -Date: Fri Jun 12 17:33:11 2009 +0000 - - Add marcos for coding two byte SIMD/SSE opcodes. Added comments to help tell the different types of SSE code gen marcos appart. - - svn path=/trunk/mono/; revision=136018 - -commit 76cddabf0319c7be9fae2b6c532aafe6587fafbc -Author: Miguel de Icaza -Date: Wed Apr 22 23:59:10 2009 +0000 - - merge - - svn path=/trunk/mono/; revision=132427 - -commit 965b554666f2999b9e01dd731b1134af1cfcd5fa -Author: Zoltan Varga -Date: Mon Apr 6 15:09:57 2009 +0000 - - 2009-04-06 Zoltan Varga - - * arm/arm-vfp-codegen.h: Add ARM_FSITOS/ARM_FSITOD. - - svn path=/trunk/mono/; revision=131125 - -commit 7b7235494cabe7c5a796fafd6297070f993b03a8 -Author: Zoltan Varga -Date: Thu Apr 2 22:37:35 2009 +0000 - - 2009-04-03 Zoltan Varga - - * amd64/amd64-codegen.h: Add macros for decoding the SIB byte. - - svn path=/trunk/mono/; revision=130910 - -commit 9f497af70ef5ed9244ffbe9a6263f7d077136148 -Author: Zoltan Varga -Date: Thu Apr 2 00:50:47 2009 +0000 - - 2009-04-02 Zoltan Varga - - * arm/arm-vfp-codegen.h: Add missing VFP codegen macros. - - svn path=/trunk/mono/; revision=130817 - -commit 7c682141c5861685e5b0efdcc1f337083657cf9d -Author: Zoltan Varga -Date: Fri Mar 6 15:55:12 2009 +0000 - - 2009-03-06 Zoltan Varga - - * arm/tramp.c: Include a change from the debian patches. Avoid #include-ing - a file in the middle of a function. - - svn path=/trunk/mono/; revision=128782 - -commit a7f6dd7620d7c440216c0f156bcd969a28a592d4 -Author: Martin Baulig -Date: Sat Feb 28 14:36:50 2009 +0000 - - Create .gitignore's. - - svn path=/trunk/mono/; revision=128265 - -commit 22e6e9728faa11a87a7f6f0f0ff0f0f8ef754c03 -Author: Zoltan Varga -Date: Fri Feb 27 06:21:52 2009 +0000 - - 2009-02-27 Zoltan Varga - - * arm/{arm_fpamacros.h, arm_vfpmacros.h}: Remove these files, they are - autogenerated. - - svn path=/trunk/mono/; revision=128179 - -commit c70f15fc12afeb73f19d4ff18cf11b7289d76c4f -Author: Mark Probst -Date: Mon Feb 2 23:32:58 2009 +0000 - - 2009-02-02 Mark Probst - - Contributed under the terms of the MIT/X11 license by Steven - Munroe . - - * ppc/ppc-codegen.h: Make operand order and case consistent - (assembler order) for ppc_load_reg_update, ppc_load_multiple_regs, - ppc_store_multiple_regs, ppc_lwz, ppc_lhz, ppc_lbz, - ppc_stw,ppc_sth, ppc_stb, ppc_stwu, ppc_lbzu, ppc_lfdu, ppc_lfsu, - ppc_lfsux, ppc_lfsx, ppc_lha, ppc_lhau, ppc_lhzu, ppc_lmw, - ppc_lwzu, ppc_stbu, ppc_stfdu, ppc_stfsu, ppc_sthu, ppc_stmw. Use - "i" or "ui" instead of "d" for immediated operands to immediate - arthimetic and logical instructions in macros ppc_addi, ppc_addis, - ppc_ori, ppc_addic, ppc_addicd, ppc_andid, ppc_andisd. - [__mono_ppc64__]: Make operand order and case consistent - (assembler order) for ppc_load_multiple_regs, - ppc_store_multiple_regs. Simplify the DS form and make them - consistent with D forms for ppc_load_reg, ppc_load_reg_update, - ppc_store_reg, ppc_store_reg_update. ppc_ld, ppc_lwa, ppc_ldu, - ppc_std, ppc_stdu. Define ppc_lwax and ppc_lwaux. - - 2009-02-02 Mark Probst - - Contributed under the terms of the MIT/X11 license by Steven - Munroe . - - * exceptions-ppc.c (restore_regs_from_context): Correct operand - order (offset then base reg) for ppc_load_multiple_regs. - (emit_save_saved_regs) Correct operand order for - ppc_store_multiple_regs. - (mono_arch_get_call_filter): Correct operand order for - ppc_load_multiple_regs. - - * mini-ppc.c (emit_memcpy): Fix operand order for - ppc_load_reg_update and ppc_store_reg_update. - (mono_arch_output_basic_block): Correct operand order for ppc_lha. - (mono_arch_emit_epilog): Correct operand order for - ppc_load_multiple_regs. - - * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand - order for ppc_store_multiple_regs and ppc_load_multiple_regs. - - svn path=/trunk/mono/; revision=125443 - -commit f228d47d2afc549321cec800466e6bc1cde631bb -Author: Rodrigo Kumpera -Date: Mon Jan 19 19:47:54 2009 +0000 - - 2009-01-19 Rodrigo Kumpera - - * x86/x86-codegen.h: Add x86_movd_xreg_membase. - - svn path=/trunk/mono/; revision=123825 - -commit 792160756d6ef76711408f151838c3f5a5f8d83b -Author: Mark Probst -Date: Fri Dec 19 19:46:04 2008 +0000 - - 2008-12-19 Mark Probst - - * ppc/ppc-codegen.h: Fixed the argument order for lwzu in - ppc_load_reg_update. - - svn path=/trunk/mono/; revision=121883 - -commit 344a06253c9c1bad287e160b9714b0a052e68a09 -Author: Mark Mason -Date: Sat Dec 13 06:54:25 2008 +0000 - - 2008-12-12 Mark Mason - - * mips/mips-codegen.h: Changes to support n32. - - Contributed under the MIT X11 license. - - svn path=/trunk/mono/; revision=121488 - -commit 2dcc1868b2e2e830a9fa84a445ee79a8f6ab38ba -Author: Mark Probst -Date: Wed Dec 10 09:33:57 2008 +0000 - - 2008-12-10 Mark Probst - - * mini-ppc.c: Merged with mini-ppc64.c. - - * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets. - - * Makefile.am: Use the same sources for PPC and PPC64. - - * mini-ppc64.c: Removed. - - 2008-12-10 Mark Probst - - * ppc/ppc-codegen.h: A few new macros for the final PPC/PPC64 - merge. - - svn path=/trunk/mono/; revision=121203 - -commit 77eff8936b5e423be2712ba66cd8baba0edd2795 -Author: Mark Probst -Date: Fri Dec 5 20:57:02 2008 +0000 - - 2008-12-05 Mark Probst - - * mini-ppc.c: Some simple merges from mini-ppc64.c. - - 2008-12-05 Mark Probst - - * ppc/ppc-codegen.h: ppc_load_func must use ppc_load_sequence. - Added ppc_compare_log. - - svn path=/trunk/mono/; revision=120890 - -commit dd397c9fd311f0411694ff1cc7904aec14f4551b -Author: Mark Probst -Date: Fri Dec 5 16:42:24 2008 +0000 - - 2008-12-05 Mark Probst - - * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with - tramp-ppc64.c. - - * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c. - - * tramp-ppc64.c: Removed. - - 2008-12-05 Mark Probst - - * ppc/ppc-codegen.h: Added ppc_load_func for PPC32. Added - ppc_load/store_multiple_regs and ppc_compare_reg_imm. - - svn path=/trunk/mono/; revision=120852 - -commit 7f226f68fb98684dafd132d90ca1a24635c33557 -Author: Mark Probst -Date: Tue Dec 2 16:03:45 2008 +0000 - - 2008-12-02 Mark Probst - - * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): - Fix trampoline size. - - * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point - conversion opcodes are implemented natively instead via emulation. - - 2008-12-02 Mark Probst - - * ppc/ppc-codegen.h: Opcodes for floating point conversions from - 64 bit integers. - - Code submitted by andreas.faerber@web.de at - https://bugzilla.novell.com/show_bug.cgi?id=324134 under the - X11/MIT license. - - svn path=/trunk/mono/; revision=120492 - -commit 742361c7bfc21faf8485d20d00cdfc58c04800f9 -Author: Mark Probst -Date: Fri Nov 28 19:06:34 2008 +0000 - - 2008-11-28 Mark Probst - - * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and - make them work. - - 2008-11-28 Mark Probst - - * object.c: Don't put function descriptors into generalized IMT - thunks. - - 2008-11-28 Mark Probst - - * ppc/ppc-codegen.h: #define for the maximum length of a load - sequence. - - svn path=/trunk/mono/; revision=120248 - -commit b45b096d6d4246f16d05e42838122f1d58f875f6 -Author: Mark Probst -Date: Fri Nov 21 00:21:53 2008 +0000 - - 2008-11-21 Mark Probst - - * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes. Now - PPC64 passes basic-long.exe. - - 2008-11-21 Mark Probst - - * ppc/ppc-codegen.h: Make ppc_is_[u]imm16() work with 64 bit - values. - - svn path=/trunk/mono/; revision=119560 - -commit dc227de13e4f1cee33c379401adbb90a225e680a -Author: Rodrigo Kumpera -Date: Thu Nov 20 23:45:00 2008 +0000 - - 2008-11-20 Rodrigo Kumpera - - * x86/x86-codegen.h: Add X86_SSE_MOVHPD_REG_MEMBASE and renamed MOVS to MOVSD. - - svn path=/trunk/mono/; revision=119549 - -commit 01e12b57e8773f9c65c64a91f956b0fa9335d095 -Author: Rodrigo Kumpera -Date: Thu Nov 20 23:44:44 2008 +0000 - - 2008-11-20 Rodrigo Kumpera - - * x86/x86-codegen.h: Add X86_SSE_MOVS_ reg/membase variants. - - * x86/x86-codegen.h: Add x86_sse_alu_pd_reg_membase_imm. - - * x86/x86-codegen.h: Sort the x86_sse_alu_* macros decently. - - svn path=/trunk/mono/; revision=119545 - -commit 96ed3f7c4ea51c61ec3b5d0600c32fa003b8e4f7 -Author: Mark Probst -Date: Thu Nov 20 21:36:13 2008 +0000 - - 2008-11-20 Mark Probst - - * decompose.c: Decompose carry and overflow add on PPC64 like on - other 64 bit archs. Don't decompose sub at all on PPC64. - - * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md: - Several fixes and new opcodes. Now PPC64 runs (but doesn't pass) - basic-long.exe. - - 2008-11-20 Mark Probst - - * ppc/ppc-codegen.h: Use ppc_load_reg instead of ppc_ld in - ppc_load_func to fix the 2 bit shift. - - svn path=/trunk/mono/; revision=119516 - -commit 14651d4fa6b039131000aa5157ed99b7526f89b8 -Author: Mark Probst -Date: Thu Nov 20 21:27:36 2008 +0000 - - 2008-11-20 Mark Probst - - * ppc/ppc-codegen.h: 64 bit division opcodes. - - Code submitted by andreas.faerber@web.de at - https://bugzilla.novell.com/show_bug.cgi?id=324134 under the - X11/MIT license. - - svn path=/trunk/mono/; revision=119515 - -commit daa4af175e0f8b95888918dbf429c7d5f66d3c07 -Author: Zoltan Varga -Date: Thu Nov 20 14:28:51 2008 +0000 - - 2008-11-20 Zoltan Varga - - * arm/Makefile.am (libmonoarch_arm_la_SOURCES): Don't build tramp.c, it is only - used by the interpreter. - - svn path=/trunk/mono/; revision=119444 - -commit 3225dc9308230de9fbbca884c05e6b150a8e0333 -Author: Rodrigo Kumpera -Date: Thu Nov 20 14:12:04 2008 +0000 - - 2008-11-20 Rodrigo Kumpera - - * x86/x86-codegen.h: Add PEXTR B/W/D. - - svn path=/trunk/mono/; revision=119441 - -commit 5c317c4676f911a0620b54e6668cf66a5c0dda31 -Author: Rodrigo Kumpera -Date: Tue Nov 18 21:56:58 2008 +0000 - - 2008-11-18 Rodrigo Kumpera - - * x86/x86-codegen.h: Add PINSR B/W/D. - - svn path=/trunk/mono/; revision=119229 - -commit b31b375fc1354cc835d183e7e251e602eeb038c5 -Author: Rodrigo Kumpera -Date: Tue Nov 18 21:56:49 2008 +0000 - - 2008-11-17 Rodrigo Kumpera - - * x86/x86-codegen.h: Fix comment about the version of PCMPGTQ. - - * x86/x86-codegen.h: Add movsd constant and x86_sse_alu_sd_membase_reg - macro. - - svn path=/trunk/mono/; revision=119227 - -commit dbebfad82832bf895561902dd527d2e4c158c2c9 -Author: Mark Probst -Date: Tue Nov 18 15:32:41 2008 +0000 - - 2008-11-18 Mark Probst - - * ppc/ppc-codegen.h: Macro for nop added. - - 2008-11-18 Mark Probst - - * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes - for PPC64. An empty program runs now. - - svn path=/trunk/mono/; revision=119162 - -commit 406790f1df77c80b5b28bcac561e7b6c6cd1a3a6 -Author: Mark Probst -Date: Tue Nov 18 10:25:11 2008 +0000 - - 2008-11-18 Mark Probst - - * ppc/ppc-codegen.h: PPC64 code generation macros. - - Based on code submitted by andreas.faerber@web.de at - https://bugzilla.novell.com/show_bug.cgi?id=324134 under the - X11/MIT license. - - svn path=/trunk/mono/; revision=119141 - -commit 484dbedc8136e413a77ee11938d40e713cfefcfd -Author: Mark Probst -Date: Tue Nov 18 10:17:36 2008 +0000 - - 2008-11-18 Mark Probst - - * ppc/ppc-codegen.h: A few fixes and additions. - - Based on code submitted by andreas.faerber@web.de at - https://bugzilla.novell.com/show_bug.cgi?id=324134 under the - X11/MIT license. - - svn path=/trunk/mono/; revision=119140 - -commit 74b70bd5f7bc3b40a919c6c8b06c22facae8df6b -Author: Rodrigo Kumpera -Date: Mon Nov 17 17:00:22 2008 +0000 - - 2008-11-17 Rodrigo Kumpera - - * x86/x86-codegen.h: Add X86_SSE_MOVHPD_MEMBASE_REG constant - and x86_sse_alu_pd_membase_reg/x86_sse_alu_membase_reg macros. - - svn path=/trunk/mono/; revision=119057 - -commit 59483983e37bb55af19f4e98e3de2f1ad216989b -Author: Andreas Färber -Date: Sat Nov 15 10:59:47 2008 +0000 - - 2008-11-15 Andreas Faerber - - * ppc/test.c: Add support for Mac OS X. - - This commit is licensed under the MIT X11 license. - - svn path=/trunk/mono/; revision=118924 - -commit 6c930cb35aa08e10abba989d9cb8560b4636ba73 -Author: Rodrigo Kumpera -Date: Thu Nov 13 22:51:27 2008 +0000 - - 2008-11-13 Rodrigo Kumpera - - * x86/x86-codegen.h: Remove not used macro x86_pshufd_reg_reg. - - svn path=/trunk/mono/; revision=118779 - -commit bfe79f71f1352fbbfb696de3b0c093562b6fefb5 -Author: Rodrigo Kumpera -Date: Tue Nov 4 20:17:31 2008 +0000 - - 2008-11-04 Rodrigo Kumpera - - * x86/x86-codegen.h: Add store nta. - - svn path=/trunk/mono/; revision=117921 - -commit 42f47d048391da1619aa26b70e54980c4c33e3f2 -Author: Rodrigo Kumpera -Date: Mon Nov 3 14:41:44 2008 +0000 - - 2008-11-03 Rodrigo Kumpera - - * x86/x86-codegen.h: Add prefetch instruction - and x86_sse_alu_reg_membase macro. - - svn path=/trunk/mono/; revision=117753 - -commit eaf2804839ffb61912a8eeef7c3a58463aafcdd6 -Author: Rodrigo Kumpera -Date: Tue Oct 28 19:24:34 2008 +0000 - - 2008-10-28 Rodrigo Kumpera - - * x86/x86-codegen.h: Add long version of the packed integer - ops. - - svn path=/trunk/mono/; revision=117292 - -commit 3fffcb4ac5879f2655ee3b4b3bee093a9eaa5016 -Author: Rodrigo Kumpera -Date: Tue Oct 28 00:05:56 2008 +0000 - - 2008-10-27 Rodrigo Kumpera - - * x86/x86-codegen.h: Add movddup. - - svn path=/trunk/mono/; revision=117220 - -commit bf9bec59fad96b9a7cb38921c26bb1c176fe40ce -Author: Rodrigo Kumpera -Date: Fri Oct 24 21:58:17 2008 +0000 - - 2008-10-24 Rodrigo Kumpera - - * x86/x86-codegen.h: Add signed pack with saturation. - - svn path=/trunk/mono/; revision=116995 - -commit 2ffed07a8205616ea4a1605338f08c8ad6c77432 -Author: Rodrigo Kumpera -Date: Fri Oct 24 13:36:53 2008 +0000 - - 2008-10-24 Rodrigo Kumpera - - * x86/x86-codegen.h: Add signed packed mul high. - - svn path=/trunk/mono/; revision=116936 - -commit 2b6070d8bbd583f6bb90e02f3961252ef0854da8 -Author: Gonzalo Paniagua Javier -Date: Fri Oct 24 01:02:49 2008 +0000 - - remove temporary/generated files - - svn path=/trunk/mono/; revision=116902 - -commit 7a2889c2ce0cfbc193324b64764a02e42f5daee8 -Author: Rodrigo Kumpera -Date: Fri Oct 24 00:35:54 2008 +0000 - - 2008-10-23 Rodrigo Kumpera - - * x86/x86-codegen.h: Add signed packed max, min, add/sub with saturation - and compare greater. - - svn path=/trunk/mono/; revision=116896 - -commit 600a42f70b41a94712aac746e44f2bba885dfc1f -Author: Rodrigo Kumpera -Date: Mon Oct 20 19:36:04 2008 +0000 - - 2008-10-20 Rodrigo Kumpera - - * x86/x86-codegen.h: Add multiply and store high. - - svn path=/trunk/mono/; revision=116545 - -commit 454b5617264c1bb64ff7296669db98a14cc58118 -Author: Rodrigo Kumpera -Date: Fri Oct 17 17:41:14 2008 +0000 - - 2008-10-17 Rodrigo Kumpera - - * x86/x86-codegen.h: Add packed int shuffle. - - svn path=/trunk/mono/; revision=116265 - -commit 8336fe34234402529da0e46af634948d678ee649 -Author: Rodrigo Kumpera -Date: Thu Oct 16 23:22:27 2008 +0000 - - 2008-10-16 Rodrigo Kumpera - - * x86/x86-codegen.h: Add packed int compare equals and - psabw. - - svn path=/trunk/mono/; revision=116117 - -commit 0a6e6df8d766d7ad1b21d6c234826293d1317979 -Author: Rodrigo Kumpera -Date: Wed Oct 15 20:52:54 2008 +0000 - - 2008-10-15 Rodrigo Kumpera - - * x86/x86-codegen.h: Add packed int max/min/avg/shuffle and extract mask. - - svn path=/trunk/mono/; revision=115919 - -commit ec2240eaee83b7c5ff444e0708a114458394d55b -Author: Rodrigo Kumpera -Date: Tue Oct 14 15:02:05 2008 +0000 - - 2008-10-14 Rodrigo Kumpera - - * x86/x86-codegen.h: Add movsldup and movshdup. - - svn path=/trunk/mono/; revision=115785 - -commit 7ed9633867d31f5dd5fd971611f952574c005a87 -Author: Rodrigo Kumpera -Date: Mon Oct 13 22:13:15 2008 +0000 - - 2008-10-13 Rodrigo Kumpera - - * x86/x86-codegen.h: Add remaining FP sse1 ops. - Add sse ps encoding with imm operand. - Add remaining sse1 ops. - - svn path=/trunk/mono/; revision=115699 - -commit 18f1e82ca6ebaf0929f654a56ab9ddfadfacacb5 -Author: Rodrigo Kumpera -Date: Mon Oct 13 01:13:10 2008 +0000 - - 2008-10-12 Rodrigo Kumpera - - * x86/x86-codegen.h: Add macro for sse41 ops. - Add defined for pack ops, dword shifts/mul/pack. - - 2008-10-12 Rodrigo Kumpera - - * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out - that the packuswb/packusdw don't work with unsigned numbers for what - would be negative numbers in signed format. - - * cpu-x86.md: Add doubleword forms of many ops and packing ones. - Fix the len of fconv_to_r8_x and xconv_r8_to_i4. - - * mini-ops.h: Add doubleword forms of many ops and packing ones. - - * mini-x86.c: Emit doubleword forms of many ops and packing ones. - - * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version. - - * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops. - - * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and - add more ops. - - * simd-intrinsics.c (simd_version_name): New function, returns the name of the - version as the enum in mini.h. - - * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode - for sse3 ops, check the simd_version field if present. This way the code - works with all versions of sse. - - svn path=/trunk/mono/; revision=115610 - -commit 494ea4f86907f393c8f0ba660edb100a107a8c80 -Author: Zoltan Varga -Date: Sat Oct 11 05:26:06 2008 +0000 - - 2008-10-11 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_jump_code_size): Fix the 64 bit support. - - svn path=/trunk/mono/; revision=115509 - -commit ba0739c0dc1dd6713f6127160dcee501b105c300 -Author: Zoltan Varga -Date: Fri Oct 10 21:55:37 2008 +0000 - - 2008-10-10 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_jump_code_size): Handle non 32-bit targets. - - svn path=/trunk/mono/; revision=115494 - -commit 5de452f7ff84e26bd22b86205a1cdb9fc207fe75 -Author: Rodrigo Kumpera -Date: Thu Oct 9 18:28:16 2008 +0000 - - 2008-10-09 Rodrigo Kumpera - - * x86/x86-codegen.h: Add macros for sse shift, pack, unpack, - saturated math and packed byte/word/dword math. - - svn path=/trunk/mono/; revision=115367 - -commit 922c5a03dc6cd66147b1c6bfeb8c1045176618da -Author: Rodrigo Kumpera -Date: Fri Oct 3 14:28:09 2008 +0000 - - 2008-10-03 Rodrigo Kumpera - - * x86/x86-codegen.h: Add macros and enum for SSE instructions. - - svn path=/trunk/mono/; revision=114751 - -commit f2d756dab8d08c009df41d94eb21fdf427a8e01a -Author: Mark Probst -Date: Sat Sep 27 13:02:48 2008 +0000 - - 2008-09-27 Mark Probst - - * ppc/ppc-codegen.h: A few typecasts to fix compiler warnings. - - 2008-09-27 Mark Probst - - * mini-ppc.c: Compiler warning fixes. - - svn path=/trunk/mono/; revision=114279 - -commit 386d8b482a7e399e4e8d130dd0d2d2ab405068ae -Author: Mark Probst -Date: Sun Sep 7 10:25:11 2008 +0000 - - 2008-09-07 Mark Probst - - * marshal.c (mono_type_native_stack_size): Treat - MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE. - - 2008-09-07 Mark Probst - - * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC - until they're implemented properly. - - * exceptions-ppc.c: Use arch-independent exception-handling code - instead of custom one. - - * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes - for Linear IR. - - * tramp-ppc.c, mini-ppc.c: Fixed warnings. - - * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also - applies when __powerpc__ is defined. - - 2008-09-07 Mark Probst - - * libtest.c: Darwin structure alignment also applies to PPC. - - 2008-09-07 Mark Probst - - * ppc/ppc-codegen.h (ppc_load): Inserted cast to fix some - warnings. - - svn path=/trunk/mono/; revision=112455 - -commit 5c8178c1e6cf4d2370c865c6bc66995ca1174eb9 -Author: Mark Probst -Date: Mon Jun 16 09:37:01 2008 +0000 - - 2008-06-16 Mark Probst - - * amd64/amd64-codegen.h: Removed extraneous parenthesis in a macro - nobody uses. - - svn path=/trunk/mono/; revision=105886 - -commit ecbcbb317678440e62a13e16820f95f6ea2dff3d -Author: Zoltan Varga -Date: Fri Jun 6 02:08:56 2008 +0000 - - 2008-06-06 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_padding_size): Rewrite this to use the - instructions recommended by the amd64 manual. - - svn path=/trunk/mono/; revision=105134 - -commit 0ded1416da01e39a6c4a33fc9798123d4021fe4d -Author: Zoltan Varga -Date: Sat Apr 19 14:18:56 2008 +0000 - - 2008-04-19 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_is_imm32): Use gint64 instead of glong because of - win64. - - svn path=/trunk/mono/; revision=101210 - -commit cb1954322f73b8d1b0a6836c5242b05538ed72dd -Author: Jb Evain -Date: Sun Apr 13 11:44:22 2008 +0000 - - last merge 100420:100549 - - svn path=/branches/jb/ml2/mono/; revision=100550 - -commit a977d5e7585e338491944fc87b5e018891eedd93 -Author: Geoff Norton -Date: Wed Mar 12 17:08:32 2008 +0000 - - In .: - 2008-03-13 Geoff Norton - - * arch/arm/tramp.c: Dont compile this on PLATFORM_MACOSX - - - svn path=/trunk/mono/; revision=98063 - -commit 8c6ca9f3fda169feccab289ecd181e06bcc8e133 -Author: Zoltan Varga -Date: Mon Feb 18 18:25:24 2008 +0000 - - 2008-02-18 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_movsxd_reg_mem): New codegen macro. - - svn path=/trunk/mono/; revision=96092 - -commit 7a7cef000b9d59672b47c0fcdf75bd1fc00b8c78 -Author: Zoltan Varga -Date: Thu Feb 14 14:21:56 2008 +0000 - - 2008-02-14 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_alu_membase8_imm_size): New codegen macro. - - svn path=/trunk/mono/; revision=95633 - -commit 9cbc23b5ee9e4f2dca88f8418d11be97079c25a1 -Author: Zoltan Varga -Date: Fri Feb 8 14:28:06 2008 +0000 - - 2008-02-08 Zoltan Varga - - * arm/arm-codegen.h: Fix the ordering of arguments for some load/store opcodes - so they are consistent. - - svn path=/trunk/mono/; revision=95254 - -commit b951542a9ead8a408c6560a0ffad28a5ade9670d -Author: Zoltan Varga -Date: Thu Jan 24 20:12:46 2008 +0000 - - 2008-01-24 Zoltan Varga - - * Makefile.am (SUBDIRS): Or if INTERP_SUPPORTED is true. - - svn path=/trunk/mono/; revision=93834 - -commit 95aa5dc93dbfbcf10125032ecde0e5eabc969a98 -Author: Zoltan Varga -Date: Thu Jan 24 20:10:14 2008 +0000 - - 2008-01-24 Zoltan Varga - - * Makefile.am (SUBDIRS): Only set this on arm. - - svn path=/trunk/mono/; revision=93833 - -commit 11c84542edf07ed41b831c12058f9a0bdd83df93 -Author: Zoltan Varga -Date: Tue Nov 20 17:45:36 2007 +0000 - - 2007-11-20 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_alu_reg_imm_size): Prefer the smaller - instruction encoding. - - svn path=/trunk/mono/; revision=90005 - -commit b15fabef0c7798e4850432910d97e0249cd691fc -Author: Zoltan Varga -Date: Sat Nov 10 15:22:00 2007 +0000 - - 2007-11-03 David S. Miller - - * sparc/sparc-codegen.h (sparc_set32, sparc_set): A plain sethi - can be used if the constant value only has the top 22 bits set. - - svn path=/trunk/mono/; revision=89409 - -commit e22c1134d1553f6da21c1ef50ab4afb009d7c215 -Author: Geoff Norton -Date: Mon Nov 5 22:28:08 2007 +0000 - - 2007-11-01 Geoff Norton - - * x86/Makefile.am: Only compile tramp.c if INTERP_SUPPORTED is true - Fixes the build on Leopard. - - - svn path=/trunk/mono/; revision=88931 - -commit ad3b3601f5c113df825c3d2e09fb03b5aa4d1208 -Author: Geoff Norton -Date: Thu Nov 1 19:03:16 2007 +0000 - - 2007-11-01 Geoff Norton - - * ppc/Makefile.am: Only compile tramp.c if INTERP_SUPPORTED is true - Fixes the build on Leopard. - - svn path=/trunk/mono/; revision=88673 - -commit 8991f4a9503167171a0ad5e745d71ec4bd8b846c -Author: Jonathan Chambers -Date: Fri Oct 26 14:41:54 2007 +0000 - - 2007-10-26 Jonathan Chambers - - * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG# - defines to access param registers. Replace long usage with - gsize as sizeof(long) != sizeof(void*) on Win64. - - * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure - on Win64. Fix intrinsic, use _AddressOfReturnAddress - instead of non-existant _GetAddressOfReturnAddress. - - * tramp-amd64.c: Use AMD64_ARG_REG# defines to access - param registers. Save/restore %rdi and %rsi in MonoLMF. - - * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access - param registers. Modify (throw_exception) signature to take - %rdi and %rsi on Win64. - - Code is contributed under MIT/X11 license. - - 2007-10-26 Jonathan Chambers - - * amd64/amd64-codegen.h: Begin Win64 port. Use AMD64_ARG_REG# - defines to access param registers. Replace long usage with - gsize as sizeof(long) != sizeof(void*) on Win64. - - Code is contributed under MIT/X11 license. - - - svn path=/trunk/mono/; revision=88258 - -commit 118f4540a2da9cdb72debfb786a9930e93f2a10b -Author: Zoltan Varga -Date: Tue Oct 9 00:12:58 2007 +0000 - - 2007-10-09 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_jump_membase_size): Remove an unneccesary - rex prefix which trips up valgrind. - - svn path=/trunk/mono/; revision=87140 - -commit e43f3ebed2b5b54c47b5f8ce458788dce0ef97dc -Author: Zoltan Varga -Date: Sat Jul 14 14:04:54 2007 +0000 - - 2007-07-14 Zoltan Varga - - * amd64/amd64-codegen.h: Remove some unused rex prefixes. - - svn path=/trunk/mono/; revision=81979 - -commit 25f0e1d2bd61097c008fa88e4a114884bb6fe0c9 -Author: Paolo Molaro -Date: Wed Jul 4 13:17:45 2007 +0000 - - Wed Jul 4 15:29:07 CEST 2007 Paolo Molaro - - * x86/x86-codegen.h: added minimal sse instructions currently - needed by the JIT. - - - svn path=/trunk/mono/; revision=81331 - -commit e971b6ec5cf03043dc227759fced05d5786964d4 -Author: Paolo Molaro -Date: Wed Jun 13 17:41:53 2007 +0000 - - 2007-06-13 Randolph Chung - - * hppa/hppa-codegen.h: Update with more instructions. - * hppa/tramp.c: Disable for linux since we don't support the - interpreter. - - - svn path=/trunk/mono/; revision=79463 - -commit 26169bb71cd30b373975373952fb11d7a26b0cca -Author: Zoltan Varga -Date: Sun May 20 19:41:51 2007 +0000 - - 2007-05-20 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_call_reg): Remove a got prefix which isn't needed. - - svn path=/trunk/mono/; revision=77730 - -commit a024b2405701bbee2003e46a0f9b0e2c0486033c -Author: Zoltan Varga -Date: Mon Apr 23 11:31:33 2007 +0000 - - 2007-04-23 Zoltan Varga - - * alpha/alpha-codegen.h: More alpha port work from - Sergey Tikhonov . - - svn path=/trunk/mono/; revision=76103 - -commit 5ca5ea86f1ff85953c28e0ba3b657268cd2cdfba -Author: Neale Ferguson -Date: Sun Apr 15 09:11:00 2007 +0000 - - * tramp.c: Add MONO_TYPE_PTR case. - * mini-s390.c: Correct checking for enum type in return value processing. - - svn path=/trunk/mono/; revision=75718 - -commit 9159abc7ec906d64a15eee8e02b9e5b3f2cce87d -Author: Neale Ferguson -Date: Thu Apr 12 20:45:34 2007 +0000 - - * tramp.c: Add MONO_TYPE_PTR case. - - - svn path=/trunk/mono/; revision=75663 - -commit b7fd657ee94257eeec946fa9eb11b3f60e7e33e6 -Author: Paolo Molaro -Date: Mon Mar 12 16:07:56 2007 +0000 - - Mon Mar 12 17:07:32 CET 2007 Paolo Molaro - - * amd64/amd64-codegen.h: removed some useless size rex prefixes. - - - svn path=/trunk/mono/; revision=74128 - -commit 0ba3e4bdd057c7a0d25767f7647a00f07683b44c -Author: Paolo Molaro -Date: Wed Jan 24 20:01:27 2007 +0000 - - Wed Jan 24 21:00:40 CET 2007 Paolo Molaro - - * arm/arm-codegen.h: fixed encoding of short/byte load/store - instructions with negative immediate offsets. - - - svn path=/trunk/mono/; revision=71622 - -commit 0251f000fba5c8f99bec6c33beae0c2aabe66451 -Author: Neale Ferguson -Date: Tue Jan 23 17:11:29 2007 +0000 - - * s390x-codegen.h: Add packed attribute to several instruction structures. - - svn path=/trunk/mono/; revision=71523 - -commit 8e25ae408b9d1836130807d3f465023347051332 -Author: Miguel de Icaza -Date: Fri Dec 22 22:51:15 2006 +0000 - - Patch from Sergey Tikhonov - - Mono on Alpha updates: - - - Code cleanup - - Some hacks to support debugger - - updates for "linears" optimization - - - svn path=/trunk/mono/; revision=69976 - -commit edd2746e20c982e094abfd547afad74d8e7d2302 -Author: Paolo Molaro -Date: Mon Nov 20 16:37:26 2006 +0000 - - Mon Nov 20 17:36:45 CET 2006 Paolo Molaro - - * arm/arm-codegen.h: added suppot for thumb interworking instructions. - - - svn path=/trunk/mono/; revision=68201 - -commit b63503e7c4b5ebb8baafb5b58ec69395146db022 -Author: Paolo Molaro -Date: Wed Nov 15 16:00:09 2006 +0000 - - Wed Nov 15 16:56:53 CET 2006 Paolo Molaro - - * mips/*: fixes by Mark E Mason . - - - svn path=/trunk/mono/; revision=67929 - -commit 6f8d67005785ba86e81ac930325767d0b270a070 -Author: Paolo Molaro -Date: Fri Nov 10 18:42:10 2006 +0000 - - Typo fixes. - - svn path=/trunk/mono/; revision=67683 - -commit f99322f3ea7b7be85ac63c87c664aafb7f5e17bf -Author: Miguel de Icaza -Date: Wed Oct 11 21:34:24 2006 +0000 - - 2006-10-11 Sergey Tikhonov - - * atomic.h: Fix atomic decrement. - - * mini/cpu-alpha.md: Use native long shift insts - - * mono/mono/mini/tramp-alpha.c: Implemented - mono_arch_patch_delegate_trampoline method - - * Started work on using global registers - - * Use byte/word memory load/store insts if cpu supports it - - * Code clean up - - - - - svn path=/trunk/mono/; revision=66573 - -commit 538fd0794b9ef24f7c765891ed682fc947cf8e85 -Author: Zoltan Varga -Date: Tue Sep 12 13:02:59 2006 +0000 - - 2006-09-12 Zoltan Varga - - * alpha/alpha-codegen.h: More alpha updates from Sergey Tikhonov . - - svn path=/trunk/mono/; revision=65305 - -commit 0689ca5f72fa8cb03fb1b565a31c4e2b22774a64 -Author: Paolo Molaro -Date: Tue Sep 12 11:10:42 2006 +0000 - - Tue Sep 12 13:09:56 CEST 2006 Paolo Molaro - - * arm/*: VFP floating point format code generation support. - - - svn path=/trunk/mono/; revision=65295 - -commit deacad246a936216f09a81b9881c6780de8dd406 -Author: Zoltan Varga -Date: Tue Sep 12 10:05:29 2006 +0000 - - 2006-09-12 Zoltan Varga - - * ia64/ia64-codegen.h: Add xmpy_l/u pseudo ops. - - svn path=/trunk/mono/; revision=65289 - -commit 207e90216277d1d1ee0e6cd37f183440c8c39a26 -Author: Zoltan Varga -Date: Wed Jul 19 12:10:43 2006 +0000 - - 2006-07-19 Zoltan Varga - - * amd64/amd64-codegen.h: Fix amd64_mov_mem_reg. - - svn path=/trunk/mono/; revision=62746 - -commit 8f58fa13418008cb86a8ba450a894b23efc4574e -Author: Zoltan Varga -Date: Wed Jul 19 12:09:09 2006 +0000 - - 2006-07-19 Zoltan Varga - - * alpha/alpha-codegen.h alpha/test.c alpha/tramp.c: Applied patch from - Sergey Tikhonov . Updates to alpha support. - - svn path=/trunk/mono/; revision=62745 - -commit ef8021400f045f835fcf70baf5ba5880fe6eca93 -Author: Paolo Molaro -Date: Thu Jun 15 15:00:59 2006 +0000 - - Thu Jun 15 16:59:36 CEST 2006 Paolo Molaro - - * ppc/ppc-codegen.h: reduce noisy build warnings by - casting to the more commonly used unsigned char type - (from johannes@sipsolutions.net (Johannes Berg)). - - - svn path=/trunk/mono/; revision=61757 - -commit de54a3e44b1214298b39386b49e1ca992176e2e4 -Author: Zoltan Varga -Date: Sun May 14 18:51:25 2006 +0000 - - 2006-05-14 Zoltan Varga - - * ia64/ia64-codegen.h (ia64_fetchadd8_acq_hint_pred): Fix encoding of this - opcode. - - svn path=/trunk/mono/; revision=60695 - -commit 3b274ddc5c946640a4c0d6a7b2dee13cd2f5096d -Author: Zoltan Varga -Date: Fri Apr 21 14:51:24 2006 +0000 - - 2006-04-21 Zoltan Varga - - * Makefile.am (SUBDIRS): Revert the last change as arm depends on the old - behaviour. - - svn path=/trunk/mono/; revision=59758 - -commit e830aadb2febf62051b8fc162884a909087cfe4e -Author: Zoltan Varga -Date: Wed Apr 12 19:02:09 2006 +0000 - - 2006-04-12 Zoltan Varga - - * sparc/sparc-codegen.h (sparc_inst_i): New disassembly macro. - - svn path=/trunk/mono/; revision=59415 - -commit a65cd014e420a38b47e00f5c6f9ce590fc00987b -Author: Zoltan Varga -Date: Tue Apr 4 13:18:49 2006 +0000 - - 2006-04-04 Zoltan Varga - - * Makefile.am (SUBDIRS): Avoid compiling subdirs needed by the - interpreter. - - svn path=/trunk/mono/; revision=59009 - -commit 0d566f3cb37ddf731fba6cfce9741e2224a13d77 -Author: Neale Ferguson -Date: Mon Mar 13 22:03:39 2006 +0000 - - * s390x-codegen.h: Fix immediate checks. - - svn path=/trunk/mono/; revision=57914 - -commit 15bc8b574c91bfaa40cd1d83374d0179148b5894 -Author: Neale Ferguson -Date: Fri Jan 6 18:52:21 2006 +0000 - - * s390x-codegen.h: Add lpdbr instruction (OP_ABS). - - * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 - operations. Provide initial support for OP_ABS. - - svn path=/trunk/mono/; revision=55158 - -commit 1092c74e7a468b7761df92c2dc0dd2f2b49f21e6 -Author: Neale Ferguson -Date: Tue Jan 3 19:40:34 2006 +0000 - - * mono/io-layer/ChangeLog, mono/io-layer/atomic.h, mono/mini/mini-s390x.c, - mono/mini/mini-s390x.h, mono/mini/exceptions-s390x.c, - mono/mini/ChangeLog, mono/mini/s390-abi.cs, mono/mini/tramp-s390x.c, - mono/mini/inssel-s390x.brg, mono/mini/cpu-s390x.md, mono/mini/mini-codegen.c - mono/mini/basic-long.cs, mono/mini/Makefile.am, mono/arch/s390x/ChangeLog - mono/arch/s390x/s390x-codegen.h: 64-bit s390 support - - svn path=/trunk/mono/; revision=55020 - -commit 417b7fbe8f810e8fd62b2cb805164a3b80a536d6 -Author: Zoltan Varga -Date: Thu Dec 22 20:18:18 2005 +0000 - - 2005-12-22 Zoltan Varga - - * sparc/sparc-codegen.h (sparc_membar): Add membar instruction. - - svn path=/trunk/mono/; revision=54750 - -commit 259b4749eaf68bfd6818ab38df91e37239c5dd45 -Author: Neale Ferguson -Date: Tue Dec 13 19:12:20 2005 +0000 - - Continuing to bring s390 up to current levels - - svn path=/trunk/mono/; revision=54312 - -commit f5fc186c01c764705e303b3783bf06e507e54640 -Author: Paolo Molaro -Date: Tue Dec 13 13:57:51 2005 +0000 - - Avoid lvalue pointer casts. - - svn path=/trunk/mono/; revision=54279 - -commit ab97bc8d9e311f447d9f4a78e5a28ef6ff9b82ad -Author: Zoltan Varga -Date: Sun Oct 30 18:06:59 2005 +0000 - - 2005-10-30 Zoltan Varga - - * ia64/ia64-codegen.h (ia64_m17): Fix a warning. - - svn path=/trunk/mono/; revision=52399 - -commit bb6893fc1e1854a8c9f848dfbfbc2dd00bde8735 -Author: Zoltan Varga -Date: Sun Oct 16 15:21:39 2005 +0000 - - 2005-10-16 Zoltan Varga - - * amd64/amd64-codegen.h (AMD64_CALLEE_SAVED_REGS): Add %rbp. - - svn path=/trunk/mono/; revision=51764 - -commit 0b2d13a625bfd03f8d24538ef48870daed540ee3 -Author: Miguel de Icaza -Date: Fri Oct 7 21:25:31 2005 +0000 - - Patch incorporated from SUSE, Neale reviewed it - - svn path=/trunk/mono/; revision=51443 - -commit 2bba48015b516fd326cd082eb85325aa5b7676bf -Author: Miguel de Icaza -Date: Fri Oct 7 20:36:01 2005 +0000 - - Patch incorporated from SUSE, Neale reviewed it - - svn path=/trunk/mono/; revision=51434 - -commit 749c9989f64683d8363481304647924ec1d910af -Author: Paolo Molaro -Date: Tue Sep 27 13:25:16 2005 +0000 - - Another compilation fix. - - svn path=/trunk/mono/; revision=50857 - -commit 64dbeb6e048aa9654800624a74e9c58065cf01ea -Author: Raja R Harinath -Date: Tue Sep 27 09:09:41 2005 +0000 - - * arm/dpiops.sh, arm/fpaops.h: Output to stdout. - * arm/Makefile.am (arm_dpimacros.h, arm_fpamacros.h): Update. Fix - for srcdir != builddir. - - svn path=/trunk/mono/; revision=50833 - -commit 7c363c19299d3f85ee7de0eec2a83108ea98eff2 -Author: Paolo Molaro -Date: Mon Sep 26 08:58:47 2005 +0000 - - Compilation fix. - - svn path=/trunk/mono/; revision=50748 - -commit 541c387c65579ca75abe8cdb9d0725c1e6d90df1 -Author: Zoltan Varga -Date: Sun Sep 11 16:55:41 2005 +0000 - - 2005-09-11 Zoltan Varga - - * ia64/ia64-codegen.h (ia64_unw_pop_frames): New unwind macro. - - svn path=/trunk/mono/; revision=49910 - -commit efbd8e41cf3337d59812a7cca48df3caee116b07 -Author: Zoltan Varga -Date: Sat Sep 10 20:50:37 2005 +0000 - - 2005-09-10 Zoltan Varga - - * ia64/ia64-codegen.h: Remove 'manual' emitting of instructions. - Integrate emission of unwind directives into the assembly macros. - - svn path=/trunk/mono/; revision=49875 - -commit 8b07d9836f60fee4ff83a14ce110921be8ef8f2e -Author: Zoltan Varga -Date: Sat Sep 3 22:06:10 2005 +0000 - - 2005-09-04 Zoltan Varga - - * ia64/ia64-codegen.h (ia64_no_stop): New macro. - - svn path=/trunk/mono/; revision=49399 - -commit 4e89407a4a8dc38125a804df930515a31603cdca -Author: Zoltan Varga -Date: Sat Aug 27 14:33:09 2005 +0000 - - 2005-08-27 Zoltan Varga - - * ia64/ia64-codegen.h: Fix some bugs. - - * ia64/codegen.c: Update to work with latest ia64-codegen.h - - svn path=/trunk/mono/; revision=48969 - -commit 9a52b3ea85b1899c6cc23263eec6879841b3fd08 -Author: Zoltan Varga -Date: Fri Aug 26 13:34:24 2005 +0000 - - 2005-08-26 Zoltan Varga - - * ia64/Makefile.am: Distribute ia64-codegen.h. - - svn path=/trunk/mono/; revision=48891 - -commit 16291812e22e9750bf101e297fc573ce35bab382 -Author: Wade Berrier -Date: Fri Aug 26 06:58:33 2005 +0000 - - Oops - - svn path=/trunk/mono/; revision=48874 - -commit d4b1ea47e0395555276e1a6c8ddfa3800692b6ea -Author: Wade Berrier -Date: Fri Aug 26 06:48:41 2005 +0000 - - Include files for 'make dist' - - svn path=/trunk/mono/; revision=48871 - -commit cac0da0afb2a782de1db55a000a2125531e757fd -Author: Zoltan Varga -Date: Sat Aug 20 22:16:11 2005 +0000 - - 2005-08-21 Zoltan Varga - - * ia64/ia64-codegen.h: Improve ins scheduling and fix some bugs. - - svn path=/trunk/mono/; revision=48614 - -commit d151f0e0b203a78ca99cab91d9df89ffe7728880 -Author: Zoltan Varga -Date: Wed Aug 17 20:28:30 2005 +0000 - - 2005-08-17 Zoltan Varga - - * ia64/ia64-codegen.h: Add dependency information for all instructions. - - svn path=/trunk/mono/; revision=48476 - -commit f1bce593b3504a82fc344d696eeedd91c39bcfee -Author: Paolo Molaro -Date: Thu Aug 4 18:51:34 2005 +0000 - - Uncommitted fixes. - - svn path=/trunk/mono/; revision=48015 - -commit 8348805e278d70da207455a0fe5cd470b00f3d8d -Author: Zoltan Varga -Date: Sat Jul 30 15:43:43 2005 +0000 - - 2005-07-30 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=47855 - -commit 0fb75c64cb1361cc81a4e47ca556a597b440d65a -Author: Paolo Molaro -Date: Wed Jul 20 16:55:20 2005 +0000 - - Wed Jul 20 18:01:54 BST 2005 Paolo Molaro - - * arm/*: more codegen macros. - - - svn path=/trunk/mono/; revision=47473 - -commit 2205bab6932e69490e48b9e11957041e938020ee -Author: Zoltan Varga -Date: Mon Jul 18 20:33:37 2005 +0000 - - 2005-07-18 Zoltan Varga - - * ia64/ia64-codegen.h (ia64_is_adds_imm): Ongoing IA64 work. - - svn path=/trunk/mono/; revision=47395 - -commit 5a9a7537801ad68c0f8552e7e107994b793e93ac -Author: Zoltan Varga -Date: Wed Jun 22 22:00:43 2005 +0000 - - 2005-06-23 Zoltan Varga - - * ia64/ia64-codegen.h: Add some new pseudo ops. - - svn path=/trunk/mono/; revision=46401 - -commit f51b94e34b1a887304ace96af27d51b4ec98ab4b -Author: Zoltan Varga -Date: Sun Jun 19 20:18:07 2005 +0000 - - 2005-06-19 Zoltan Varga - - * ia64/ia64-codegen.h: Fix encoding of ia64_fclass. - - svn path=/trunk/mono/; revision=46224 - -commit 398224a9101808c8ca470b24366a506eeefec135 -Author: Zoltan Varga -Date: Sun Jun 12 20:41:05 2005 +0000 - - 2005-06-12 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45834 - -commit 5a9f032072053d76af233b9906614ee491d6295c -Author: Zoltan Varga -Date: Thu Jun 9 20:22:08 2005 +0000 - - 2005-06-09 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45719 - -commit 5f3ca7841b8aedd35f0c23781f2ac96f31ed501e -Author: Zoltan Varga -Date: Mon May 30 14:09:48 2005 +0000 - - 2005-05-30 Zoltan Varga - - * ia64/codegen.c: Fix it after latest changes. - - svn path=/trunk/mono/; revision=45192 - -commit d6844049f8659741b3afe9fa66136738107d28ac -Author: Zoltan Varga -Date: Sun May 29 14:24:56 2005 +0000 - - 2005-05-29 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45159 - -commit 4be6ea9e269927e9fbf06b0b73f53fef311f569f -Author: Zoltan Varga -Date: Sun May 29 11:16:27 2005 +0000 - - 2005-05-29 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45157 - -commit 7b483f1f48c7abc9d0c17a1fb34b30ddaa7058bb -Author: Zoltan Varga -Date: Sat May 28 18:02:41 2005 +0000 - - 2005-05-28 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45147 - -commit e360150e81b841b0644b5adc604f22f4b71e3987 -Author: Zoltan Varga -Date: Sat May 28 17:08:04 2005 +0000 - - 2005-05-28 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45145 - -commit a781c3a65727b60386604adc6023f3f5a53b3e3e -Author: Zoltan Varga -Date: Fri May 27 21:41:59 2005 +0000 - - 2005-05-28 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45127 - -commit 20c2fc7ba73ffaf5506ab9bf487c3f519de5067f -Author: Zoltan Varga -Date: Thu May 26 17:16:50 2005 +0000 - - 2005-05-26 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=45064 - -commit f37723d307325b539fc515774d3988e0c7ff7a14 -Author: Zoltan Varga -Date: Sun May 22 18:25:06 2005 +0000 - - 2005-05-22 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=44892 - -commit 1d1c3f56953c0cb26c2e695b468ea1da368aaef0 -Author: Zoltan Varga -Date: Sun May 22 13:31:28 2005 +0000 - - 2005-05-22 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=44888 - -commit e32454dae1a3679056fb4ac86ffc81defc3a5eb7 -Author: Zoltan Varga -Date: Sun May 22 01:29:00 2005 +0000 - - 2005-05-22 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=44883 - -commit fee3f0247077513ba3254ddb410687a11c667b8c -Author: Zoltan Varga -Date: Fri May 20 21:55:37 2005 +0000 - - 2005-05-21 Zoltan Varga - - * ia64/ia64-codegen.h: Ongoing IA64 work. - - svn path=/trunk/mono/; revision=44855 - -commit 1d94e7499dc18c3882f4aa16e977ceeaacddd466 -Author: Zoltan Varga -Date: Wed May 18 23:02:39 2005 +0000 - - 2005-05-19 Zoltan Varga - - * ia64/ia64-codegen.h ia64/codegen.c: Ongoing ia64 work. - - svn path=/trunk/mono/; revision=44722 - -commit 3f053b86a49d8c41d47ca2ff771bda64ee5a5ddc -Author: Zoltan Varga -Date: Wed May 18 18:55:54 2005 +0000 - - 2005-05-18 Zoltan Varga - - * ia64/ia64-codegen.h (ia64_codegen_init): Rename macro parameter. - - svn path=/trunk/mono/; revision=44705 - -commit 061e9ab4d483c98d6747caad5160bd30fbbf09ab -Author: Zoltan Varga -Date: Sat May 14 19:52:56 2005 +0000 - - 2005-05-14 Zoltan Varga - - * Makefile.am: Only compile libmonoarch if the interpreter is compiled. - - svn path=/trunk/mono/; revision=44526 - -commit 82a68f6e85fbc7aaa7832584b2f51953871f1390 -Author: Zoltan Varga -Date: Sat May 14 17:35:42 2005 +0000 - - 2005-05-14 Zoltan Varga - - * ia64/ia64-codegen.h: Add IA64 code generation macros. - - * Makefile.am: Add ia64 subdir. - - svn path=/trunk/mono/; revision=44523 - -commit 800d43a2433ffc57d904687fdd2b746d5277cab5 -Author: Zoltan Varga -Date: Thu May 5 12:13:33 2005 +0000 - - 2005-05-05 Zoltan Varga - - * alpha/tramp.c: Applied patch from Jakub Bogusz . - - svn path=/trunk/mono/; revision=44078 - -commit 293459dd29bdd85542f499e0530c9504ced01604 -Author: Zoltan Varga -Date: Mon Mar 28 21:09:11 2005 +0000 - - 2005-03-28 Zoltan Varga - - * amd64/amd64-codegen.h: Avoid emitting a rex in some places. - - svn path=/trunk/mono/; revision=42316 - -commit 140d5636edd892a388da877b7035f1809590e7ff -Author: Zoltan Varga -Date: Tue Mar 15 19:47:29 2005 +0000 - - 2005-03-15 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_emit_rex): Emit a rex when accessing the - byte registers. - - svn path=/trunk/mono/; revision=41848 - -commit 242ec30220c85e3f69a1dd1d50469771c4ba7047 -Author: Zoltan Varga -Date: Tue Mar 15 17:08:39 2005 +0000 - - 2005-03-15 Zoltan Varga - - * amd64/amd64-codegen.h (AMD64_BYTE_REGS): Add AMD64_BYTE_REGS macro. - - svn path=/trunk/mono/; revision=41842 - -commit f7074904827b639bb500dcb92c481ec9f35a88a0 -Author: Zoltan Varga -Date: Mon Mar 14 15:17:54 2005 +0000 - - 2005-03-14 Zoltan Varga - - * amd64/amd64-codegen.h: Add missing AMD64_XMM7. - - svn path=/trunk/mono/; revision=41795 - -commit d23ce2f6ba82d598af825e20b95cf7938ff5bc39 -Author: Zoltan Varga -Date: Sun Mar 13 16:57:42 2005 +0000 - - 2005-03-13 Zoltan Varga - - * amd64/amd64-codegen.h: Remove some unneccesary REXes. - - svn path=/trunk/mono/; revision=41765 - -commit ad5014de38c4bde6ef12a04bbbcdf0303ac8acc1 -Author: Zoltan Varga -Date: Tue Mar 8 11:11:38 2005 +0000 - - 2005-03-08 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_sse_cvtsi2sd_reg_reg_size): Add _size - variants to some sse2 macros. - - svn path=/trunk/mono/; revision=41557 - -commit ee4c2805588b6d8291ac4349a520ca9c99050b59 -Author: Zoltan Varga -Date: Tue Mar 8 09:28:19 2005 +0000 - - 2005-03-08 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_sse_cvtsd2si_reg_reg): Make this convert - to a 64 bit value. - - svn path=/trunk/mono/; revision=41554 - -commit 3c4a8677815d2ad4e0b47b809ca16b43f33e3f96 -Author: Zoltan Varga -Date: Sun Mar 6 21:25:22 2005 +0000 - - 2005-03-06 Zoltan Varga - - * amd64/amd64-codegen.h: Add some SSE2 instructions. - - svn path=/trunk/mono/; revision=41491 - -commit b175669d7abc2f7e83940305cf2cb1f7663569b0 -Author: Zoltan Varga -Date: Sun Feb 20 18:48:25 2005 +0000 - - 2005-02-20 Zoltan Varga - - * amd64/amd64-codegen.h: Add xadd instructions. - - svn path=/trunk/mono/; revision=40956 - -commit c7a5bc7b7055832a36dc63ba67ad7add33a95d06 -Author: Zoltan Varga -Date: Sun Feb 20 14:16:51 2005 +0000 - - 2005-02-20 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_jump_code_size): Do not emit a rex. - - svn path=/trunk/mono/; revision=40934 - -commit 2cf88a5c39f13e54cc5e5f95ab6021924077c1d8 -Author: Ben Maurer -Date: Wed Feb 16 04:43:00 2005 +0000 - - remove .cvsignore, as this is not used anymore - - svn path=/trunk/mono/; revision=40731 - -commit 0c1ce771e696eabde58e35deb64c0b578be7a92d -Author: Neale Ferguson -Date: Mon Jan 10 21:13:14 2005 +0000 - - - Fix atomic ops on s390 - - Implement OP_ATOMIC_xxx operations on s390 - - Standardize exception handling on s390 with other platforms - - Enable out of line bblock support - - Check vtable slot belongs to domain when building trampoline - - svn path=/trunk/mono/; revision=38647 - -commit 9f3d964963eac63f42db702fe80cbfa89e3a73b4 -Author: Raja R Harinath -Date: Mon Dec 13 06:05:53 2004 +0000 - - remove svn:executable from *.cs *.c *.h - - svn path=/trunk/mono/; revision=37682 - -commit c7b8d172d479d75da8d183f9491e4651bbc5b4f7 -Author: Neale Ferguson -Date: Tue Dec 7 04:18:03 2004 +0000 - - Fix atomic operations and add initial support for tls support. - - svn path=/trunk/mono/; revision=37284 - -commit c523c66bf11c9c05df3d77d42f8be9821ad558e5 -Author: Zoltan Varga -Date: Thu Nov 25 13:32:53 2004 +0000 - - 2004-11-25 Zoltan Varga - - * amd64/amd64-codegen.h: Updates to support the PIC changes. - - svn path=/trunk/mono/; revision=36549 - -commit da4b0970bffc8f281679bddf7371679910d0a23c -Author: Paolo Molaro -Date: Fri Nov 19 15:04:41 2004 +0000 - - Fri Nov 19 17:29:22 CET 2004 Paolo Molaro - - * ppc/ppc-codegen.h: counter reg decrement branch values - (patch by Geoff Norton ). - - - svn path=/trunk/mono/; revision=36320 - -commit 3e56873e56ee01f0195683a20bd44e0fd03db4ee -Author: Patrik Torstensson -Date: Thu Nov 18 18:44:57 2004 +0000 - - 2004-11-16 Patrik Torstensson - - * x86/x86-codegen.h: added opcodes for xadd instructions - - - svn path=/trunk/mono/; revision=36283 - -commit 59c3726af38156a306a67c2dd6e755e8bdd0d89a -Author: Neale Ferguson -Date: Wed Nov 17 03:05:28 2004 +0000 - - Add support for siginfo_t as a parameter to mono_arch_is_int_overflow. Support this - routine in s390. - - svn path=/trunk/mono/; revision=36188 - -commit 149905478e1af4189a0cd9cf3f0e294dbb2bccbc -Author: Zoltan Varga -Date: Mon Nov 15 19:00:05 2004 +0000 - - 2004-11-15 Zoltan Varga - - * amd64/x86-64-codegen.h: Get rid of this. - - svn path=/trunk/mono/; revision=36145 - -commit b982bf7e3e3e98afa37544b4a197d406f00b5e5a -Author: Ben Maurer -Date: Mon Nov 8 03:19:16 2004 +0000 - - fix - - svn path=/trunk/mono/; revision=35803 - -commit 4c5436f259d4a109ab352f2ec7b7891cdce76cc9 -Author: Ben Maurer -Date: Mon Sep 6 15:07:37 2004 +0000 - - fix warning - - svn path=/trunk/mono/; revision=33415 - -commit 3a8f0a20bd939db788d3fd871b4c0ca37a4d0f96 -Author: Ben Maurer -Date: Wed Sep 1 01:04:04 2004 +0000 - - Support short forms of push imm - - svn path=/trunk/mono/; revision=33128 - -commit e11c33f0ae258eb62dd5fc2e4c6ce12952d25233 -Author: Zoltan Varga -Date: Sun Aug 29 21:04:04 2004 +0000 - - 2004-08-30 Zoltan Varga - - * amd64/amd64-codegen.h (amd64_imul_reg_membase_size): Fix REX - generation. - - svn path=/trunk/mono/; revision=33003 - -commit b0791969d5ddbcb465d86bcd42c86150f653a9a1 -Author: Zoltan Varga -Date: Sun Aug 29 11:11:38 2004 +0000 - - 2004-08-29 Zoltan Varga - - * amd64/amd64-codegen.h: More SSE work. - - svn path=/trunk/mono/; revision=32992 - -commit 8ca359bb4894521802e1f2044ec55a9aada4c08e -Author: Zoltan Varga -Date: Sun Aug 29 09:41:22 2004 +0000 - - 2004-08-29 Zoltan Varga - - * amd64/amd64-codegen.h: Add SSE2 instructions. - - svn path=/trunk/mono/; revision=32991 - -commit 39a59671ff853ab672d9db1c982093ee1c7cc1f8 -Author: Zoltan Varga -Date: Sat Aug 21 20:07:37 2004 +0000 - - 2004-08-21 Zoltan Varga - - * amd64/amd64-codegen.h (X86_IS_BYTE_REG): Redefine X86_IS_BYTE_REG - since under amd64, all 16 registers have a low part. - - svn path=/trunk/mono/; revision=32632 - -commit c6a18db1cda9d62eaba7e1095f34eb84e7c39a8b -Author: Zoltan Varga -Date: Mon Aug 16 12:58:06 2004 +0000 - - 2004-08-16 Zoltan Varga - - * x86/x86-codegen.h: Add macros for accessing the mod/rm byte. - - svn path=/trunk/mono/; revision=32365 - -commit 7f2d7df98341055eaf370855c499508599770dec -Author: Ben Maurer -Date: Sat Aug 14 18:28:26 2004 +0000 - - hush cvs - - svn path=/trunk/mono/; revision=32344 - -commit ee4209b85e88e6adfc07a057b41747607235805c -Author: Neale Ferguson -Date: Fri Aug 6 16:28:23 2004 +0000 - - Support the MEMCPY(base, base) rule and add initial ARGLIST support - - svn path=/trunk/mono/; revision=31985 - -commit ee8712fd77bdd445d98c511a07f29b5136368201 -Author: Miguel de Icaza -Date: Thu Aug 5 23:28:29 2004 +0000 - - Add s390x - - svn path=/trunk/mono/; revision=31966 - -commit 17467e9a25e9a1cf71c170fd85e042a5a11a0f05 -Author: Neale Ferguson -Date: Wed Aug 4 20:43:11 2004 +0000 - - Further 64-bit S/390 updates - - svn path=/trunk/mono/; revision=31898 - -commit 4ad821169050e70979e71bbd5229557570059139 -Author: Neale Ferguson -Date: Wed Aug 4 02:54:52 2004 +0000 - - S/390 64-bit support - tailc processing fix for S/390 32-bit - - svn path=/trunk/mono/; revision=31840 - -commit 5ebecc33aca9878d2071c8766e5741cd6434d676 -Author: Neale Ferguson -Date: Fri Jul 30 23:11:29 2004 +0000 - - Add some s390 specific tests - - svn path=/trunk/mono/; revision=31690 - -commit 4e44c97a16962680e5009c97c0022e10ddbbad30 -Author: Neale Ferguson -Date: Fri Jul 30 18:23:23 2004 +0000 - - Optimize code generation macros and standardize - - svn path=/trunk/mono/; revision=31683 - -commit 57ac232b2805d02a4e2b6322ed9532313337e56c -Author: Zoltan Varga -Date: Fri Jul 30 16:01:49 2004 +0000 - - 2004-07-30 Zoltan Varga - - * amd64/amd64-codegen.h: Ongoing JIT work. - - svn path=/trunk/mono/; revision=31664 - -commit 128d13d3973f07f5afba3ac7022bd9a4e7550626 -Author: Ben Maurer -Date: Thu Jul 29 17:10:53 2004 +0000 - - 2004-07-29 Ben Maurer - - * x86/x86-codegen.h: Add opcodes for cmp BYTE PTR [eax], imm - - svn path=/trunk/mono/; revision=31622 - -commit 77b5d5d9a5c508cef6a93be733818c446b9fe12c -Author: Zoltan Varga -Date: Wed Jul 28 20:14:03 2004 +0000 - - 2004-07-28 Zoltan Varga - - * amd64/amd64-codegen.h: Ongoing JIT work. - - svn path=/trunk/mono/; revision=31586 - -commit a451b99d1a51fe3ffa7334ffbe6865f388e549c0 -Author: Zoltan Varga -Date: Sat Jul 24 18:29:32 2004 +0000 - - 2004-07-24 Zoltan Varga - - * amd64/amd64-codegen.h: Ongoing JIT work. - - svn path=/trunk/mono/; revision=31431 - -commit b58d4fba4fad9c9cd52604adf39ffe578e407b14 -Author: Zoltan Varga -Date: Fri Jul 23 20:05:59 2004 +0000 - - 2004-07-23 Zoltan Varga - - * amd64/amd64-codegen.h: Ongoing JIT work. - - svn path=/trunk/mono/; revision=31426 - -commit c7d11ced2179a38a406489b57f4a2f317fbe5da3 -Author: Zoltan Varga -Date: Fri Jul 23 16:07:08 2004 +0000 - - 2004-07-23 zovarga - - * amd64/amd64-codegen.h: Ongoing JIT work. - - svn path=/trunk/mono/; revision=31416 - -commit f69c71790b01b62dd17d4479db005c3ef68e5e38 -Author: Neale Ferguson -Date: Mon Jul 12 23:03:57 2004 +0000 - - Add mvcl instruction - - svn path=/trunk/mono/; revision=31055 - -commit c9c82671d87761dc9a06b78082402924cf8f540d -Author: Neale Ferguson -Date: Mon Jul 12 12:05:08 2004 +0000 - - Add instructions to support enhanced memory-to-memory operations. - - svn path=/trunk/mono/; revision=31039 - -commit 08a92e1c00c0a0cf3c446257b446939062605260 -Author: Zoltan Varga -Date: Wed Jun 30 15:04:48 2004 +0000 - - 2004-06-30 Zoltan Varga - - * sparc/sparc-codegen.h: Add SPARC64 support. - - svn path=/trunk/mono/; revision=30577 - -commit d1881ea0cd90053526fa30405f4aeac90e06b485 -Author: Neale Ferguson -Date: Fri Jun 18 20:03:01 2004 +0000 - - Fix broken ABI for stack parameters - - svn path=/trunk/mono/; revision=29915 - -commit 4e0bce5ca726ed3d2a33d6cfdc3b41b04fcb91f8 -Author: Paolo Molaro -Date: Thu Jun 17 16:25:19 2004 +0000 - - API cleanup fixes. - - svn path=/trunk/mono/; revision=29787 - -commit 1ac8bbc10c8f2cff9fe8aef20bee51612aa77f88 -Author: Paolo Molaro -Date: Wed Jun 16 15:24:15 2004 +0000 - - Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro - - * Makefile.am, *.c, *.h: more API cleanups. - - svn path=/trunk/mono/; revision=29691 - -commit cf789b0df2ab67298e712242ca201bd01d38c254 -Author: Paolo Molaro -Date: Fri May 21 13:04:55 2004 +0000 - - More encoding fixes. - - svn path=/trunk/mono/; revision=27820 - -commit 47892f7ea09d90ff4385b3f9c3796d5ce80ee76d -Author: Paolo Molaro -Date: Mon May 10 14:37:42 2004 +0000 - - Fix macros. - - svn path=/trunk/mono/; revision=27028 - -commit e85ff74df8db9dbeaa2f923b2d4b451fd84dcdc0 -Author: Bernie Solomon -Date: Sat May 8 01:03:26 2004 +0000 - - 2004-05-07 Bernie Solomon - - * ppc/ppc-codegen.h: remove GCC-ism in ppc_emit32 - - svn path=/trunk/mono/; revision=26957 - -commit f4dcc4e46be455a7a289a969529ba4a1cd0bc3f3 -Author: Neale Ferguson -Date: Fri May 7 19:53:40 2004 +0000 - - Bring s390 JIT up to date. - - svn path=/trunk/mono/; revision=26943 - -commit e79a83571f6126771c5e997560dd7e15c540df3f -Author: Bernie Solomon -Date: Fri Apr 30 03:47:45 2004 +0000 - - 2004-04-29 Bernie Solomon - - * ppc/tramp.c: use sizeof (stackval), fix - delegate tramp frame layout for Apple - - svn path=/trunk/mono/; revision=26383 - -commit f05e6864576c8c9e827cf6affbaff770732628d4 -Author: Paolo Molaro -Date: Thu Apr 29 18:59:24 2004 +0000 - - Fix stmw opcode with signed offsets. - - svn path=/trunk/mono/; revision=26328 - -commit 92e3edf52f04c550767f3ae59c0f7fcefb46cbf8 -Author: Urs C. Muff -Date: Wed Apr 28 03:59:07 2004 +0000 - - cleanup - - svn path=/trunk/mono/; revision=26114 - -commit ab07311f8d1aeb258795fc72c5ed216f603db092 -Author: David Waite -Date: Tue Apr 27 04:13:19 2004 +0000 - - 2004-04-26 David Waite - - * unknown.c: modify to have content for defined platforms (to - avoid ISO C warning) - - svn path=/trunk/mono/; revision=26036 - -commit 9b84c8398a2558c61613ec50d3c3546627ac1e2d -Author: Raja R Harinath -Date: Tue Apr 13 04:31:05 2004 +0000 - - ignores - - svn path=/trunk/mono/; revision=25379 - -commit 8adf42aeb550308e5a30e4308ad639fafa27e7e3 -Author: Bernie Solomon -Date: Tue Mar 30 01:44:17 2004 +0000 - - 2004-03-29 Bernie Solomon - - * hppa/hppa-codegen.h: - fix displacements in FP instrs - - svn path=/trunk/mono/; revision=24755 - -commit e82c4f6b16e7d3a7bdabe2df046b7ce17d91e716 -Author: Bernie Solomon -Date: Tue Mar 30 01:18:11 2004 +0000 - - 2004-03-29 Bernie Solomon - - * amd64/tramp.c: - * arm/tramp.c: - * hppa/tramp.c: - * ppc/tramp.c: - * s390/tramp.c: - * sparc/tramp.c: - * x86/tramp.c: - remove child from MonoInvocation as it isn't used. - - svn path=/trunk/mono/; revision=24751 - -commit 73296dcd03106668c5db4511948983bdadeaee2f -Author: Bernie Solomon -Date: Tue Mar 23 22:01:55 2004 +0000 - - 2004-03-23 Bernie Solomon - - * hppa/hppa-codegen.h: created - - * hppa/tramp.c: changed style to be more like - other platforms. - - * hppa/Makefile.am: add hppa-codegen.h - - svn path=/trunk/mono/; revision=24504 - -commit 6e46d909fa182adf4051e1a3c07bae63b93a2bc3 -Author: Zoltan Varga -Date: Tue Mar 16 19:22:52 2004 +0000 - - 2004-03-16 Zoltan Varga - - * sparc/sparc-codegen.h: Add v9 branches with prediction. - - svn path=/trunk/mono/; revision=24153 - -commit 49a337364d8413d2528fe97e68f16ef610bb3c6a -Author: Miguel de Icaza -Date: Tue Mar 16 16:20:03 2004 +0000 - - Add - - svn path=/trunk/mono/; revision=24136 - -commit ce4b3b024bba2c8bd4d874a75ef7aa23e118abf7 -Author: Miguel de Icaza -Date: Tue Mar 16 16:16:35 2004 +0000 - - Rename, since stupid cvs gets confused with the dash in x86-64 - - svn path=/trunk/mono/; revision=24134 - -commit 01dc8bdaddab8f9b1c939716c36d13a35cf2494d -Author: Miguel de Icaza -Date: Tue Mar 16 16:16:07 2004 +0000 - - Added back - - svn path=/trunk/mono/; revision=24133 - -commit a97ef493bb1e42b3afa548e47e3e14afe028b3ef -Author: Miguel de Icaza -Date: Tue Mar 16 16:03:49 2004 +0000 - - Add x86-64 - - svn path=/trunk/mono/; revision=24131 - -commit 25f79c5f1b26de4e7a413128d37731e1fcf09f14 -Author: Bernie Solomon -Date: Tue Mar 16 00:02:55 2004 +0000 - - 2004-03-15 Bernie Solomon - - * sparc/sparc-codegen.h: tweak sparc_mov_reg_reg - so Sun's dis command recognizes it. - - svn path=/trunk/mono/; revision=24084 - -commit 38dd3d4c585c7e9cc116b7dfb5e89356c4d02da2 -Author: Zoltan Varga -Date: Mon Mar 15 17:28:56 2004 +0000 - - 2004-03-15 Zoltan Varga - - * sparc/sparc-codegen.h: Add some v9 instructions. - - svn path=/trunk/mono/; revision=24050 - -commit 36d64a0bbf92ca51335ddcb87627a8194f601820 -Author: Zoltan Varga -Date: Thu Mar 11 18:23:26 2004 +0000 - - 2004-03-11 Zoltan Varga - - * sparc/sparc-codegen.h: Ongoing sparc work. - - svn path=/trunk/mono/; revision=23926 - -commit 7e46377b331225994068d848d9ff8ceaeb96d38a -Author: Duncan Mak -Date: Mon Mar 8 01:47:03 2004 +0000 - - 2004-03-07 Duncan Mak - - * Makefile.am: Removed the reference to 'x86-64'. This was the cause - of the missing Mono daily tarballs, 'make dist' wasn't working. - - We do have an 'amd64' directory, but it doesn't make it in 'make - dist'. - - svn path=/trunk/mono/; revision=23784 - -commit 94156ea640c77f37c64332acd21adf4170ecb67b -Author: Miguel de Icaza -Date: Sat Feb 28 15:53:18 2004 +0000 - - Add - - svn path=/trunk/mono/; revision=23562 - -commit c2492eb99fe2c3e148a8dc629cc283fafad7af7c -Author: Miguel de Icaza -Date: Fri Feb 27 17:03:30 2004 +0000 - - Remove amd64 - - svn path=/trunk/mono/; revision=23540 - -commit c58af24e593b96f1ccc7819ab100063aa4db3c54 -Author: Miguel de Icaza -Date: Fri Feb 27 17:03:17 2004 +0000 - - Add x86-64 directory - - svn path=/trunk/mono/; revision=23539 - -commit 7fd6186b66f081ef6c0fca7708ddf8a641a09eae -Author: Miguel de Icaza -Date: Tue Feb 24 18:01:50 2004 +0000 - - Add amd64 support patch from Zalman Stern - - svn path=/trunk/mono/; revision=23411 - -commit 5d0cafa77c2cd95cb92a2990184bac64ec287016 -Author: Zoltan Varga -Date: Thu Feb 19 14:14:37 2004 +0000 - - 2004-02-19 Zoltan Varga - - * sparc/sparc-codegen.h: Fix lots of opcodes + add new ones. - - svn path=/trunk/mono/; revision=23248 - -commit f9f3c20b070f92bcf6f85f5bd68a24c3434fe6c4 -Author: Zoltan Varga -Date: Thu Feb 19 14:13:23 2004 +0000 - - 2004-02-19 Zoltan Varga - - * sparc/tramp.c: Fix alignment of structures containing doubles. - - svn path=/trunk/mono/; revision=23247 - -commit bb16201aaa018434f551c2657d9e38f28dfe8904 -Author: Zoltan Varga -Date: Mon Feb 2 15:56:15 2004 +0000 - - 2004-02-02 Zoltan Varga - - * sparc/tramp.c: Implement all floating point argument passing conventions in - Sparc V8. Also fix structure passing in V8. - - svn path=/trunk/mono/; revision=22704 - -commit 66607f84556593e2c3aa39bba418801193b6fddf -Author: Miguel de Icaza -Date: Sun Jan 18 18:00:40 2004 +0000 - - Apply patches from Neale Ferguson for s390 support - - svn path=/trunk/mono/; revision=22226 - -commit 963e1b962894e9b434a2e80e63394bd0d34e68b8 -Author: Paolo Molaro -Date: Sat Jan 3 21:42:37 2004 +0000 - - Codegen macros for mips. - - svn path=/trunk/mono/; revision=21658 - -commit 7e4789fdfc87f75e63612fe0aca1f66d76134ba9 -Author: Paolo Molaro -Date: Wed Dec 3 16:48:07 2003 +0000 - - Typo fix. - - svn path=/trunk/mono/; revision=20745 - -commit 96651158bf48aa1c31b5f2e3ca4cbf904211b1dc -Author: Paolo Molaro -Date: Thu Nov 13 15:23:48 2003 +0000 - - Thu Nov 13 16:24:29 CET 2003 Paolo Molaro - - * ppc/ppc-codegen.h: fixed most of the incorrect macros from ct. - - svn path=/trunk/mono/; revision=19938 - -commit ebebe8e4565897dfaad69911c88f4dda134d4b84 -Author: Zoltan Varga -Date: Fri Oct 31 13:03:36 2003 +0000 - - 2003-10-31 Zoltan Varga - - * */tramp.c (mono_create_method_pointer): Rename to - mono_arch_create_method_pointer, move common code to a new function in - interp.c. - - * */tramp.c (mono_create_trampoline): Rename to - mono_arch_create_trampoline for consistency. - - svn path=/trunk/mono/; revision=19500 - -commit c41c989929efaf77826634392c8ce9c54525809d -Author: Bernie Solomon -Date: Tue Oct 14 05:17:17 2003 +0000 - - 2003-10-13 Bernie Solomon - - * x86/tramp.c: restore EDX after memcpy call - - svn path=/trunk/mono/; revision=19024 - -commit e4f9a75ed58f5ca214a685041f2a538e2f40fe1f -Author: Bernie Solomon -Date: Mon Oct 13 22:56:37 2003 +0000 - - 2003-10-13 Bernie Solomon - - * Makefile.am: add hppa subdir - - svn path=/trunk/mono/; revision=18999 - -commit fa30eb232e53c9e39eec1bd44189e8ac29ba1644 -Author: Bernie Solomon -Date: Mon Oct 13 22:48:11 2003 +0000 - - 2003-10-13 Bernie Solomon - - * hppa/tramp.c: add initial implementation - this is 64 bit only - hppa/Makefile.am hppa/.cvsignore: added - - svn path=/trunk/mono/; revision=18996 - -commit 0b0945abf1e873f6a8dfb527236d8cce2ce15574 -Author: Bernie Solomon -Date: Mon Oct 13 22:38:25 2003 +0000 - - 2003-10-13 Bernie Solomon - - * sparc/sparc-codegen.h sparc/tramp.c: add initial implementation - for V9 (64 bit), cover more 32 bit cases as well. - - svn path=/trunk/mono/; revision=18995 - -commit 6519bafeae686f3b32870a17dc1c84ae90ec95f9 -Author: Zoltan Varga -Date: Wed Sep 3 08:10:57 2003 +0000 - - 2003-09-03 Zoltan Varga - - * x86/tramp.c: Fixes from Bernie Solomon (bernard@ugsolutions.com). - - svn path=/trunk/mono/; revision=17839 - -commit 935c93eeaff3ad8ccee032ade3584a7f6ab8f4a1 -Author: Ben Maurer -Date: Mon Aug 25 13:38:19 2003 +0000 - - .cvsignore update - - svn path=/trunk/mono/; revision=17581 - -commit 0fed0582997210e2a0ac71a527dbd319a85aebcb -Author: ct -Date: Sun Aug 24 22:49:45 2003 +0000 - - completed the set of floating point ops - - svn path=/trunk/mono/; revision=17564 - -commit 3d0f6d935e3a9c180d0bbb14fc371d40e53b7872 -Author: Zoltan Varga -Date: Thu Aug 21 15:23:31 2003 +0000 - - 2003-08-21 Zoltan Varga - - * x86/tramp.c: Fixes from Bernie Solomon (bernard@ugsolutions.com). - - svn path=/trunk/mono/; revision=17470 - -commit ed628ad0776db600fab8d5e4bcd6b563f5e808fd -Author: ct -Date: Tue Aug 19 03:04:34 2003 +0000 - - added more asm macros for floating point subtraction of single/double/quad - - svn path=/trunk/mono/; revision=17394 - -commit 6260d65a087be486df039c80eba92e44eb7a220d -Author: ct -Date: Tue Aug 19 02:53:23 2003 +0000 - - added floating point instructions for adding double, single, and quad numbers - - svn path=/trunk/mono/; revision=17393 - -commit c750ad8fea95e1fc81150e516ee26fbe79ab570d -Author: Paolo Molaro -Date: Thu Aug 7 14:13:05 2003 +0000 - - Fixed imm16 range check. - - svn path=/trunk/mono/; revision=17157 - -commit ebc38557433accd79fce2e38dff0505dfded5691 -Author: Paolo Molaro -Date: Thu Jul 31 14:32:42 2003 +0000 - - Thu Jul 31 16:19:07 CEST 2003 Paolo Molaro - - * configure.in, etc.: portability fixes and support for - buidling outside the srcdir from Laurent Morichetti . - - svn path=/trunk/mono/; revision=16937 - -commit 6e851a87092161092c6e8f06f4de13fb45bc04a6 -Author: Paolo Molaro -Date: Tue Jul 1 11:12:47 2003 +0000 - - Tue Jul 1 13:03:43 CEST 2003 Paolo Molaro - - * alpha/tramp.c: update from Laramie Leavitt (lar@leavitt.us). - - svn path=/trunk/mono/; revision=15809 - -commit c439e3df5cfa7c67d976258228cb9188a218c21d -Author: Paolo Molaro -Date: Wed Jun 25 13:18:00 2003 +0000 - - FP control word enum. - - svn path=/trunk/mono/; revision=15623 - -commit 2ad34b0dc225bf0b2efeea63c2f9287a1dbad162 -Author: Paolo Molaro -Date: Mon Jun 9 18:28:54 2003 +0000 - - Small updates. - - svn path=/trunk/mono/; revision=15250 - -commit df86960d595f0284a453fe3fc67687b707148dbf -Author: Paolo Molaro -Date: Wed May 21 17:57:05 2003 +0000 - - Some fixes and more complete support. - - svn path=/trunk/mono/; revision=14769 - -commit 3af153bd53728da9da9215141b1341d60b447bd3 -Author: Dietmar Maurer -Date: Wed May 21 12:45:22 2003 +0000 - - 2003-05-21 Dietmar Maurer - - * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate - I1 to registers because there is no simply way to sign extend 8bit - quantities in caller saved registers on x86. - - * inssel-float.brg: set costs of some rules to 2 so - that monobure always select the arch. specific ones if supplied, - regardless of the order we pass the files to monoburg. - - svn path=/trunk/mono/; revision=14757 - -commit c4eeb3dfdd19546fb0712e5306d8d96a9a07580e -Author: Dietmar Maurer -Date: Tue May 20 10:44:31 2003 +0000 - - 2003-05-20 Dietmar Maurer - - * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16 - bit values to registers - - svn path=/trunk/mono/; revision=14720 - -commit 3a48ea89b161b268bb74f013cc36f6aec59e550b -Author: Malte Hildingson -Date: Thu May 1 23:42:01 2003 +0000 - - * tramp.c (mono_create_trampoline): tiny register allocation fix for reference types - - svn path=/trunk/mono/; revision=14195 - -commit 7595b109642f29ffe0cf8bb3e4411243b92a606f -Author: Malte Hildingson -Date: Sun Apr 27 16:04:54 2003 +0000 - - * tramp.c (alloc_code_buff): posix memory protection. - (mono_create_trampoline): new string marshaling + minor fixes. - (mono_create_method_pointer): delegates fix. - - svn path=/trunk/mono/; revision=14046 - -commit dfe276d1e1d116b113a639eecbc14c3661af5462 -Author: Sergey Chaban -Date: Sun Apr 27 14:50:16 2003 +0000 - - arm-WMMX.h: initial WirelessMMX support for ARM codegen; - - svn path=/trunk/mono/; revision=14044 - -commit 27eb0661916c7c65b43def99be92895c61f4d315 -Author: Sergey Chaban -Date: Sun Apr 27 14:47:57 2003 +0000 - - * ARM codegen update; - - svn path=/trunk/mono/; revision=14043 - -commit e1b54daadf68eef0608ac03bd6fe4dc374d78675 -Author: Paolo Molaro -Date: Sun Apr 27 11:40:11 2003 +0000 - - Make the debugging output off by default. - - svn path=/trunk/mono/; revision=14039 - -commit e679a120b848ea9e35e7c8a38ca3e03a386371c7 -Author: Patrik Torstensson -Date: Fri Feb 14 10:01:29 2003 +0000 - - 2003-02-14 Patrik Torstensson - - * x86-codegen.h: Added fstsw op code for getting fp flags - - svn path=/trunk/mono/; revision=11577 - -commit f468e62377dfe3079f5b2bade1f43d239842e381 -Author: Paolo Molaro -Date: Sat Feb 1 10:02:52 2003 +0000 - - Sat Feb 1 10:59:31 CET 2003 Paolo Molaro - - * alpha/*: update from Laramie. - - svn path=/trunk/mono/; revision=11090 - -commit cc3953655f65398b40e11fdcc97b1ae47bebfdc1 -Author: Paolo Molaro -Date: Mon Jan 27 11:54:14 2003 +0000 - - Mon Jan 27 12:49:10 CET 2003 Paolo Molaro - - * alpha/*: start of the port to the alpha architecture by - Laramie Leavitt (). - - svn path=/trunk/mono/; revision=10942 - -commit 898dd64bddf69974ae9a22d6aa0ce9625fc9a5a0 -Author: Paolo Molaro -Date: Tue Jan 21 16:33:33 2003 +0000 - - Tue Jan 21 17:29:53 CET 2003 Paolo Molaro - - * ppc/ppc-codegen.h: completed ppc native code generation by - Taylor Christopher P . - - svn path=/trunk/mono/; revision=10778 - -commit d2321af1b58b2fbb84c3b2cf3f6c7c7db0a787a4 -Author: Paolo Molaro -Date: Fri Jan 17 20:17:58 2003 +0000 - - Fri Jan 17 21:14:18 CET 2003 Paolo Molaro - - * ppc/tramp.c: adapted to work for MacOSX (from a patch by - John Duncan). - - svn path=/trunk/mono/; revision=10630 - -commit 6d1b716753c1cc8a2f5c26338020941aa58ce9d7 -Author: Paolo Molaro -Date: Wed Jan 15 15:21:26 2003 +0000 - - Update to the API change of a while ago. - - svn path=/trunk/mono/; revision=10545 - -commit d4f44103ed442b9a6e221b58b68550c1de4dfa2b -Author: Mark Crichton -Date: Mon Nov 11 19:13:08 2002 +0000 - - Some debugging stubs. - - svn path=/trunk/mono/; revision=8922 - -commit b669ce7ac5106466cc6d57e9163ca5d6d80611aa -Author: Paolo Molaro -Date: Thu Oct 24 19:27:13 2002 +0000 - - s390 support from Neale Ferguson . - - svn path=/trunk/mono/; revision=8521 - -commit 457b666522f839e5e94e5fdda2284255b26d79a2 -Author: Mark Crichton -Date: Mon Oct 7 03:36:50 2002 +0000 - - Fix some minor trampoline nags. Now down to 15 failed tests. Delegate code - still broken, if anyone wants to help fix it. - - svn path=/trunk/mono/; revision=8041 - -commit b6d66c3ac8ae39c47b99dd8b8a7813e6f60c47e7 -Author: Mark Crichton -Date: Thu Oct 3 15:30:05 2002 +0000 - - Changes to tramp.c. Pass more tests. - - svn path=/trunk/mono/; revision=7966 - -commit e5d299dd18e820d33cf1d74e0e2de53e163cc07b -Author: Mark Crichton -Date: Wed Sep 25 04:50:10 2002 +0000 - - Stupid off-by-one error fixed. - - The problem was that I incremented gr as if we were on a PPC box. Sparc - doesn't need such "alignment" of the registers. - - svn path=/trunk/mono/; revision=7800 - -commit a9d8f44092c7c313efae893ff64306dc92985110 -Author: Mark Crichton -Date: Wed Sep 25 01:52:30 2002 +0000 - - arch/sparc/tramp.c: Fixed once again. Now works, mostly. - io-layer/atomic.h: It's sparc on gcc/solaris, and __sparc__ on gcc/linux. - had to add an #ifdef. - - svn path=/trunk/mono/; revision=7798 - -commit 0110bf4a5a435c5d60583887e0e0f28b7993a4cf -Author: Mark Crichton -Date: Mon Sep 23 02:25:43 2002 +0000 - - Starting rewrite of trampolining for SPARC. It needed some cleanup. - - It doesn't work at all now. GO PROGRESS! - - svn path=/trunk/mono/; revision=7728 - -commit fe7d0f819c55d76f0cb7a54ba66d4368d40385bd -Author: Mark Crichton -Date: Thu Sep 19 18:30:56 2002 +0000 - - Beginning to add support for Solaris. Tested on Solaris 9. - - Shared handles are still not working, will be addressed soon. - - Trampoline code still broken, expect a rewrite. - - svn path=/trunk/mono/; revision=7622 - -commit 13eb9f4ebf45ffe17d555458cec8bbecefc71849 -Author: Radek Doulik -Date: Wed Aug 28 15:26:29 2002 +0000 - - retval value type fixed - - svn path=/trunk/mono/; revision=7127 - -commit 63315827a2ebc424954f4b8baf40497a5600ce7a -Author: Radek Doulik -Date: Wed Aug 28 14:41:08 2002 +0000 - - fixed valuetypes marshaling in delegates - - svn path=/trunk/mono/; revision=7126 - -commit 82d4a3ff22ea8e8dfb9a3ec2be10657e7e25cd97 -Author: Radek Doulik -Date: Sat Aug 24 23:54:12 2002 +0000 - - fixed struct marshaling, 108 tests pass now - - svn path=/trunk/mono/; revision=7013 - -commit b94511c33193dc728e039fa776bf3b9d5dad4e5b -Author: Radek Doulik -Date: Wed Aug 21 17:47:34 2002 +0000 - - fixed delegates - - svn path=/trunk/mono/; revision=6862 - -commit fafa1892b8b0315cab29de09f09f2aa5041b61a7 -Author: Mark Crichton -Date: Tue Aug 20 15:03:07 2002 +0000 - - This nearly completes SPARC trampoline support for mint/mono. The delegate - code still needs some work. - - There are bugs. Send crash reports, as well as .cs code and exe's to - crichton@gimp.org - - Also, if anyone gets Bus Errors in the code, let me know as well, I've been - hunting down alignment bugs as well. - - svn path=/trunk/mono/; revision=6812 - -commit f8f8b65c484f48436941e4985cfb4b837cff4ceb -Author: Paolo Molaro -Date: Mon Aug 5 17:28:10 2002 +0000 - - Mon Aug 5 19:21:19 CEST 2002 Paolo Molaro - - * x86/tramp.c: fix random memory read in mono_create_method_pointer. - - svn path=/trunk/mono/; revision=6436 - -commit dc11862f43a6240bcc35d2ef96fb04750c4bf930 -Author: Sergey Chaban -Date: Mon Aug 5 16:43:06 2002 +0000 - - x86-codegen.h: fixed bug in x86_memindex_emit, for basereg == EBP && disp == imm32; - - svn path=/trunk/mono/; revision=6433 - -commit 60179dd8c27bf3c080ca2c7db818c01a51c9d4b1 -Author: Dietmar Maurer -Date: Mon Aug 5 09:53:43 2002 +0000 - - 2002-08-05 Dietmar Maurer - - * x86/tramp.c (mono_create_trampoline): fixed stack_size bug - - svn path=/trunk/mono/; revision=6408 - -commit e13f4a98c6fe61ec768b0da9d8832814a313ed78 -Author: Radek Doulik -Date: Fri Aug 2 18:34:20 2002 +0000 - - more WIP - - svn path=/trunk/mono/; revision=6363 - -commit f73afba7e99de872e4e9d9dcf3c7c483632f6bc6 -Author: Radek Doulik -Date: Fri Aug 2 18:13:59 2002 +0000 - - more surgery - - svn path=/trunk/mono/; revision=6360 - -commit 347f6a854167fa5a26484b83736de86f5ffd8ea0 -Author: Radek Doulik -Date: Fri Aug 2 17:55:44 2002 +0000 - - did quick surgery to update for Dietmar's new code - - svn path=/trunk/mono/; revision=6359 - -commit cc4396df6db395836340d26ad2f2d920f946729f -Author: Dietmar Maurer -Date: Fri Aug 2 07:13:54 2002 +0000 - - 2002-08-02 Dietmar Maurer - - * marshal.c (mono_delegate_to_ftnptr): pass delegate->target - instead of the delegate itself as this pointer (bug #28383) - - svn path=/trunk/mono/; revision=6348 - -commit fbb833e1937ec3e3183bd1219e0f2391faa62718 -Author: Dietmar Maurer -Date: Thu Aug 1 14:17:18 2002 +0000 - - 2002-08-01 Dietmar Maurer - - * x86/tramp.c (mono_create_trampoline): also push the value type pointer for - methods returning value types. - (mono_create_method_pointer): support valuetype returns. - - * interp.c (ves_pinvoke_method): do not call stackval_from_data if the result - is a value type. - - svn path=/trunk/mono/; revision=6311 - -commit 27a4251f2a6fd091ddc8084ad14a8808c136431d -Author: Dietmar Maurer -Date: Thu Aug 1 06:40:11 2002 +0000 - - 2002-08-01 Dietmar Maurer - - * interp.c (stackval_from_data): add pinvoke argument - (stackval_to_data): add pinvoke argument. We need consider the - fact that unmanages structures may have different sizes. - - * x86/tramp.c (mono_create_method_pointer): allocate space for - value types. - - svn path=/trunk/mono/; revision=6308 - -commit 1be0ee94a17d2a4b7edb513d845d88ba5fed8285 -Author: Dietmar Maurer -Date: Wed Jul 31 11:53:19 2002 +0000 - - 2002-07-31 Dietmar Maurer - - * x86/tramp.c: (mono_create_method_pointer): return method->addr for pinvoke methods - - * interp.c (ves_exec_method): bug fix - directly jump to handle_exception. - - svn path=/trunk/mono/; revision=6280 - -commit 87f9fd554284e9d2037c8757a4211cf710a85ac0 -Author: Dietmar Maurer -Date: Wed Jul 31 11:00:53 2002 +0000 - - 2002-07-31 Dietmar Maurer - - * interp.c: use the new marshaling code. better delegate/remoting - support. - - * debug-helpers.c (mono_method_full_name): only print a number to - indicate wrapper type (so that the output is more readable in traces). - - * x86/tramp.c: remove code to handle PInvoke because this is no - longer needed. - - svn path=/trunk/mono/; revision=6278 - -commit ebf4ad275e84a3887798ac765bdc1f0ed457cd5a -Author: Paolo Molaro -Date: Fri Jul 19 12:21:01 2002 +0000 - - Fri Jul 19 14:18:36 CEST 2002 Paolo Molaro - - * x86/tramp.c: fix float loads. Simple delegate marshaling fix. - - svn path=/trunk/mono/; revision=5909 - -commit 2b677a332d7e811ca9cc75d271d069787f0495c1 -Author: Radek Doulik -Date: Mon Jul 8 16:13:36 2002 +0000 - - 2002-07-08 Radek Doulik - - * ppc/tramp.c: marshaling for SZARRAY - - svn path=/trunk/mono/; revision=5650 - -commit ef9afb744f4679c465be380b4285928fff50db5e -Author: Radek Doulik -Date: Sat Jul 6 01:41:14 2002 +0000 - - 2002-07-05 Radek Doulik - - * ppc/tramp.c: removed magic hack - - svn path=/trunk/mono/; revision=5614 - -commit 02476784232f22f91e347750c3fb8018d770d057 -Author: Paolo Molaro -Date: Tue Jun 18 04:38:23 2002 +0000 - - Tue Jun 18 10:21:56 CEST 2002 Paolo Molaro - - * x86/tramp.c: marshal simple arrays correctly. - - svn path=/trunk/mono/; revision=5316 - -commit 5ff6eebba3bc5e1662b84a34a276d6842e41ab87 -Author: Paolo Molaro -Date: Sat Jun 1 08:08:34 2002 +0000 - - Kill warning. - - svn path=/trunk/mono/; revision=5075 - -commit 0c268fdddc804751bba57401c02b139368f7a01c -Author: Paolo Molaro -Date: Fri May 31 10:55:37 2002 +0000 - - Compilation fixes. - - svn path=/trunk/mono/; revision=5054 - -commit 9fe623bf5c85da9328f895680d8688987a94427e -Author: Dietmar Maurer -Date: Thu May 30 11:04:53 2002 +0000 - - 2002-05-30 Dietmar Maurer - - * x86.brg (reg): bug fix in LOCALLOC - - * mono.c (main): new switch --nointrinsic to disable memcpy opt. - - * x86.brg: added block copy/init optimizations from - Serge (serge@wildwestsoftware.com) - - svn path=/trunk/mono/; revision=5025 - -commit 1b8d1ed7ce3e489dcf53cc2369a3d6d482d5901d -Author: Dietmar Maurer -Date: Tue May 28 12:23:00 2002 +0000 - - 2002-05-28 Dietmar Maurer - - * x86.brg: impl. CKFINITE - - svn path=/trunk/mono/; revision=4988 - -commit b0826d366f4f32c6ef772c0a9deef5a9b4157f0b -Author: Miguel de Icaza -Date: Mon May 27 22:56:15 2002 +0000 - - Updated copyright headers to the standard template - - svn path=/trunk/mono/; revision=4975 - -commit 027755140cf39776018e520f7cd838e319fb9a34 -Author: Dietmar Maurer -Date: Thu May 23 07:44:00 2002 +0000 - - 2002-05-23 Dietmar Maurer - - * delegate.c: move the thread pool to metadata/threadpool.c, code - cleanup. - - * threadpool.[ch]: impl. a threadpool that can - be used by mint and mono. - - svn path=/trunk/mono/; revision=4875 - -commit be70e94a20c2c1864f829122085bce03f24cc4e8 -Author: Radek Doulik -Date: Wed May 15 14:19:24 2002 +0000 - - fixed delegates return values - - svn path=/trunk/mono/; revision=4662 - -commit 89d436d12d5746d04d9f27d9897853f846d0500e -Author: Radek Doulik -Date: Mon May 13 19:00:42 2002 +0000 - - 2002-05-13 Radek Doulik - - * ppc/tramp.c (emit_save_parameters): fix I8 parameters - - svn path=/trunk/mono/; revision=4601 - -commit 8e8d0cf9ac1f4aa46da775bed8da214581345ddb -Author: Radek Doulik -Date: Mon May 13 17:24:04 2002 +0000 - - introduced DEBUG, disabled by default - - svn path=/trunk/mono/; revision=4599 - -commit 8d20a830d50aaf3f30869283332d654472f16890 -Author: Sergey Chaban -Date: Fri May 10 19:25:15 2002 +0000 - - * x86-codegen.h: renamed FP int macro for consistency (its arg is really a membase, not mem); - - svn path=/trunk/mono/; revision=4500 - -commit 9fb095d7866ee9963f11e3bd2dcc9b9930320ddc -Author: Radek Doulik -Date: Fri May 10 13:39:09 2002 +0000 - - updated for new strings - - svn path=/trunk/mono/; revision=4484 - -commit 5d0a1992c7fe0252457f6644198654d06ee7a19f -Author: Paolo Molaro -Date: Fri May 10 07:24:08 2002 +0000 - - Fix checks in x86_patch(). - - svn path=/trunk/mono/; revision=4473 - -commit 512203d918c6998f9652d23301b553c2bb205788 -Author: Sergey Chaban -Date: Mon May 6 16:39:01 2002 +0000 - - Logged changes to x86-codegen.h - - svn path=/trunk/mono/; revision=4344 - -commit 9d1e2b5076d08bd02eb28ad8b3f2a27a42449250 -Author: Sergey Chaban -Date: Mon May 6 16:33:54 2002 +0000 - - * x86-codegen.h: added missing shifts; - 8-bit ALU operations; - FPU ops with integer operand; - FIST (without pop); - - svn path=/trunk/mono/; revision=4343 - -commit 944736b70eb0689f094fe05c7184d36f7b7421bf -Author: Paolo Molaro -Date: Fri May 3 12:52:19 2002 +0000 - - Added some missing FP opcodes and made x86_patch() handle also the call opcode. - - svn path=/trunk/mono/; revision=4252 - -commit d8cf0bf0270efb923d7c6e80c4e5d547d1161740 -Author: Paolo Molaro -Date: Mon Apr 29 12:14:39 2002 +0000 - - Removed mono_string_new_wrapper(). - - svn path=/trunk/mono/; revision=4151 - -commit cc03dca33b721c5b46cba47ff7a7bb80b820be6d -Author: Paolo Molaro -Date: Mon Apr 22 07:32:11 2002 +0000 - - Mon Apr 22 12:57:31 CEST 2002 Paolo Molaro - - * x86/x86-codegen.h: added loop instructions and made x86_patch fully - useful. - - svn path=/trunk/mono/; revision=3950 - -commit ab877e78de2c3ac01664dc13c13c2f231fca4c11 -Author: Dietmar Maurer -Date: Sat Apr 20 14:32:46 2002 +0000 - - 2002-04-20 Dietmar Maurer - - * interp.c (ves_exec_method): support internalcall String constructors - - svn path=/trunk/mono/; revision=3925 - -commit d4ccb473cf835fd07294b7da6a6d4da9e2022dcd -Author: Paolo Molaro -Date: Wed Apr 10 12:34:16 2002 +0000 - - Forgot to commit. - - svn path=/trunk/mono/; revision=3740 - -commit 9116ce23467ea863a99b860849d867802c32187a -Author: Paolo Molaro -Date: Sat Apr 6 10:40:58 2002 +0000 - - Sat Apr 6 16:29:40 CEST 2002 Paolo Molaro - - * x86/tramp.c: fix advancement od argument position on the stack. - - svn path=/trunk/mono/; revision=3652 - -commit bf0fa05ecc5f3537597c10704414544c50d3a0ed -Author: Paolo Molaro -Date: Thu Apr 4 04:42:46 2002 +0000 - - Remove useless comments in rules. - - svn path=/trunk/mono/; revision=3595 - -commit 3f3f1e23c3cced2e37ec49361ee3236c524ed107 -Author: Dietmar Maurer -Date: Sat Mar 30 11:19:26 2002 +0000 - - fixed compiler warnings - - svn path=/trunk/mono/; revision=3514 - -commit 793cfcbae98d4847ff08aff44ffa27020260c317 -Author: Paolo Molaro -Date: Sat Mar 16 14:37:28 2002 +0000 - - Sat Mar 16 19:12:57 CET 2002 Paolo Molaro - - * x86/tramp.c: increase default allocated size for trampolines - and assert on overflow. - - svn path=/trunk/mono/; revision=3143 - -commit af361d9d30702937e3cd9412b987552f4652887a -Author: Dietmar Maurer -Date: Thu Mar 14 09:52:53 2002 +0000 - - 2002-03-14 Dietmar Maurer - - * emit-x86.c (arch_create_native_wrapper): new code to generate - wrappers for calling native functions. - - * icall.c (ves_icall_InternalInvoke): impl. - - svn path=/trunk/mono/; revision=3103 - -commit 670be867554bb6f1ed61a17649e21d0e25f66105 -Author: Paolo Molaro -Date: Mon Mar 11 11:24:33 2002 +0000 - - Mon Mar 11 16:14:29 CET 2002 Paolo Molaro - - * x86/x86-codegen.h: addex x86_clear_reg() and changed - x86_mov_reg_imm() to not check for imm == 0. - - svn path=/trunk/mono/; revision=3051 - -commit 51d24bbb570af055b885dfe9f06e7717e4bb3b98 -Author: Dietmar Maurer -Date: Thu Feb 28 09:35:29 2002 +0000 - - impl. more CONV opcodes - - svn path=/trunk/mono/; revision=2761 - -commit d0370e0ab841b63f60170f3afcae9ee49e9faade -Author: Paolo Molaro -Date: Thu Feb 28 07:43:49 2002 +0000 - - Thu Feb 28 12:34:21 CET 2002 Paolo Molaro - - * x86/tramp.c: start handling of more complex marshaling stuff. - - - Thu Feb 28 12:33:41 CET 2002 Paolo Molaro - - * marshal.c, marshal.h: start of marshaling interface. - - svn path=/trunk/mono/; revision=2759 - -commit 29f73f5799fb9274a44c918cb4f63c606f765b96 -Author: Sergey Chaban -Date: Wed Feb 27 09:12:27 2002 +0000 - - * Makefile.am: removed SCRIPT_SOURCES to fix automake issues. - - svn path=/trunk/mono/; revision=2710 - -commit a8b6a875977b2728019ea7cf2ea8dd432fe4469a -Author: Sergey Chaban -Date: Mon Feb 25 08:58:43 2002 +0000 - - * ChangeLog: ARM-related log entry. - - svn path=/trunk/mono/; revision=2628 - -commit f703ca24db3d380b37434e9f1cced6d0b45a5470 -Author: Sergey Chaban -Date: Mon Feb 25 08:56:57 2002 +0000 - - * Makefile.am: added arm to DIST_SUBDIRS. - - svn path=/trunk/mono/; revision=2627 - -commit f107fb14e6c183972bec81e5727381f44c6a5333 -Author: Radek Doulik -Date: Sun Feb 24 20:46:13 2002 +0000 - - (mono_create_method_pointer): implements delegates with parameters - and return value - - svn path=/trunk/mono/; revision=2618 - -commit 2217d1a7da2572afd033b958454b9662c42022b9 -Author: Sergey Chaban -Date: Sun Feb 24 17:44:55 2002 +0000 - - * ARM support sources, initial check-in; - - svn path=/trunk/mono/; revision=2615 - -commit 56dde5e20e11f2d9d2a3522923a5a4729bed469f -Author: Radek Doulik -Date: Sun Feb 24 01:40:17 2002 +0000 - - 2002-02-24 Radek Doulik - - * ppc/tramp.c (mono_create_method_pointer): basic delegates - implementation, it works for simple delegates now and I am already - pretty close to have it working for every delegates, but I am - going to sleep and finish it tomorrow? - - svn path=/trunk/mono/; revision=2611 - -commit 0c4f3b00c8e831077c6ba1b28065e7be81bbff61 -Author: Jeffrey Stedfast -Date: Fri Feb 22 19:43:09 2002 +0000 - - 2002-02-22 Jeffrey Stedfast - - * sparc/tramp.c (mono_create_trampoline): Much tinkering to get - the opcodes more correct. Still needs a lot of work. - - svn path=/trunk/mono/; revision=2602 - -commit 6bb3f7ead4ab8d574273f5bdacf32b29809ace80 -Author: Radek Doulik -Date: Tue Feb 19 20:57:29 2002 +0000 - - ops, fix return value passing - - svn path=/trunk/mono/; revision=2526 - -commit 725e90ef0e13752e357358ddef152a30beae174f -Author: Radek Doulik -Date: Tue Feb 19 20:50:13 2002 +0000 - - added stack saving for most arguments - - svn path=/trunk/mono/; revision=2523 - -commit 5dbc4bd3639f2d012a1103ae1b0f911768e460ab -Author: Radek Doulik -Date: Tue Feb 19 19:49:10 2002 +0000 - - 2002-02-19 Radek Doulik - - * ppc/tramp.c (emit_save_parameters): don't start saving 64bit - values to - even registers - - svn path=/trunk/mono/; revision=2519 - -commit e756cc154586ebdd6f4bba8b730fca09611874cf -Author: Paolo Molaro -Date: Tue Feb 19 15:40:57 2002 +0000 - - Tue Feb 19 20:19:38 CET 2002 Paolo Molaro - - * x86/tramp.c: avoid pointer arthmetric (pointed out by Serge). - - - Tue Feb 19 20:20:15 CET 2002 Paolo Molaro - - * dump.c: the prolog is before each arg in the custom attribute blob. - - svn path=/trunk/mono/; revision=2513 - -commit 1da21d342a98bedfc9295846080043d8946f4029 -Author: Radek Doulik -Date: Sun Feb 17 21:10:29 2002 +0000 - - la la la, ChangeLog entries - - svn path=/trunk/mono/; revision=2463 - -commit b7fa0baa6c15d3ee14a1b67dd5b56d21a931894b -Author: Radek Doulik -Date: Sun Feb 17 20:02:39 2002 +0000 - - (mono_string_new_wrapper): new helper function, cut&pasted from - x86, modified to check for NULL text to avoid branching in - generated code - (calculate_sizes): updated for string retval changes - (emit_call_and_store_retval): updated for string retval - - svn path=/trunk/mono/; revision=2461 - -commit 2cee2566ae50aa32e13864135260e16fd21bfac1 -Author: Radek Doulik -Date: Sun Feb 17 19:41:12 2002 +0000 - - 2002-02-17 Radek Doulik - - * ppc/tramp.c: fixed minimal stack size, fixed string parameters, - fix byte and half word parameters - - * ppc/ppc-codegen.h (ppc_mr): added lhz, lbz, sth - - svn path=/trunk/mono/; revision=2460 - -commit c6fd0cb7010239a29091a50aa5354e96f74bedf2 -Author: Dietmar Maurer -Date: Wed Feb 13 12:22:52 2002 +0000 - - added some docu - - svn path=/trunk/mono/; revision=2372 - -commit 6b6716c9eaa66549c9c1cf86934a54a830afc1b6 -Author: Dietmar Maurer -Date: Wed Feb 13 08:29:02 2002 +0000 - - pass the domain to mono_string_new - - svn path=/trunk/mono/; revision=2365 - -commit 0ffc7e417ee15973120c4f3a0cb0f2732c5c6633 -Author: Miguel de Icaza -Date: Mon Feb 11 22:48:46 2002 +0000 - - More - - svn path=/trunk/mono/; revision=2341 - -commit 6f7cdfa857058ee3662e1662190315c294188ae0 -Author: Paolo Molaro -Date: Mon Feb 11 13:49:06 2002 +0000 - - Mon Feb 11 18:40:04 CET 2002 Paolo Molaro - - * sparc/*: sparc codegen header and some untested trampoline code. - - svn path=/trunk/mono/; revision=2315 - -commit d7a858a6ac5bc37435a157cf41eb63818905a7ea -Author: Paolo Molaro -Date: Mon Feb 11 07:42:10 2002 +0000 - - Mon Feb 11 12:32:35 CET 2002 Paolo Molaro - - * x86/tramp.c: fix handling of multiple marshaleed strings. - * x86/x86-codegen.h: some code to patch branch displacements. - - svn path=/trunk/mono/; revision=2308 - -commit dd029fa4245c99073ae6863dcb8e1560cc1eedc0 -Author: Dietmar Maurer -Date: Fri Feb 1 12:04:34 2002 +0000 - - SHR/SHL impl. - - svn path=/trunk/mono/; revision=2224 - -commit 4a977a50d70eb75760d9555854845d32595c4093 -Author: Paolo Molaro -Date: Fri Feb 1 11:22:35 2002 +0000 - - Fri Feb 1 16:03:53 CET 2002 Paolo Molaro - - * interp.c: exception fixes. Use mono_method_pointer_get () - to easy porting to other archs. Some support for overflow detection. - - Fri Feb 1 16:03:00 CET 2002 Paolo Molaro - - * x86/tramp.c, ppc/tramp.c: implement mono_method_pointer_get (). - - - Fri Feb 1 16:13:20 CET 2002 Paolo Molaro - - * class.c: add asserts if we are ever going to scribble over memory. - * socket-io.c: not all systems have AF_IRDA defined. - - svn path=/trunk/mono/; revision=2223 - -commit 2d3dbc6213f3e12d1c7b332d80fec81384612bf8 -Author: Miguel de Icaza -Date: Thu Jan 24 01:00:53 2002 +0000 - - 2002-01-23 Miguel de Icaza - - * x86/tramp.c (mono_create_trampoline): Do not try to create a - mono_string_new if the return value from the PInvoke code is - NULL. - - 2002-01-23 Miguel de Icaza - - * genwrapper.pl: Added wrappers for the mono_glob functions. - - * glob.c: New file, with globing functions used by the Directory - code. - - svn path=/trunk/mono/; revision=2139 - -commit 5291c24b937d193ef9861c87421bab87e0fcc4da -Author: Radek Doulik -Date: Mon Jan 21 20:06:20 2002 +0000 - - ppc changes - - svn path=/trunk/mono/; revision=2090 - -commit b5472227702fc528149111f0c4406c9dadb9a9e0 -Author: Paolo Molaro -Date: Mon Jan 14 07:00:24 2002 +0000 - - Mon Jan 14 11:50:16 CET 2002 Paolo Molaro - - * x86/x86-codegen.c: added overflow condition code and some aliases - for the other ccs. - - svn path=/trunk/mono/; revision=1968 - -commit a18abcd00665e9bc660b90cf4c0bdf86456067af -Author: Paolo Molaro -Date: Thu Jan 10 16:13:26 2002 +0000 - - Thu Jan 10 19:36:27 CET 2002 Paolo Molaro - - * class.c: fix mono_class_from_mono_type () for szarray types. - Remove unused cache check in mono_class_from_type_spec(). - * icall.c: *type_from_name () functions handle simple arrays and byref. - * reflection.c: handle byref and szarray types. Handle methods without - body (gets P/Invoke compilation working). Handle types and fields in - get_token (). - * reflection.h: add rank to MonoTypeInfo. - - - Thu Jan 10 20:59:59 CET 2002 Paolo Molaro - - * interp.c, interp.h: add a flag to mono_create_trampoline () - to handle runtime methods. - - - Thu Jan 10 21:01:08 CET 2002 Paolo Molaro - - * x86/tramp.c: mono_create_trampoline (): the runtime argument is - needed to handle correctly delegates, the previous change in handling - the string return type broke them. - - svn path=/trunk/mono/; revision=1950 - -commit 66990d65e3ac907fe24cc5411591759ce60472b0 -Author: Matt Kimball -Date: Wed Jan 9 01:49:12 2002 +0000 - - Tue Jan 8 22:38:41 MST 2002 Matt Kimball - - * x86/tramp.c: handle strings returned from functions in external - libraries by converting to a Mono string object after the pinvoke'd - function returns - - svn path=/trunk/mono/; revision=1923 - -commit ba9f9e77bf38e3bb4b1a888d39c7b0aab8ae09bf -Author: Paolo Molaro -Date: Sat Jan 5 11:15:42 2002 +0000 - - Sat Jan 5 15:48:04 CET 2002 Paolo Molaro - - * icall.c: hack to make IsSubType work for TypeBuilders. - * reflection.c: emit constructors before methods. - Retrieve param names in mono_param_get_objects(). - - - Sat Jan 5 15:45:14 CET 2002 Paolo Molaro - - * interp.c: allow classname:method name in --debug argument. - Fix box opcode for valuetypes. Fix a few opcode to take a 16 bit - index instead of 32 (stloc, ldloc, starg, etc.). - - - Sat Jan 5 15:51:06 CET 2002 Paolo Molaro - - * x86/tramp.c: handle short integer return types. - - svn path=/trunk/mono/; revision=1852 - -commit 0635ffef0b38bcf88cd3320939c1d96bf8bb8c0e -Author: Miguel de Icaza -Date: Thu Jan 3 20:13:47 2002 +0000 - - Fix build for new automakes, seems to work - - svn path=/trunk/mono/; revision=1795 - -commit 054ebda213a85e3a8a1770ec5e63831e3a0f06ba -Author: Paolo Molaro -Date: Thu Dec 20 15:20:42 2001 +0000 - - Thu Dec 20 20:13:07 CET 2001 Paolo Molaro - - * x86/tramp.c: fix create_method_pointer() to pass the arguments - correctly and add check for overflow. - - svn path=/trunk/mono/; revision=1656 - -commit faaadc7132a2cdd8c13adf7fbb79d32461759493 -Author: Dietmar Maurer -Date: Mon Dec 17 06:50:02 2001 +0000 - - 2001-12-16 Dietmar Maurer - - * emit-x86.c (arch_handle_exception): new code to handle - exceptions inside unmanaged code. - - * x86.brg: impl. SAVE_LMF, RESTORE_LMF, pass implizit valuetype - address as first argument. - - * x86.brg: pass exceptions on the stack - - * jit.h (ISSTRUCT): new macro to check for real value types - (return false for enum types). - - * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before - passing them to iconv - - * file-io.c: raise exceptions if handle is invalid. - - svn path=/trunk/mono/; revision=1603 - -commit 35430229b14448182d84a7f9348995019251fb28 -Author: Paolo Molaro -Date: Thu Dec 13 11:03:21 2001 +0000 - - Thu Dec 13 15:56:53 CET 2001 Paolo Molaro - - * x86/x86-codegen.h: x86_mov_memindex_imm() added. - - svn path=/trunk/mono/; revision=1565 - -commit 813f9d5a9dcbe48c711bbb8bacc876e976ce0aea -Author: Radek Doulik -Date: Thu Nov 29 21:23:53 2001 +0000 - - 2001-11-29 Radek Doulik - - * ppc/tramp.c: use r12 which is volatile instead of non-volatile - r14 to avoid saving - - svn path=/trunk/mono/; revision=1482 - -commit 0a65eb2cf0b69f68849e7196b6e00133b3ecf3fc -Author: Radek Doulik -Date: Thu Nov 29 20:19:00 2001 +0000 - - 2001-11-29 Radek Doulik - - * Makefile.am (libmonoarch_la_LIBADD): added ppc to DIST_SUBDIRS - generate libmonoarch for ppc - - svn path=/trunk/mono/; revision=1478 - -commit c4f49a88d52479062bd8b95669cb90c1b86242d0 -Author: Radek Doulik -Date: Thu Nov 29 19:32:48 2001 +0000 - - added test - - svn path=/trunk/mono/; revision=1477 - -commit 2c1c4889b99aaf4be0b894ea24b4d92201cb282d -Author: Radek Doulik -Date: Thu Nov 29 19:32:19 2001 +0000 - - added files for initial ppc support - - svn path=/trunk/mono/; revision=1476 - -commit 719926a4c59c399767f10b9567859300a768b05a -Author: Paolo Molaro -Date: Tue Nov 27 10:30:39 2001 +0000 - - Tue Nov 27 15:24:07 CET 2001 Paolo Molaro - - * x96/x86-codegen.c: x86_lea_memindex() added. - - svn path=/trunk/mono/; revision=1447 - -commit c4a26e54cfa29ea5279d1964ef4ea7f6176c0357 -Author: Paolo Molaro -Date: Mon Nov 19 06:52:53 2001 +0000 - - Mon Nov 19 11:37:14 CET 2001 Paolo Molaro - - * class.c, class.h: add mono_install_trampoline() so that the runtime - can register a function to create a trampoline: removes the ugly - requirement that a runtime needed to export arch_create_jit_trampoline. - * object.h, object.c: added mono_install_handler() so that the runtime - can install an handler for exceptions generated in C code (with - mono_raise_exception()). Added C struct for System.Delegate. - * pedump.c: removed arch_create_jit_trampoline. - * reflection.c: some cleanups to allow registering user strings and - later getting a token for methodrefs and fieldrefs before the assembly - is built. - * row-indexes.h: updates and fixes from the new ECMA specs. - - - Mon Nov 19 11:36:22 CET 2001 Paolo Molaro - - * jit.c: use mono_install_trampoline (), instead of exporting - a function to a lower-level library. - - - Mon Nov 19 11:33:00 CET 2001 Paolo Molaro - - * interp.c: start adding support for handling exceptions across - managed/unmanaged boundaries. Cleanup Delegate method invocation. - Pass the correct target object in Delegate::Invoke and use the correct - 'this' pointer in ldvirtftn (bugs pointed out by Dietmar). - - Mon Nov 19 11:32:28 CET 2001 Paolo Molaro - - * main.c: remove arch_create_jit_trampoline(). - - svn path=/trunk/mono/; revision=1380 - -commit af643d34335bfdc90a7455f99847e954456bb07d -Author: Paolo Molaro -Date: Wed Nov 14 15:18:56 2001 +0000 - - Wed Nov 14 19:21:26 CET 2001 Paolo Molaro - - * x86/tramp.c: handle boolean as a return value. - * x96/x86-codegen.c: x86_widen_memindex() added. - - - Wed Nov 14 19:23:00 CET 2001 Paolo Molaro - - * interp.c: move the stack frame dumping code to a function so it can - be called from the debugger. Fix virtual method lookup for interfaces. - Throw exceptions instead of aborting in more places. - Print also the message in an exception. Updates for field renames in - corlib. - - - Wed Nov 14 19:26:06 CET 2001 Paolo Molaro - - * class.h, class.c: add a max_interface_id to MonoClass. - * icall.c: rename my_mono_new_object() to my_mono_new_mono_type() - since it's used to do that. Added mono_type_type_from_obj(). - Make GetType() return NULL instead of segfaulting if the type was not - found. Handle simple arrays in assQualifiedName. - * object.h: add a struct to represent an Exception. - * reflection.c: output call convention in method signature. - Add code to support P/Invoke methods and fixed offsets for fields. - - svn path=/trunk/mono/; revision=1352 - -commit 041ab742894fbd6d90e2ffb3c6fddb60a869e952 -Author: Dietmar Maurer -Date: Fri Nov 9 13:40:43 2001 +0000 - - 2001-11-09 Dietmar Maurer - - * testjit.c (mono_analyze_stack): new BOX impl. - - * x86.brg: implemented INITOBJ - - * testjit.c (mono_analyze_stack): finished array support - (mono_analyze_stack): reimplemented DUP instruction - - svn path=/trunk/mono/; revision=1308 - -commit bff8e602354a8d32dfaed336600b5f648af06e70 -Author: Miguel de Icaza -Date: Thu Nov 8 21:38:32 2001 +0000 - - 2001-11-07 Miguel de Icaza - - * x86/tramp.c: Include stdlib to kill warning. - - 2001-11-07 Miguel de Icaza - - * main.c (dis_property_methods): Added missing colon which avoided - setting loc.t - - 2001-11-07 Miguel de Icaza - - * interp.c: Include stdlib to kill warning. - (check_corlib): Adjust format encodings to remove warnings. - - 2001-11-07 Miguel de Icaza - - * reflection.c (build_compressed_metadata): Eliminates warnings - and uses 64-bit clean code. - - * metadata.c (mono_type_hash): Change signature to eliminate warnings. - (mono_type_equal): Change signature to eliminate warnings. - - 2001-11-07 Miguel de Icaza - - * monoburg.y: Include string.h, stdlib.h to kill warnings. - - * sample.brg: Include string.h to remove warnings. - - svn path=/trunk/mono/; revision=1298 - -commit 306ec85b780f5f9c99ffaf19f51baa6548a298a6 -Author: Dietmar Maurer -Date: Wed Nov 7 06:33:48 2001 +0000 - - 2001-11-07 Dietmar Maurer - - * emit-x86.c (enter_method): print out all method arguments - (x86_magic_trampoline): impl. - (arch_create_simple_jit_trampoline): we use different trampolines - for static methods (no need to write the address back into to - vtable). - - svn path=/trunk/mono/; revision=1278 - -commit 689da148c801d119d0d2722ef74a497e95c5f1b3 -Author: Paolo Molaro -Date: Mon Oct 22 09:24:31 2001 +0000 - - Mon Oct 22 15:20:14 CEST 2001 Paolo Molaro - - * x86/tramp.c: handle boolean, u1 and i1 as return values. - - svn path=/trunk/mono/; revision=1192 - -commit f6b50c3852378ca35cef63056ddec70585b3ac32 -Author: Paolo Molaro -Date: Wed Oct 10 10:11:17 2001 +0000 - - Wed Oct 10 16:07:24 CEST 2001 Paolo Molaro - - * x86/x86-codegen.c: added x86_set_{reg,mem,membase}. - - svn path=/trunk/mono/; revision=1133 - -commit 27043fee95be8bec691045d7ab39b1be553550e9 -Author: Paolo Molaro -Date: Mon Oct 8 14:33:48 2001 +0000 - - Mon Oct 8 20:27:50 CEST 2001 Paolo Molaro - - * configure.in: define NO_UNALIGNED_ACCESS for platforms that - can't read on unaligned boundaries - - - Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro - - * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array. - Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux). - * image.c: endian fixes by Laurent Rioux. - * object.h, object.c: rename MonoStringObject to MonoString and - MonoArrayObject to MonoArray. Change some function names to conform to - the style mono__. mono_string_new_utf16 () takes a - guint16* as first argument, so don't use char*. - Provide macros to do the interesting things on arrays in a portable way. - * threads-pthread.c: updates for the API changes and #include - (required for sched_yield()). - * icall.c: updates for the API changes above. - * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for - platforms that need them. - - - Mon Oct 8 16:13:55 CEST 2001 Paolo Molaro - - * get.c, get.h: MonoArray changed in MonoArrayType. - * main.c: guard against calling bsearch with a NULL pointer - (pointed out by Laurent Rioux, smoux). - - - Mon Oct 8 16:13:07 CEST 2001 Paolo Molaro - - * x86/tramp.c: remove mono_get_ansi_string () and use - mono_string_to_utf8 () instead. - - - Mon Oct 8 16:14:40 CEST 2001 Paolo Molaro - - * interp.c: use the accessors provided in object.h to deal with - MonoArrays. Updates for API renames in metadata. Throw exception - in ldelema if index is out of bounds. - - svn path=/trunk/mono/; revision=1122 - -commit 4ff31b89c4d3458dc378cd2e915ed08281a21a8b -Author: Paolo Molaro -Date: Thu Oct 4 13:32:23 2001 +0000 - - Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro - - * class.c: MonoTypes stored in MonoClass are stored as - fundamental MonoTypes when the class represents a - fundamental type (System.Int32, ...). - The TypeHandle return by ldtoken is a MonoType*. - * icall.c: ves_icall_get_data_chunk () write out all the - PE/COFF stuff. Implement ves_icall_define_method (), - ves_icall_set_method_body (), ves_icall_type_from_handle (). - * image.c: properly skip unknown streams. - * loader.h, loader.c: add type_class to mono_defaults. - * metadata.c, metadata.h: export compute_size () as - mono_metadata_compute_size () with a better interface. - Typo and C&P fixes. - * pedump.c: don't try to print the entry point RVA if there is no entry point. - * reflection.c, reflection.h: many cleanups, fixes, output method - signatures and headers, typedef and typeref info, compress the metadata - tables, output all the heap streams, cli header etc. - * row-indexes.h: typo fixes. - - - Thu Oct 4 19:09:13 CEST 2001 Paolo Molaro - - * x86/tramp.c: allow marshalling valuetypes if they are - 4 bytes long. - - - Thu Oct 4 19:05:56 CEST 2001 Paolo Molaro - - * dis-cil.c: fix printing of exception stuff. - * dump.c: display some more info in the typedef table dump. - * main.c: typo fix and method list fix. - - svn path=/trunk/mono/; revision=1071 - -commit 7328e9088acbd2609dff8d07b841c3fafd894d25 -Author: Paolo Molaro -Date: Mon Oct 1 13:07:53 2001 +0000 - - Mon Oct 1 18:48:27 CEST 2001 Paolo Molaro - - * x86/tramp.c: fix thinko (s/SUB/ADD/) in stack adjustment - and avoid a couple of unnecessary instructions. - - svn path=/trunk/mono/; revision=1042 - -commit 1fa26f9aa718559d3090d1c1275bf04d574368f0 -Author: Paolo Molaro -Date: Fri Sep 28 13:49:47 2001 +0000 - - Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro - - * metadata.c: fix type comparison for arrays. - * loader.h, loader.c: half-assed fix to get more tests work in cygwin. - Added a couple of new classes to monodefaults. - * icall.c: added a couple of Reflection-related internalcalls. - * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles. - Added a byval_arg MonoType to MonoClass. - - - Fri Sep 28 19:43:12 CEST 2001 Paolo Molaro - - * x86/tramp.c: marshal valuetypes that are enums. - - - Fri Sep 28 19:37:46 CEST 2001 Paolo Molaro - - * interp.c: Implemented ldtoken, conv.ovf.i. Use MonoClass->byval_arg - (and remove related kludges). Don't choke on access to arrays of - references. Throw an exception when an internalcall or P/Invoke - function don't have an implementation. Throw and EngineException - for unimplemented opcodes. - - svn path=/trunk/mono/; revision=1027 - -commit 0122a3ea04b06d1d51f2756e48f6392ccac1096d -Author: Paolo Molaro -Date: Thu Sep 27 09:38:19 2001 +0000 - - Thu Sep 27 15:34:37 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h: in memindex operand you can use X86_NOBASEREG - as basereg. - - svn path=/trunk/mono/; revision=995 - -commit a5844f903a68e9448d7031587ffbd02ed2c4f486 -Author: Paolo Molaro -Date: Wed Sep 26 10:33:18 2001 +0000 - - Wed Sep 26 16:29:36 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h: added memindex addressing mode encoding - (and mov to/from register opcodes). - - svn path=/trunk/mono/; revision=984 - -commit 1f45df6d593cd60780ea121d08ddd035a3418e4a -Author: Paolo Molaro -Date: Mon Sep 24 13:30:32 2001 +0000 - - Mon Sep 24 18:49:01 CEST 2001 Paolo Molaro - - * x86/tramp.c: don't change a MONO_TYPE_STRING to a char* - when it's an argument to an internalcall. - - - Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro - - * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and - mono_string_intern () to implement the semantics of the ldstr opcode - and the interning of System.Strings. - * icall.c: provide hooks to make String::IsIntern and String::Intern - internalcalls. - - - Mon Sep 24 18:50:25 CEST 2001 Paolo Molaro - - * interp.c: catch a few more error conditions with exceptions instead of - erroring out. - Don't use g_print() in stack traces because it doesn't work with - some float values. - When we call an instance method of a valuetype class, unbox the 'this' - argument if it is an object. - Use mono_ldstr () to implement the ldstr opcode: it takes care of - interning the string if necessary. - Implemented new opcodes: ckfinite, cgt.un, clt.un, ldvirtftn, ldarga. - Fixes to handle NaNs when comparing doubles. - Make sure the loaded assembly has an entry point defined. - Fixed portability bugs in neg and not opcodes. - - svn path=/trunk/mono/; revision=943 - -commit a995bd527db97e45d979a6b97e0a15a479d2e14b -Author: Paolo Molaro -Date: Sun Sep 23 07:49:26 2001 +0000 - - Sun Sep 23 13:44:57 CEST 2001 Paolo Molaro - - * x86/tramp.c: handle MONO_TYPE_CLASS in trampolines. - - svn path=/trunk/mono/; revision=927 - -commit c9d21b14c718c8e7f3690f5d93ac349bbdd98d88 -Author: Dietmar Maurer -Date: Fri Sep 21 12:50:46 2001 +0000 - - implemented more opcodes - - svn path=/trunk/mono/; revision=916 - -commit a0930b7dcd7fe845e1c3c06f3fba6736f88d8bf9 -Author: Paolo Molaro -Date: Thu Sep 20 15:31:50 2001 +0000 - - Thu Sep 20 16:32:42 CEST 2001 Paolo Molaro - - * interp.c: implemented some more opcodes: calli, rem.un, - shr.un, conv.u, cpobj, stobj, conv.r.un, conv.ovf.i1.un, - conv.ovf.i2.un, conv.ovf.i4.un, conv.ovf.i8.un, conv.ovf.i.un, - conv.ovf.u1.un, conv.ovf.u2.un, conv.ovf.u4.un, conv.ovf.u8.un, - conv.ovf.u.un. - Fix some 64 bit issues in the array element access code and a small bug. - Throw an exception on index out of range instead of asserting. - Throw an exception on a NULL array instead of dying. - Stomped a memory corruption bug (.cctor methods were freed after - executing them, but they are stores in MonoClass now...). - Added a simple facility to invoke the debugger when a named - function is entered (use the cmdline option --debug method_name). - * interp.h: fix 64 bit issue. - - svn path=/trunk/mono/; revision=904 - -commit e177e60b93378860f0573f458d06cd641770a255 -Author: Paolo Molaro -Date: Tue Sep 18 07:26:43 2001 +0000 - - Tue Sep 18 13:23:59 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h: remove C++ comments. - - svn path=/trunk/mono/; revision=865 - -commit 4f874ee6ae2442c99421087b5ad11eae88283d55 -Author: Dietmar Maurer -Date: Mon Sep 17 09:10:44 2001 +0000 - - 2001-09-17 Dietmar Maurer - - * x86.brg: emit real code for calls - - * testjit.c (create_jit_trampoline): creates a function to trigger jit - compilation. - (mono_compile_method): reversed argument order - - svn path=/trunk/mono/; revision=842 - -commit 011e42b68518f5c1397ecdc0417c021b4c524560 -Author: Dietmar Maurer -Date: Mon Sep 17 07:18:11 2001 +0000 - - 2001-09-17 Dietmar Maurer - - * x86/x86-codegen.h (x86_alu_reg_reg): replaced src/dest - - svn path=/trunk/mono/; revision=841 - -commit c61474703f058c226a94ba9cdfb1d19e3a45eecd -Author: Dietmar Maurer -Date: Wed Sep 12 03:47:43 2001 +0000 - - *** empty log message *** - - svn path=/trunk/mono/; revision=792 - -commit db78bf2c09f07356fe4c8284d1a48fa9867bd2fc -Author: Paolo Molaro -Date: Mon Sep 10 14:26:02 2001 +0000 - - Mon Sep 10 20:19:00 CEST 2001 Paolo Molaro - - * configure.in: check for sizeof(void*) and for the architecture. - - Mon Sep 10 17:26:06 CEST 2001 Paolo Molaro - - * Makefile.am, x86/Makefile.am: conditional compile logic - to make porting to different targets easier. - - Mon Sep 10 17:24:45 CEST 2001 Paolo Molaro - - * Makefile.am: make it work for make distcheck. - - Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro - - * endian.h, assembly.c: fix some endianness issues. - - Mon Sep 10 20:20:36 CEST 2001 Paolo Molaro - - * interp.c: endian fixes, comments. - - svn path=/trunk/mono/; revision=783 - -commit ce34fcec9c53a31ba2cd48f22c9a5099d02779e5 -Author: Dietmar Maurer -Date: Mon Sep 10 09:34:11 2001 +0000 - - *** empty log message *** - - svn path=/trunk/mono/; revision=781 - -commit 6c07667b555ca78bdad5d7b6e5aa87f8078c1989 -Author: Dietmar Maurer -Date: Mon Sep 10 09:14:46 2001 +0000 - - added the jit prototype, small fixes - - svn path=/trunk/mono/; revision=780 - -commit 680963c46ae8b96cca52387e0f5b1a2e39825b90 -Author: Paolo Molaro -Date: Fri Sep 7 12:53:34 2001 +0000 - - Fri Sep 7 18:43:06 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h: fixes and x86_mov_membase_imm (). - * x86/tramp.c: implemented mono_create_method_pointer (): - creates a native pointer to a method implementation that can be - used as a normal C callback. - - - Fri Sep 7 18:45:38 CEST 2001 Paolo Molaro - - * interp.c, interp.h: make ves_exec_method () and stackval_from_data () - non static. Implement a couple of runtime methods needed to - use delegates (ves_runtime_method ()). - Implemented ldftn opcode. - - svn path=/trunk/mono/; revision=745 - -commit 4c39a186f2fa0dc3cca3ae6f6dc6584c75341adf -Author: Paolo Molaro -Date: Thu Sep 6 09:46:03 2001 +0000 - - Thu Sep 6 15:38:00 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h: added x86_rdtsc() and fixes. - * x86/tramp.c: create trampolines to call pinvoke methods. - * x86/Makefile.am: create a libmonoarch convenience library. - - - Thu Sep 6 15:41:24 CEST 2001 Paolo Molaro - - * Makefile.am: link to libmonoarch. - * interp.h, interp.c: use mono_create_trampoline (). - Pass the command line arguments to Main (String[]) methods. - - svn path=/trunk/mono/; revision=728 - -commit d3a5cf739f1182a42d20f1d5ace2a272307da87f -Author: Paolo Molaro -Date: Mon Aug 27 03:43:09 2001 +0000 - - Mon Aug 27 09:29:00 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h: fix x86_call_code (). x86_mov_regp_reg () added. - - svn path=/trunk/mono/; revision=636 - -commit 231c25bd596aa45a2962a9c820fc9417985a1f3f -Author: Paolo Molaro -Date: Sat Aug 18 06:55:29 2001 +0000 - - Sat Aug 18 12:40:32 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h: fix a couple of buglets and add x86_regp_emit(). - - Sat Aug 18 12:42:26 CEST 2001 Paolo Molaro - - * class.c, class.h: load also the methods when loading a class. - - Sat Aug 18 12:43:38 CEST 2001 Paolo Molaro - - * interp.c, interp.h: added support code to create exceptions. - Changed interncal calling convnetion over to MonoInvocation, to support - exceptions, walking the stack back and forward and passing the 'this' - pointer separately (remove the cludges required before to pass this on the - stack). Use alloca heavily for both local vars and a copy of the incoming - arguments. Init local vars to zero. - Simplify stackval_from_data() and stackval_to_data() to only take a pointer - instead of pointer + offset. - Implement a few exceptions-related opcodes and the code to run finally, fault and - catch blocks as well as a stack trace if no handler is found. - - Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro - - * metadata.c, metadata.h: in the signature and method header store - only the space required for holding the loca vars and incoming arguments. - - svn path=/trunk/mono/; revision=493 - -commit 75cdbf5cd16480631ac8579c2c2f230761e4802b -Author: Paolo Molaro -Date: Wed Aug 8 17:21:29 2001 +0000 - - Fixed x86_mov_reg_imm(). - - svn path=/trunk/mono/; revision=441 - -commit 5263eb4d219b8054b29a4d250cec40a7c8170a84 -Author: Miguel de Icaza -Date: Wed Aug 8 16:48:32 2001 +0000 - - Update copyright - - svn path=/trunk/mono/; revision=440 - -commit c9397770c008d427da0b7ad058782fc8564c10d3 -Author: Paolo Molaro -Date: Wed Aug 8 13:32:23 2001 +0000 - - Wed Aug 8 15:30:05 CEST 2001 Paolo Molaro - - * x86/x86-codegen.h, x86/test.c: added x86 code emitter with - test. - - svn path=/trunk/mono/; revision=435 diff --git a/FFTS/Sources/FFTS/src/arch/LICENSE b/FFTS/Sources/FFTS/src/arch/LICENSE deleted file mode 100644 index cb4a84d..0000000 --- a/FFTS/Sources/FFTS/src/arch/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2001, 2002, 2003 Ximian, Inc and the individuals listed -on the ChangeLog entries. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/FFTS/Sources/FFTS/src/arch/Makefile.am b/FFTS/Sources/FFTS/src/arch/Makefile.am deleted file mode 100644 index 8741687..0000000 --- a/FFTS/Sources/FFTS/src/arch/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -DIST_SUBDIRS = x86 ppc sparc arm arm64 s390x amd64 ia64 mips - -AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir) - -if ARM -# arm needs to build some stuff even in JIT mode -SUBDIRS = $(arch_target) -endif - -EXTRA_DIST = ChangeLog - diff --git a/FFTS/Sources/FFTS/src/arch/README b/FFTS/Sources/FFTS/src/arch/README deleted file mode 100644 index cfed57d..0000000 --- a/FFTS/Sources/FFTS/src/arch/README +++ /dev/null @@ -1,7 +0,0 @@ -mono_arch -========= - -Part of Mono project, https://github.com/mono - -These are C macros that are useful when generating native code on various platforms. -This code is MIT X11 licensed. diff --git a/FFTS/Sources/FFTS/src/arch/arm/.gitattributes b/FFTS/Sources/FFTS/src/arch/arm/.gitattributes deleted file mode 100644 index 4819db1..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/arm-wmmx.h -crlf diff --git a/FFTS/Sources/FFTS/src/arch/arm/.gitignore b/FFTS/Sources/FFTS/src/arch/arm/.gitignore deleted file mode 100644 index 978145d..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/Makefile -/Makefile.in -/.deps -/.libs -/*.o -/*.la -/*.lo -/*.lib -/*.obj -/*.exe -/*.dll -/arm_dpimacros.h -/arm_fpamacros.h -/arm_vfpmacros.h -/fixeol.sh diff --git a/FFTS/Sources/FFTS/src/arch/arm/Makefile.am b/FFTS/Sources/FFTS/src/arch/arm/Makefile.am deleted file mode 100644 index 593574c..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ - -AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir) - -noinst_LTLIBRARIES = libmonoarch-arm.la - -BUILT_SOURCES = arm_dpimacros.h arm_vfpmacros.h - - -libmonoarch_arm_la_SOURCES = $(BUILT_SOURCES) \ - arm-codegen.c \ - arm-codegen.h \ - arm-dis.c \ - arm-dis.h - -arm_dpimacros.h: dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th - (cd $(srcdir); bash ./dpiops.sh) > $@t - mv $@t $@ - -arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th - (cd $(srcdir); bash ./vfpops.sh) > $@t - mv $@t $@ - -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \ - vfpm_macros.th vfp_macros.th arm-vfp-codegen.h vfpops.sh - diff --git a/FFTS/Sources/FFTS/src/arch/arm/arm-codegen.c b/FFTS/Sources/FFTS/src/arch/arm/arm-codegen.c deleted file mode 100644 index 9914ace..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/arm-codegen.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * arm-codegen.c - * Copyright (c) 2002 Sergey Chaban - */ - -#include "arm-codegen.h" - - -arminstr_t* arm_emit_std_prologue(arminstr_t* p, unsigned int local_size) { - ARM_MOV_REG_REG(p, ARMREG_IP, ARMREG_SP); - - /* save args */ - ARM_PUSH(p, (1 << ARMREG_A1) - | (1 << ARMREG_A2) - | (1 << ARMREG_A3) - | (1 << ARMREG_A4)); - - ARM_PUSH(p, (1U << ARMREG_IP) | (1U << ARMREG_LR)); - - if (local_size != 0) { - if ((local_size & (~0xFF)) == 0) { - ARM_SUB_REG_IMM8(p, ARMREG_SP, ARMREG_SP, local_size); - } else { - /* TODO: optimize */ - p = arm_mov_reg_imm32(p, ARMREG_IP, local_size); - ARM_SUB_REG_REG(p, ARMREG_SP, ARMREG_SP, ARMREG_IP); - ARM_ADD_REG_IMM8(p, ARMREG_IP, ARMREG_IP, sizeof(armword_t)); - ARM_LDR_REG_REG(p, ARMREG_IP, ARMREG_SP, ARMREG_IP); - } - } - - return p; -} - -arminstr_t* arm_emit_std_epilogue(arminstr_t* p, unsigned int local_size, int pop_regs) { - if (local_size != 0) { - if ((local_size & (~0xFF)) == 0) { - ARM_ADD_REG_IMM8(p, ARMREG_SP, ARMREG_SP, local_size); - } else { - /* TODO: optimize */ - p = arm_mov_reg_imm32(p, ARMREG_IP, local_size); - ARM_ADD_REG_REG(p, ARMREG_SP, ARMREG_SP, ARMREG_IP); - } - } - - ARM_POP_NWB(p, (1 << ARMREG_SP) | (1 << ARMREG_PC) | (pop_regs & 0x3FF)); - - return p; -} - - -/* do not push A1-A4 */ -arminstr_t* arm_emit_lean_prologue(arminstr_t* p, unsigned int local_size, int push_regs) { - ARM_MOV_REG_REG(p, ARMREG_IP, ARMREG_SP); - /* push_regs upto R10 will be saved */ - ARM_PUSH(p, (1U << ARMREG_IP) | (1U << ARMREG_LR) | (push_regs & 0x3FF)); - - if (local_size != 0) { - if ((local_size & (~0xFF)) == 0) { - ARM_SUB_REG_IMM8(p, ARMREG_SP, ARMREG_SP, local_size); - } else { - /* TODO: optimize */ - p = arm_mov_reg_imm32(p, ARMREG_IP, local_size); - ARM_SUB_REG_REG(p, ARMREG_SP, ARMREG_SP, ARMREG_IP); - /* restore IP from stack */ - ARM_ADD_REG_IMM8(p, ARMREG_IP, ARMREG_IP, sizeof(armword_t)); - ARM_LDR_REG_REG(p, ARMREG_IP, ARMREG_SP, ARMREG_IP); - } - } - - return p; -} - -/* Bit scan forward. */ -int arm_bsf(armword_t val) { - int i; - armword_t mask; - - if (val == 0) return 0; - for (i=1, mask=1; (i <= 8 * sizeof(armword_t)) && ((val & mask) == 0); ++i, mask<<=1); - - return i; -} - - -int arm_is_power_of_2(armword_t val) { - return ((val & (val-1)) == 0); -} - - -/* - * returns: - * 1 - unable to represent - * positive even number - MOV-representable - * negative even number - MVN-representable - */ -int calc_arm_mov_const_shift(armword_t val) { - armword_t mask; - int res = 1, shift; - - for (shift=0; shift < 32; shift+=2) { - mask = ARM_SCALE(0xFF, shift); - if ((val & (~mask)) == 0) { - res = shift; - break; - } - if (((~val) & (~mask)) == 0) { - res = -shift - 2; - break; - } - } - - return res; -} - - -int is_arm_const(armword_t val) { - int res; - res = arm_is_power_of_2(val); - if (!res) { - res = calc_arm_mov_const_shift(val); - res = !(res < 0 || res == 1); - } - return res; -} - - -int arm_const_steps(armword_t val) { - int shift, steps = 0; - - while (val != 0) { - shift = (arm_bsf(val) - 1) & (~1); - val &= ~(0xFF << shift); - ++steps; - } - return steps; -} - - -/* - * ARM cannot load arbitrary 32-bit constants directly into registers; - * widely used work-around for this is to store constants into a - * PC-addressable pool and use LDR instruction with PC-relative address - * to load constant into register. Easiest way to implement this is to - * embed constant inside a function with unconditional branch around it. - * The above method is not used at the moment. - * This routine always emits sequence of instructions to generate - * requested constant. In the worst case it takes 4 instructions to - * synthesize a constant - 1 MOV and 3 subsequent ORRs. - */ -arminstr_t* arm_mov_reg_imm32_cond(arminstr_t* p, int reg, armword_t imm32, int cond) { - int mov_op; - int step_op; - int snip; - int shift = calc_arm_mov_const_shift(imm32); - - if ((shift & 0x80000001) != 1) { - if (shift >= 0) { - ARM_MOV_REG_IMM_COND(p, reg, imm32 >> ((32 - shift) & 31), shift, cond); - } else { - ARM_MVN_REG_IMM_COND(p, reg, (imm32 ^ (~0)) >> ((32 + 2 + shift) & 31), (-shift - 2), cond); - } - } else { - mov_op = ARMOP_MOV; - step_op = ARMOP_ORR; - - if (arm_const_steps(imm32) > arm_const_steps(~imm32)) { - mov_op = ARMOP_MVN; - step_op = ARMOP_SUB; - imm32 = ~imm32; - } - - shift = (arm_bsf(imm32) - 1) & (~1); - snip = imm32 & (0xFF << shift); - ARM_EMIT(p, ARM_DEF_DPI_IMM_COND((unsigned)snip >> shift, (32 - shift) >> 1, reg, 0, 0, mov_op, cond)); - - while ((imm32 ^= snip) != 0) { - shift = (arm_bsf(imm32) - 1) & (~1); - snip = imm32 & (0xFF << shift); - ARM_EMIT(p, ARM_DEF_DPI_IMM_COND((unsigned)snip >> shift, (32 - shift) >> 1, reg, reg, 0, step_op, cond)); - } - } - - return p; -} - - -arminstr_t* arm_mov_reg_imm32(arminstr_t* p, int reg, armword_t imm32) { - return arm_mov_reg_imm32_cond(p, reg, imm32, ARMCOND_AL); -} - - - diff --git a/FFTS/Sources/FFTS/src/arch/arm/arm-codegen.h b/FFTS/Sources/FFTS/src/arch/arm/arm-codegen.h deleted file mode 100644 index d4d7f7c..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/arm-codegen.h +++ /dev/null @@ -1,1127 +0,0 @@ -/* - * arm-codegen.h - * Copyright (c) 2002-2003 Sergey Chaban - * Copyright 2005-2011 Novell Inc - * Copyright 2011 Xamarin Inc - */ - - -#ifndef ARM_H -#define ARM_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned int arminstr_t; -typedef unsigned int armword_t; - -/* Helper functions */ -arminstr_t* arm_emit_std_prologue(arminstr_t* p, unsigned int local_size); -arminstr_t* arm_emit_std_epilogue(arminstr_t* p, unsigned int local_size, int pop_regs); -arminstr_t* arm_emit_lean_prologue(arminstr_t* p, unsigned int local_size, int push_regs); -int arm_is_power_of_2(armword_t val); -int calc_arm_mov_const_shift(armword_t val); -int is_arm_const(armword_t val); -int arm_bsf(armword_t val); -arminstr_t* arm_mov_reg_imm32_cond(arminstr_t* p, int reg, armword_t imm32, int cond); -arminstr_t* arm_mov_reg_imm32(arminstr_t* p, int reg, armword_t imm32); - - - -#if defined(_MSC_VER) || defined(__CC_NORCROFT) - void __inline _arm_emit(arminstr_t** p, arminstr_t i) {**p = i; (*p)++;} -# define ARM_EMIT(p, i) _arm_emit((arminstr_t**)&p, (arminstr_t)(i)) -#else -# define ARM_EMIT(p, i) do { arminstr_t *__ainstrp = (void*)(p); *__ainstrp = (arminstr_t)(i); (p) = (void*)(__ainstrp+1);} while (0) -#endif - -#if defined(_MSC_VER) && !defined(ARM_NOIASM) -# define ARM_IASM(_expr) __emit (_expr) -#else -# define ARM_IASM(_expr) -#endif - -/* even_scale = rot << 1 */ -#define ARM_SCALE(imm8, even_scale) ( ((imm8) >> (even_scale)) | ((imm8) << (32 - even_scale)) ) - - - -typedef enum { - ARMREG_R0 = 0, - ARMREG_R1, - ARMREG_R2, - ARMREG_R3, - ARMREG_R4, - ARMREG_R5, - ARMREG_R6, - ARMREG_R7, - ARMREG_R8, - ARMREG_R9, - ARMREG_R10, - ARMREG_R11, - ARMREG_R12, - ARMREG_R13, - ARMREG_R14, - ARMREG_R15, - - - /* aliases */ - /* args */ - ARMREG_A1 = ARMREG_R0, - ARMREG_A2 = ARMREG_R1, - ARMREG_A3 = ARMREG_R2, - ARMREG_A4 = ARMREG_R3, - - /* local vars */ - ARMREG_V1 = ARMREG_R4, - ARMREG_V2 = ARMREG_R5, - ARMREG_V3 = ARMREG_R6, - ARMREG_V4 = ARMREG_R7, - ARMREG_V5 = ARMREG_R8, - ARMREG_V6 = ARMREG_R9, - ARMREG_V7 = ARMREG_R10, - - ARMREG_FP = ARMREG_R11, - ARMREG_IP = ARMREG_R12, - ARMREG_SP = ARMREG_R13, - ARMREG_LR = ARMREG_R14, - ARMREG_PC = ARMREG_R15, - - /* co-processor */ - ARMREG_CR0 = 0, - ARMREG_CR1, - ARMREG_CR2, - ARMREG_CR3, - ARMREG_CR4, - ARMREG_CR5, - ARMREG_CR6, - ARMREG_CR7, - ARMREG_CR8, - ARMREG_CR9, - ARMREG_CR10, - ARMREG_CR11, - ARMREG_CR12, - ARMREG_CR13, - ARMREG_CR14, - ARMREG_CR15, - - /* XScale: acc0 on CP0 */ - ARMREG_ACC0 = ARMREG_CR0, - - ARMREG_MAX = ARMREG_R15 -} ARMReg; - -/* number of argument registers */ -#define ARM_NUM_ARG_REGS 4 - -/* bitvector for all argument regs (A1-A4) */ -#define ARM_ALL_ARG_REGS \ - (1 << ARMREG_A1) | (1 << ARMREG_A2) | (1 << ARMREG_A3) | (1 << ARMREG_A4) - - -typedef enum { - ARMCOND_EQ = 0x0, /* Equal; Z = 1 */ - ARMCOND_NE = 0x1, /* Not equal, or unordered; Z = 0 */ - ARMCOND_CS = 0x2, /* Carry set; C = 1 */ - ARMCOND_HS = ARMCOND_CS, /* Unsigned higher or same; */ - ARMCOND_CC = 0x3, /* Carry clear; C = 0 */ - ARMCOND_LO = ARMCOND_CC, /* Unsigned lower */ - ARMCOND_MI = 0x4, /* Negative; N = 1 */ - ARMCOND_PL = 0x5, /* Positive or zero; N = 0 */ - ARMCOND_VS = 0x6, /* Overflow; V = 1 */ - ARMCOND_VC = 0x7, /* No overflow; V = 0 */ - ARMCOND_HI = 0x8, /* Unsigned higher; C = 1 && Z = 0 */ - ARMCOND_LS = 0x9, /* Unsigned lower or same; C = 0 || Z = 1 */ - ARMCOND_GE = 0xA, /* Signed greater than or equal; N = V */ - ARMCOND_LT = 0xB, /* Signed less than; N != V */ - ARMCOND_GT = 0xC, /* Signed greater than; Z = 0 && N = V */ - ARMCOND_LE = 0xD, /* Signed less than or equal; Z = 1 && N != V */ - ARMCOND_AL = 0xE, /* Always */ - ARMCOND_NV = 0xF, /* Never */ - - ARMCOND_SHIFT = 28 -} ARMCond; - -#define ARMCOND_MASK (ARMCOND_NV << ARMCOND_SHIFT) - -#define ARM_DEF_COND(cond) (((cond) & 0xF) << ARMCOND_SHIFT) - - - -typedef enum { - ARMSHIFT_LSL = 0, - ARMSHIFT_LSR = 1, - ARMSHIFT_ASR = 2, - ARMSHIFT_ROR = 3, - - ARMSHIFT_ASL = ARMSHIFT_LSL - /* rrx = (ror, 1) */ -} ARMShiftType; - - -typedef struct { - armword_t PSR_c : 8; - armword_t PSR_x : 8; - armword_t PSR_s : 8; - armword_t PSR_f : 8; -} ARMPSR; - -typedef enum { - ARMOP_AND = 0x0, - ARMOP_EOR = 0x1, - ARMOP_SUB = 0x2, - ARMOP_RSB = 0x3, - ARMOP_ADD = 0x4, - ARMOP_ADC = 0x5, - ARMOP_SBC = 0x6, - ARMOP_RSC = 0x7, - ARMOP_TST = 0x8, - ARMOP_TEQ = 0x9, - ARMOP_CMP = 0xa, - ARMOP_CMN = 0xb, - ARMOP_ORR = 0xc, - ARMOP_MOV = 0xd, - ARMOP_BIC = 0xe, - ARMOP_MVN = 0xf, - - - /* not really opcodes */ - - ARMOP_STR = 0x0, - ARMOP_LDR = 0x1, - - /* ARM2+ */ - ARMOP_MUL = 0x0, /* Rd := Rm*Rs */ - ARMOP_MLA = 0x1, /* Rd := (Rm*Rs)+Rn */ - - /* ARM3M+ */ - ARMOP_UMULL = 0x4, - ARMOP_UMLAL = 0x5, - ARMOP_SMULL = 0x6, - ARMOP_SMLAL = 0x7, - - /* for data transfers with register offset */ - ARM_UP = 1, - ARM_DOWN = 0 -} ARMOpcode; - -typedef enum { - THUMBOP_AND = 0, - THUMBOP_EOR = 1, - THUMBOP_LSL = 2, - THUMBOP_LSR = 3, - THUMBOP_ASR = 4, - THUMBOP_ADC = 5, - THUMBOP_SBC = 6, - THUMBOP_ROR = 7, - THUMBOP_TST = 8, - THUMBOP_NEG = 9, - THUMBOP_CMP = 10, - THUMBOP_CMN = 11, - THUMBOP_ORR = 12, - THUMBOP_MUL = 13, - THUMBOP_BIC = 14, - THUMBOP_MVN = 15, - THUMBOP_MOV = 16, - THUMBOP_CMPI = 17, - THUMBOP_ADD = 18, - THUMBOP_SUB = 19, - THUMBOP_CMPH = 19, - THUMBOP_MOVH = 20 -} ThumbOpcode; - - -/* Generic form - all ARM instructions are conditional. */ -typedef struct { - arminstr_t icode : 28; - arminstr_t cond : 4; -} ARMInstrGeneric; - - - -/* Branch or Branch with Link instructions. */ -typedef struct { - arminstr_t offset : 24; - arminstr_t link : 1; - arminstr_t tag : 3; /* 1 0 1 */ - arminstr_t cond : 4; -} ARMInstrBR; - -#define ARM_BR_ID 5 -#define ARM_BR_MASK 7 << 25 -#define ARM_BR_TAG ARM_BR_ID << 25 - -#define ARM_DEF_BR(offs, l, cond) ((offs) | ((l) << 24) | (ARM_BR_TAG) | (cond << ARMCOND_SHIFT)) - -/* branch */ -#define ARM_B_COND(p, cond, offset) ARM_EMIT(p, ARM_DEF_BR(offset, 0, cond)) -#define ARM_B(p, offs) ARM_B_COND((p), ARMCOND_AL, (offs)) -/* branch with link */ -#define ARM_BL_COND(p, cond, offset) ARM_EMIT(p, ARM_DEF_BR(offset, 1, cond)) -#define ARM_BL(p, offs) ARM_BL_COND((p), ARMCOND_AL, (offs)) - -#define ARM_DEF_BX(reg,sub,cond) (0x12fff << 8 | (reg) | ((sub) << 4) | ((cond) << ARMCOND_SHIFT)) - -#define ARM_BX_COND(p, cond, reg) ARM_EMIT(p, ARM_DEF_BX(reg, 1, cond)) -#define ARM_BX(p, reg) ARM_BX_COND((p), ARMCOND_AL, (reg)) - -#define ARM_BLX_REG_COND(p, cond, reg) ARM_EMIT(p, ARM_DEF_BX(reg, 3, cond)) -#define ARM_BLX_REG(p, reg) ARM_BLX_REG_COND((p), ARMCOND_AL, (reg)) - -/* Data Processing Instructions - there are 3 types. */ - -typedef struct { - arminstr_t imm : 8; - arminstr_t rot : 4; -} ARMDPI_op2_imm; - -typedef struct { - arminstr_t rm : 4; - arminstr_t tag : 1; /* 0 - immediate shift, 1 - reg shift */ - arminstr_t type : 2; /* shift type - logical, arithmetic, rotate */ -} ARMDPI_op2_reg_shift; - - -/* op2 is reg shift by imm */ -typedef union { - ARMDPI_op2_reg_shift r2; - struct { - arminstr_t _dummy_r2 : 7; - arminstr_t shift : 5; - } imm; -} ARMDPI_op2_reg_imm; - -/* op2 is reg shift by reg */ -typedef union { - ARMDPI_op2_reg_shift r2; - struct { - arminstr_t _dummy_r2 : 7; - arminstr_t pad : 1; /* always 0, to differentiate from HXFER etc. */ - arminstr_t rs : 4; - } reg; -} ARMDPI_op2_reg_reg; - -/* Data processing instrs */ -typedef union { - ARMDPI_op2_imm op2_imm; - - ARMDPI_op2_reg_shift op2_reg; - ARMDPI_op2_reg_imm op2_reg_imm; - ARMDPI_op2_reg_reg op2_reg_reg; - - struct { - arminstr_t op2 : 12; /* raw operand 2 */ - arminstr_t rd : 4; /* destination reg */ - arminstr_t rn : 4; /* first operand reg */ - arminstr_t s : 1; /* S-bit controls PSR update */ - arminstr_t opcode : 4; /* arithmetic/logic operation */ - arminstr_t type : 1; /* type of op2, 0 = register, 1 = immediate */ - arminstr_t tag : 2; /* 0 0 */ - arminstr_t cond : 4; - } all; -} ARMInstrDPI; - -#define ARM_DPI_ID 0 -#define ARM_DPI_MASK 3 << 26 -#define ARM_DPI_TAG ARM_DPI_ID << 26 - -#define ARM_DEF_DPI_IMM_COND(imm8, rot, rd, rn, s, op, cond) \ - ((imm8) & 0xFF) | \ - (((rot) & 0xF) << 8) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((s) << 20) | \ - ((op) << 21) | \ - (1 << 25) | \ - (ARM_DPI_TAG) | \ - ARM_DEF_COND(cond) - - -#define ARM_DEF_DPI_IMM(imm8, rot, rd, rn, s, op) \ - ARM_DEF_DPI_IMM_COND(imm8, rot, rd, rn, s, op, ARMCOND_AL) - -/* codegen */ -#define ARM_DPIOP_REG_IMM8ROT_COND(p, op, rd, rn, imm8, rot, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_IMM_COND((imm8), ((rot) >> 1), (rd), (rn), 0, (op), cond)) -#define ARM_DPIOP_S_REG_IMM8ROT_COND(p, op, rd, rn, imm8, rot, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_IMM_COND((imm8), ((rot) >> 1), (rd), (rn), 1, (op), cond)) - -/* inline */ -#define ARM_IASM_DPIOP_REG_IMM8ROT_COND(p, op, rd, rn, imm8, rot, cond) \ - ARM_IASM(ARM_DEF_DPI_IMM_COND((imm8), ((rot) >> 1), (rd), (rn), 0, (op), cond)) -#define ARM_IASM_DPIOP_S_REG_IMM8ROT_COND(p, op, rd, rn, imm8, rot, cond) \ - ARM_IASM(ARM_DEF_DPI_IMM_COND((imm8), ((rot) >> 1), (rd), (rn), 1, (op), cond)) - - - -#define ARM_DEF_DPI_REG_IMMSHIFT_COND(rm, shift_type, imm_shift, rd, rn, s, op, cond) \ - (rm) | \ - ((shift_type & 3) << 5) | \ - (((imm_shift) & 0x1F) << 7) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((s) << 20) | \ - ((op) << 21) | \ - (ARM_DPI_TAG) | \ - ARM_DEF_COND(cond) - -/* codegen */ -#define ARM_DPIOP_REG_IMMSHIFT_COND(p, op, rd, rn, rm, shift_t, imm_shift, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), shift_t, imm_shift, (rd), (rn), 0, (op), cond)) - -#define ARM_DPIOP_S_REG_IMMSHIFT_COND(p, op, rd, rn, rm, shift_t, imm_shift, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), shift_t, imm_shift, (rd), (rn), 1, (op), cond)) - -#define ARM_DPIOP_REG_REG_COND(p, op, rd, rn, rm, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), ARMSHIFT_LSL, 0, (rd), (rn), 0, (op), cond)) - -#define ARM_DPIOP_S_REG_REG_COND(p, op, rd, rn, rm, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), ARMSHIFT_LSL, 0, (rd), (rn), 1, (op), cond)) - -/* inline */ -#define ARM_IASM_DPIOP_REG_IMMSHIFT_COND(p, op, rd, rn, rm, shift_t, imm_shift, cond) \ - ARM_IASM(ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), shift_t, imm_shift, (rd), (rn), 0, (op), cond)) - -#define ARM_IASM_DPIOP_S_REG_IMMSHIFT_COND(p, op, rd, rn, rm, shift_t, imm_shift, cond) \ - ARM_IASM(ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), shift_t, imm_shift, (rd), (rn), 1, (op), cond)) - -#define ARM_IASM_DPIOP_REG_REG_COND(p, op, rd, rn, rm, cond) \ - ARM_IASM(ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), ARMSHIFT_LSL, 0, (rd), (rn), 0, (op), cond)) - -#define ARM_IASM_DPIOP_S_REG_REG_COND(p, op, rd, rn, rm, cond) \ - ARM_IASM_EMIT(ARM_DEF_DPI_REG_IMMSHIFT_COND((rm), ARMSHIFT_LSL, 0, (rd), (rn), 1, (op), cond)) - - -/* Rd := Rn op (Rm shift_type Rs) */ -#define ARM_DEF_DPI_REG_REGSHIFT_COND(rm, shift_type, rs, rd, rn, s, op, cond) \ - (rm) | \ - (1 << 4) | \ - ((shift_type & 3) << 5) | \ - ((rs) << 8) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((s) << 20) | \ - ((op) << 21) | \ - (ARM_DPI_TAG) | \ - ARM_DEF_COND(cond) - -/* codegen */ -#define ARM_DPIOP_REG_REGSHIFT_COND(p, op, rd, rn, rm, shift_t, rs, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_REG_REGSHIFT_COND((rm), shift_t, (rs), (rd), (rn), 0, (op), cond)) - -#define ARM_DPIOP_S_REG_REGSHIFT_COND(p, op, rd, rn, rm, shift_t, rs, cond) \ - ARM_EMIT(p, ARM_DEF_DPI_REG_REGSHIFT_COND((rm), shift_t, (rs), (rd), (rn), 1, (op), cond)) - -/* inline */ -#define ARM_IASM_DPIOP_REG_REGSHIFT_COND(p, op, rd, rn, rm, shift_t, rs, cond) \ - ARM_IASM(ARM_DEF_DPI_REG_REGSHIFT_COND((rm), shift_t, (rs), (rd), (rn), 0, (op), cond)) - -#define ARM_IASM_DPIOP_S_REG_REGSHIFT_COND(p, op, rd, rn, rm, shift_t, rs, cond) \ - ARM_IASM(ARM_DEF_DPI_REG_REGSHIFT_COND((rm), shift_t, (rs), (rd), (rn), 1, (op), cond)) - - - -/* Multiple register transfer. */ -typedef struct { - arminstr_t reg_list : 16; /* bitfield */ - arminstr_t rn : 4; /* base reg */ - arminstr_t ls : 1; /* load(1)/store(0) */ - arminstr_t wb : 1; /* write-back "!" */ - arminstr_t s : 1; /* restore PSR, force user bit */ - arminstr_t u : 1; /* up/down */ - arminstr_t p : 1; /* pre(1)/post(0) index */ - arminstr_t tag : 3; /* 1 0 0 */ - arminstr_t cond : 4; -} ARMInstrMRT; - -#define ARM_MRT_ID 4 -#define ARM_MRT_MASK 7 << 25 -#define ARM_MRT_TAG ARM_MRT_ID << 25 - -#define ARM_DEF_MRT(regs, rn, l, w, s, u, p, cond) \ - (regs) | \ - (rn << 16) | \ - (l << 20) | \ - (w << 21) | \ - (s << 22) | \ - (u << 23) | \ - (p << 24) | \ - (ARM_MRT_TAG) | \ - ARM_DEF_COND(cond) - - -#define ARM_LDM(p, base, regs) ARM_EMIT(p, ARM_DEF_MRT(regs, base, 1, 0, 0, 1, 0, ARMCOND_AL)) -#define ARM_STM(p, base, regs) ARM_EMIT(p, ARM_DEF_MRT(regs, base, 0, 0, 0, 1, 0, ARMCOND_AL)) - -/* stmdb sp!, {regs} */ -#define ARM_PUSH(p, regs) ARM_EMIT(p, ARM_DEF_MRT(regs, ARMREG_SP, 0, 1, 0, 0, 1, ARMCOND_AL)) -#define ARM_IASM_PUSH(regs) ARM_IASM(ARM_DEF_MRT(regs, ARMREG_SP, 0, 1, 0, 0, 1, ARMCOND_AL)) - -/* ldmia sp!, {regs} */ -#define ARM_POP(p, regs) ARM_EMIT(p, ARM_DEF_MRT(regs, ARMREG_SP, 1, 1, 0, 1, 0, ARMCOND_AL)) -#define ARM_IASM_POP(regs) ARM_IASM_EMIT(ARM_DEF_MRT(regs, ARMREG_SP, 1, 1, 0, 1, 0, ARMCOND_AL)) - -/* ldmia sp, {regs} ; (no write-back) */ -#define ARM_POP_NWB(p, regs) ARM_EMIT(p, ARM_DEF_MRT(regs, ARMREG_SP, 1, 0, 0, 1, 0, ARMCOND_AL)) -#define ARM_IASM_POP_NWB(regs) ARM_IASM_EMIT(ARM_DEF_MRT(regs, ARMREG_SP, 1, 0, 0, 1, 0, ARMCOND_AL)) - -#define ARM_PUSH1(p, r1) ARM_PUSH(p, (1 << r1)) -#define ARM_PUSH2(p, r1, r2) ARM_PUSH(p, (1 << r1) | (1 << r2)) -#define ARM_PUSH3(p, r1, r2, r3) ARM_PUSH(p, (1 << r1) | (1 << r2) | (1 << r3)) -#define ARM_PUSH4(p, r1, r2, r3, r4) ARM_PUSH(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4)) -#define ARM_PUSH5(p, r1, r2, r3, r4, r5) ARM_PUSH(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5)) -#define ARM_PUSH6(p, r1, r2, r3, r4, r5, r6) ARM_PUSH(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5) | (1 << r6)) -#define ARM_PUSH7(p, r1, r2, r3, r4, r5, r6, r7) ARM_PUSH(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5) | (1 << r6) | (1 << r7)) -#define ARM_PUSH8(p, r1, r2, r3, r4, r5, r6, r7, r8) ARM_PUSH(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5) | (1 << r6) | (1 << r7) | (1 << r8)) - -#define ARM_POP8(p, r1, r2, r3, r4, r5, r6, r7, r8) ARM_POP(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5) | (1 << r6) | (1 << r7) | (1 << r8)) -#define ARM_POP7(p, r1, r2, r3, r4, r5, r6, r7) ARM_POP(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5) | (1 << r6) | (1 << r7)) -#define ARM_POP6(p, r1, r2, r3, r4, r5, r6) ARM_POP(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5) | (1 << r6)) -#define ARM_POP5(p, r1, r2, r3, r4, r5) ARM_POP(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4) | (1 << r5)) -#define ARM_POP4(p, r1, r2, r3, r4) ARM_POP(p, (1 << r1) | (1 << r2) | (1 << r3) | (1 << r4)) -#define ARM_POP3(p, r1, r2, r3) ARM_POP(p, (1 << r1) | (1 << r2) | (1 << r3)) -#define ARM_POP2(p, r1, r2) ARM_POP(p, (1 << r1) | (1 << r2)) -#define ARM_POP1(p, r1) ARM_POP(p, (1 << r1)) - - -/* Multiply instructions */ -typedef struct { - arminstr_t rm : 4; - arminstr_t tag2 : 4; /* 9 */ - arminstr_t rs : 4; - arminstr_t rn : 4; - arminstr_t rd : 4; - arminstr_t s : 1; - arminstr_t opcode : 3; - arminstr_t tag : 4; - arminstr_t cond : 4; -} ARMInstrMul; - -#define ARM_MUL_ID 0 -#define ARM_MUL_ID2 9 -#define ARM_MUL_MASK ((0xF << 24) | (0xF << 4)) -#define ARM_MUL_TAG ((ARM_MUL_ID << 24) | (ARM_MUL_ID2 << 4)) - -#define ARM_DEF_MUL_COND(op, rd, rm, rs, rn, s, cond) \ - (rm) | \ - ((rs) << 8) | \ - ((rn) << 12) | \ - ((rd) << 16) | \ - ((s & 1) << 17) | \ - ((op & 7) << 18) | \ - ARM_MUL_TAG | \ - ARM_DEF_COND(cond) - -/* Rd := (Rm * Rs)[31:0]; 32 x 32 -> 32 */ -#define ARM_MUL_COND(p, rd, rm, rs, cond) \ - ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_MUL, rd, rm, rs, 0, 0, cond)) -#define ARM_MUL(p, rd, rm, rs) \ - ARM_MUL_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_MULS_COND(p, rd, rm, rs, cond) \ - ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_MUL, rd, rm, rs, 0, 1, cond)) -#define ARM_MULS(p, rd, rm, rs) \ - ARM_MULS_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_MUL_REG_REG(p, rd, rm, rs) ARM_MUL(p, rd, rm, rs) -#define ARM_MULS_REG_REG(p, rd, rm, rs) ARM_MULS(p, rd, rm, rs) - -/* inline */ -#define ARM_IASM_MUL_COND(rd, rm, rs, cond) \ - ARM_IASM_EMIT(ARM_DEF_MUL_COND(ARMOP_MUL, rd, rm, rs, 0, 0, cond)) -#define ARM_IASM_MUL(rd, rm, rs) \ - ARM_IASM_MUL_COND(rd, rm, rs, ARMCOND_AL) -#define ARM_IASM_MULS_COND(rd, rm, rs, cond) \ - ARM_IASM_EMIT(ARM_DEF_MUL_COND(ARMOP_MUL, rd, rm, rs, 0, 1, cond)) -#define ARM_IASM_MULS(rd, rm, rs) \ - ARM_IASM_MULS_COND(rd, rm, rs, ARMCOND_AL) - - -/* Rd := (Rm * Rs) + Rn; 32x32+32->32 */ -#define ARM_MLA_COND(p, rd, rm, rs, rn, cond) \ - ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_MLA, rd, rm, rs, rn, 0, cond)) -#define ARM_MLA(p, rd, rm, rs, rn) \ - ARM_MLA_COND(p, rd, rm, rs, rn, ARMCOND_AL) -#define ARM_MLAS_COND(p, rd, rm, rs, rn, cond) \ - ARM_EMIT(p, ARM_DEF_MUL_COND(ARMOP_MLA, rd, rm, rs, rn, 1, cond)) -#define ARM_MLAS(p, rd, rm, rs, rn) \ - ARM_MLAS_COND(p, rd, rm, rs, rn, ARMCOND_AL) - -/* inline */ -#define ARM_IASM_MLA_COND(rd, rm, rs, rn, cond) \ - ARM_IASM_EMIT(ARM_DEF_MUL_COND(ARMOP_MLA, rd, rm, rs, rn, 0, cond)) -#define ARM_IASM_MLA(rd, rm, rs, rn) \ - ARM_IASM_MLA_COND(rd, rm, rs, rn, ARMCOND_AL) -#define ARM_IASM_MLAS_COND(rd, rm, rs, rn, cond) \ - ARM_IASM_EMIT(ARM_DEF_MUL_COND(ARMOP_MLA, rd, rm, rs, rn, 1, cond)) -#define ARM_IASM_MLAS(rd, rm, rs, rn) \ - ARM_IASM_MLAS_COND(rd, rm, rs, rn, ARMCOND_AL) - - - -/* Word/byte transfer */ -typedef union { - ARMDPI_op2_reg_imm op2_reg_imm; - struct { - arminstr_t op2_imm : 12; - arminstr_t rd : 4; - arminstr_t rn : 4; - arminstr_t ls : 1; - arminstr_t wb : 1; - arminstr_t b : 1; - arminstr_t u : 1; /* down(0) / up(1) */ - arminstr_t p : 1; /* post-index(0) / pre-index(1) */ - arminstr_t type : 1; /* imm(0) / register(1) */ - arminstr_t tag : 2; /* 0 1 */ - arminstr_t cond : 4; - } all; -} ARMInstrWXfer; - -#define ARM_WXFER_ID 1 -#define ARM_WXFER_MASK 3 << 26 -#define ARM_WXFER_TAG ARM_WXFER_ID << 26 - - -#define ARM_DEF_WXFER_IMM(imm12, rd, rn, ls, wb, b, p, cond) \ - ((((int)imm12) < 0) ? -(int)(imm12) : (imm12)) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((ls) << 20) | \ - ((wb) << 21) | \ - ((b) << 22) | \ - (((int)(imm12) >= 0) << 23) | \ - ((p) << 24) | \ - ARM_WXFER_TAG | \ - ARM_DEF_COND(cond) - -#define ARM_WXFER_MAX_OFFS 0xFFF - -/* this macro checks for imm12 bounds */ -#define ARM_EMIT_WXFER_IMM(ptr, imm12, rd, rn, ls, wb, b, p, cond) \ - do { \ - int _imm12 = (int)(imm12) < -ARM_WXFER_MAX_OFFS \ - ? -ARM_WXFER_MAX_OFFS \ - : (int)(imm12) > ARM_WXFER_MAX_OFFS \ - ? ARM_WXFER_MAX_OFFS \ - : (int)(imm12); \ - ARM_EMIT((ptr), \ - ARM_DEF_WXFER_IMM(_imm12, (rd), (rn), (ls), (wb), (b), (p), (cond))); \ - } while (0) - - -/* LDRx */ -/* immediate offset, post-index */ -#define ARM_LDR_IMM_POST_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_LDR, 0, 0, 0, cond)) - -#define ARM_LDR_IMM_POST(p, rd, rn, imm) ARM_LDR_IMM_POST_COND(p, rd, rn, imm, ARMCOND_AL) - -#define ARM_LDRB_IMM_POST_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_LDR, 0, 1, 0, cond)) - -#define ARM_LDRB_IMM_POST(p, rd, rn, imm) ARM_LDRB_IMM_POST_COND(p, rd, rn, imm, ARMCOND_AL) - -/* immediate offset, pre-index */ -#define ARM_LDR_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_LDR, 0, 0, 1, cond)) - -#define ARM_LDR_IMM(p, rd, rn, imm) ARM_LDR_IMM_COND(p, rd, rn, imm, ARMCOND_AL) - -#define ARM_LDRB_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_LDR, 0, 1, 1, cond)) - -#define ARM_LDRB_IMM(p, rd, rn, imm) ARM_LDRB_IMM_COND(p, rd, rn, imm, ARMCOND_AL) - -/* STRx */ -/* immediate offset, post-index */ -#define ARM_STR_IMM_POST_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_STR, 0, 0, 0, cond)) - -#define ARM_STR_IMM_POST(p, rd, rn, imm) ARM_STR_IMM_POST_COND(p, rd, rn, imm, ARMCOND_AL) - -#define ARM_STRB_IMM_POST_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_STR, 0, 1, 0, cond)) - -#define ARM_STRB_IMM_POST(p, rd, rn, imm) ARM_STRB_IMM_POST_COND(p, rd, rn, imm, ARMCOND_AL) - -/* immediate offset, pre-index */ -#define ARM_STR_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT_WXFER_IMM(p, imm, rd, rn, ARMOP_STR, 0, 0, 1, cond) -/* ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_STR, 0, 0, 1, cond)) */ - -#define ARM_STR_IMM(p, rd, rn, imm) ARM_STR_IMM_COND(p, rd, rn, imm, ARMCOND_AL) - -#define ARM_STRB_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_IMM(imm, rd, rn, ARMOP_STR, 0, 1, 1, cond)) - -#define ARM_STRB_IMM(p, rd, rn, imm) ARM_STRB_IMM_COND(p, rd, rn, imm, ARMCOND_AL) - -/* write-back */ -#define ARM_STR_IMM_WB_COND(p, rd, rn, imm, cond) \ - ARM_EMIT_WXFER_IMM(p, imm, rd, rn, ARMOP_STR, 1, 0, 1, cond) -#define ARM_STR_IMM_WB(p, rd, rn, imm) ARM_STR_IMM_WB_COND(p, rd, rn, imm, ARMCOND_AL) - - -#define ARM_DEF_WXFER_REG_REG_UPDOWN_COND(rm, shift_type, shift, rd, rn, ls, wb, b, u, p, cond) \ - (rm) | \ - ((shift_type) << 5) | \ - ((shift) << 7) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((ls) << 20) | \ - ((wb) << 21) | \ - ((b) << 22) | \ - ((u) << 23) | \ - ((p) << 24) | \ - (1 << 25) | \ - ARM_WXFER_TAG | \ - ARM_DEF_COND(cond) - -#define ARM_DEF_WXFER_REG_REG_COND(rm, shift_type, shift, rd, rn, ls, wb, b, p, cond) \ - ARM_DEF_WXFER_REG_REG_UPDOWN_COND(rm, shift_type, shift, rd, rn, ls, wb, b, ARM_UP, p, cond) -#define ARM_DEF_WXFER_REG_MINUS_REG_COND(rm, shift_type, shift, rd, rn, ls, wb, b, p, cond) \ - ARM_DEF_WXFER_REG_REG_UPDOWN_COND(rm, shift_type, shift, rd, rn, ls, wb, b, ARM_DOWN, p, cond) - - -#define ARM_LDR_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_REG_REG_COND(rm, shift_type, shift, rd, rn, ARMOP_LDR, 0, 0, 1, cond)) -#define ARM_LDR_REG_REG_SHIFT(p, rd, rn, rm, shift_type, shift) \ - ARM_LDR_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, ARMCOND_AL) -#define ARM_LDR_REG_REG(p, rd, rn, rm) \ - ARM_LDR_REG_REG_SHIFT(p, rd, rn, rm, ARMSHIFT_LSL, 0) - -#define ARM_LDRB_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_REG_REG_COND(rm, shift_type, shift, rd, rn, ARMOP_LDR, 0, 1, 1, cond)) -#define ARM_LDRB_REG_REG_SHIFT(p, rd, rn, rm, shift_type, shift) \ - ARM_LDRB_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, ARMCOND_AL) -#define ARM_LDRB_REG_REG(p, rd, rn, rm) \ - ARM_LDRB_REG_REG_SHIFT(p, rd, rn, rm, ARMSHIFT_LSL, 0) - -#define ARM_STR_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_REG_REG_COND(rm, shift_type, shift, rd, rn, ARMOP_STR, 0, 0, 1, cond)) -#define ARM_STR_REG_REG_SHIFT(p, rd, rn, rm, shift_type, shift) \ - ARM_STR_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, ARMCOND_AL) -#define ARM_STR_REG_REG(p, rd, rn, rm) \ - ARM_STR_REG_REG_SHIFT(p, rd, rn, rm, ARMSHIFT_LSL, 0) - -/* zero-extend */ -#define ARM_STRB_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, cond) \ - ARM_EMIT(p, ARM_DEF_WXFER_REG_REG_COND(rm, shift_type, shift, rd, rn, ARMOP_STR, 0, 1, 1, cond)) -#define ARM_STRB_REG_REG_SHIFT(p, rd, rn, rm, shift_type, shift) \ - ARM_STRB_REG_REG_SHIFT_COND(p, rd, rn, rm, shift_type, shift, ARMCOND_AL) -#define ARM_STRB_REG_REG(p, rd, rn, rm) \ - ARM_STRB_REG_REG_SHIFT(p, rd, rn, rm, ARMSHIFT_LSL, 0) - - -/* ARMv4+ */ -/* Half-word or byte (signed) transfer. */ -typedef struct { - arminstr_t rm : 4; /* imm_lo */ - arminstr_t tag3 : 1; /* 1 */ - arminstr_t h : 1; /* half-word or byte */ - arminstr_t s : 1; /* sign-extend or zero-extend */ - arminstr_t tag2 : 1; /* 1 */ - arminstr_t imm_hi : 4; - arminstr_t rd : 4; - arminstr_t rn : 4; - arminstr_t ls : 1; - arminstr_t wb : 1; - arminstr_t type : 1; /* imm(1) / reg(0) */ - arminstr_t u : 1; /* +- */ - arminstr_t p : 1; /* pre/post-index */ - arminstr_t tag : 3; - arminstr_t cond : 4; -} ARMInstrHXfer; - -#define ARM_HXFER_ID 0 -#define ARM_HXFER_ID2 1 -#define ARM_HXFER_ID3 1 -#define ARM_HXFER_MASK ((0x7 << 25) | (0x9 << 4)) -#define ARM_HXFER_TAG ((ARM_HXFER_ID << 25) | (ARM_HXFER_ID2 << 7) | (ARM_HXFER_ID3 << 4)) - -#define ARM_DEF_HXFER_IMM_COND(imm, h, s, rd, rn, ls, wb, p, cond) \ - ((imm) < 0?(-(imm)) & 0xF:(imm) & 0xF) | \ - ((h) << 5) | \ - ((s) << 6) | \ - ((imm) < 0?((-(imm)) << 4) & 0xF00:((imm) << 4) & 0xF00) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((ls) << 20) | \ - ((wb) << 21) | \ - (1 << 22) | \ - (((int)(imm) >= 0) << 23) | \ - ((p) << 24) | \ - ARM_HXFER_TAG | \ - ARM_DEF_COND(cond) - -#define ARM_LDRH_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_IMM_COND(imm, 1, 0, rd, rn, ARMOP_LDR, 0, 1, cond)) -#define ARM_LDRH_IMM(p, rd, rn, imm) \ - ARM_LDRH_IMM_COND(p, rd, rn, imm, ARMCOND_AL) -#define ARM_LDRSH_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_IMM_COND(imm, 1, 1, rd, rn, ARMOP_LDR, 0, 1, cond)) -#define ARM_LDRSH_IMM(p, rd, rn, imm) \ - ARM_LDRSH_IMM_COND(p, rd, rn, imm, ARMCOND_AL) -#define ARM_LDRSB_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_IMM_COND(imm, 0, 1, rd, rn, ARMOP_LDR, 0, 1, cond)) -#define ARM_LDRSB_IMM(p, rd, rn, imm) \ - ARM_LDRSB_IMM_COND(p, rd, rn, imm, ARMCOND_AL) - - -#define ARM_STRH_IMM_COND(p, rd, rn, imm, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_IMM_COND(imm, 1, 0, rd, rn, ARMOP_STR, 0, 1, cond)) -#define ARM_STRH_IMM(p, rd, rn, imm) \ - ARM_STRH_IMM_COND(p, rd, rn, imm, ARMCOND_AL) - - -#define ARM_DEF_HXFER_REG_REG_UPDOWN_COND(rm, h, s, rd, rn, ls, wb, u, p, cond) \ - ((rm) & 0xF) | \ - ((h) << 5) | \ - ((s) << 6) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((ls) << 20) | \ - ((wb) << 21) | \ - (0 << 22) | \ - ((u) << 23) | \ - ((p) << 24) | \ - ARM_HXFER_TAG | \ - ARM_DEF_COND(cond) - -#define ARM_DEF_HXFER_REG_REG_COND(rm, h, s, rd, rn, ls, wb, p, cond) \ - ARM_DEF_HXFER_REG_REG_UPDOWN_COND(rm, h, s, rd, rn, ls, wb, ARM_UP, p, cond) -#define ARM_DEF_HXFER_REG_MINUS_REG_COND(rm, h, s, rd, rn, ls, wb, p, cond) \ - ARM_DEF_HXFER_REG_REG_UPDOWN_COND(rm, h, s, rd, rn, ls, wb, ARM_DOWN, p, cond) - -#define ARM_LDRH_REG_REG_COND(p, rd, rm, rn, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_REG_REG_COND(rm, 1, 0, rd, rn, ARMOP_LDR, 0, 1, cond)) -#define ARM_LDRH_REG_REG(p, rd, rm, rn) \ - ARM_LDRH_REG_REG_COND(p, rd, rm, rn, ARMCOND_AL) -#define ARM_LDRSH_REG_REG_COND(p, rd, rm, rn, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_REG_REG_COND(rm, 1, 1, rd, rn, ARMOP_LDR, 0, 1, cond)) -#define ARM_LDRSH_REG_REG(p, rd, rm, rn) \ - ARM_LDRSH_REG_REG_COND(p, rd, rm, rn, ARMCOND_AL) -#define ARM_LDRSB_REG_REG_COND(p, rd, rm, rn, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_REG_REG_COND(rm, 0, 1, rd, rn, ARMOP_LDR, 0, 1, cond)) -#define ARM_LDRSB_REG_REG(p, rd, rm, rn) ARM_LDRSB_REG_REG_COND(p, rd, rm, rn, ARMCOND_AL) - -#define ARM_STRH_REG_REG_COND(p, rd, rm, rn, cond) \ - ARM_EMIT(p, ARM_DEF_HXFER_REG_REG_COND(rm, 1, 0, rd, rn, ARMOP_STR, 0, 1, cond)) -#define ARM_STRH_REG_REG(p, rd, rm, rn) \ - ARM_STRH_REG_REG_COND(p, rd, rm, rn, ARMCOND_AL) - - - -/* Swap */ -typedef struct { - arminstr_t rm : 4; - arminstr_t tag3 : 8; /* 0x9 */ - arminstr_t rd : 4; - arminstr_t rn : 4; - arminstr_t tag2 : 2; - arminstr_t b : 1; - arminstr_t tag : 5; /* 0x2 */ - arminstr_t cond : 4; -} ARMInstrSwap; - -#define ARM_SWP_ID 2 -#define ARM_SWP_ID2 9 -#define ARM_SWP_MASK ((0x1F << 23) | (3 << 20) | (0xFF << 4)) -#define ARM_SWP_TAG ((ARM_SWP_ID << 23) | (ARM_SWP_ID2 << 4)) - - - -/* Software interrupt */ -typedef struct { - arminstr_t num : 24; - arminstr_t tag : 4; - arminstr_t cond : 4; -} ARMInstrSWI; - -#define ARM_SWI_ID 0xF -#define ARM_SWI_MASK (0xF << 24) -#define ARM_SWI_TAG (ARM_SWI_ID << 24) - - - -/* Co-processor Data Processing */ -typedef struct { - arminstr_t crm : 4; - arminstr_t tag2 : 1; /* 0 */ - arminstr_t op2 : 3; - arminstr_t cpn : 4; /* CP number */ - arminstr_t crd : 4; - arminstr_t crn : 4; - arminstr_t op : 4; - arminstr_t tag : 4; /* 0xE */ - arminstr_t cond : 4; -} ARMInstrCDP; - -#define ARM_CDP_ID 0xE -#define ARM_CDP_ID2 0 -#define ARM_CDP_MASK ((0xF << 24) | (1 << 4)) -#define ARM_CDP_TAG ((ARM_CDP_ID << 24) | (ARM_CDP_ID2 << 4)) - - -/* Co-processor Data Transfer (ldc/stc) */ -typedef struct { - arminstr_t offs : 8; - arminstr_t cpn : 4; - arminstr_t crd : 4; - arminstr_t rn : 4; - arminstr_t ls : 1; - arminstr_t wb : 1; - arminstr_t n : 1; - arminstr_t u : 1; - arminstr_t p : 1; - arminstr_t tag : 3; - arminstr_t cond : 4; -} ARMInstrCDT; - -#define ARM_CDT_ID 6 -#define ARM_CDT_MASK (7 << 25) -#define ARM_CDT_TAG (ARM_CDT_ID << 25) - - -/* Co-processor Register Transfer (mcr/mrc) */ -typedef struct { - arminstr_t crm : 4; - arminstr_t tag2 : 1; - arminstr_t op2 : 3; - arminstr_t cpn : 4; - arminstr_t rd : 4; - arminstr_t crn : 4; - arminstr_t ls : 1; - arminstr_t op1 : 3; - arminstr_t tag : 4; - arminstr_t cond : 4; -} ARMInstrCRT; - -#define ARM_CRT_ID 0xE -#define ARM_CRT_ID2 0x1 -#define ARM_CRT_MASK ((0xF << 24) | (1 << 4)) -#define ARM_CRT_TAG ((ARM_CRT_ID << 24) | (ARM_CRT_ID2 << 4)) - -/* Move register to PSR. */ -typedef union { - ARMDPI_op2_imm op2_imm; - struct { - arminstr_t rm : 4; - arminstr_t pad : 8; /* 0 */ - arminstr_t tag4 : 4; /* 0xF */ - arminstr_t fld : 4; - arminstr_t tag3 : 2; /* 0x2 */ - arminstr_t sel : 1; - arminstr_t tag2 : 2; /* 0x2 */ - arminstr_t type : 1; - arminstr_t tag : 2; /* 0 */ - arminstr_t cond : 4; - } all; -} ARMInstrMSR; - -#define ARM_MSR_ID 0 -#define ARM_MSR_ID2 2 -#define ARM_MSR_ID3 2 -#define ARM_MSR_ID4 0xF -#define ARM_MSR_MASK ((3 << 26) | \ - (3 << 23) | \ - (3 << 20) | \ - (0xF << 12)) -#define ARM_MSR_TAG ((ARM_MSR_ID << 26) | \ - (ARM_MSR_ID2 << 23) | \ - (ARM_MSR_ID3 << 20) | \ - (ARM_MSR_ID4 << 12)) - - -/* Move PSR to register. */ -typedef struct { - arminstr_t tag3 : 12; - arminstr_t rd : 4; - arminstr_t tag2 : 6; - arminstr_t sel : 1; /* CPSR | SPSR */ - arminstr_t tag : 5; - arminstr_t cond : 4; -} ARMInstrMRS; - -#define ARM_MRS_ID 2 -#define ARM_MRS_ID2 0xF -#define ARM_MRS_ID3 0 -#define ARM_MRS_MASK ((0x1F << 23) | (0x3F << 16) | 0xFFF) -#define ARM_MRS_TAG ((ARM_MRS_ID << 23) | (ARM_MRS_ID2 << 16) | ARM_MRS_ID3) - - - -#include "mono/arch/arm/arm_dpimacros.h" - -#define ARM_NOP(p) ARM_MOV_REG_REG(p, ARMREG_R0, ARMREG_R0) - - -#define ARM_SHL_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOV_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_LSL, imm, cond) -#define ARM_SHL_IMM(p, rd, rm, imm) \ - ARM_SHL_IMM_COND(p, rd, rm, imm, ARMCOND_AL) -#define ARM_SHLS_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOVS_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_LSL, imm, cond) -#define ARM_SHLS_IMM(p, rd, rm, imm) \ - ARM_SHLS_IMM_COND(p, rd, rm, imm, ARMCOND_AL) - -#define ARM_SHR_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOV_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_LSR, imm, cond) -#define ARM_SHR_IMM(p, rd, rm, imm) \ - ARM_SHR_IMM_COND(p, rd, rm, imm, ARMCOND_AL) -#define ARM_SHRS_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOVS_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_LSR, imm, cond) -#define ARM_SHRS_IMM(p, rd, rm, imm) \ - ARM_SHRS_IMM_COND(p, rd, rm, imm, ARMCOND_AL) - -#define ARM_SAR_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOV_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_ASR, imm, cond) -#define ARM_SAR_IMM(p, rd, rm, imm) \ - ARM_SAR_IMM_COND(p, rd, rm, imm, ARMCOND_AL) -#define ARM_SARS_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOVS_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_ASR, imm, cond) -#define ARM_SARS_IMM(p, rd, rm, imm) \ - ARM_SARS_IMM_COND(p, rd, rm, imm, ARMCOND_AL) - -#define ARM_ROR_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOV_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_ROR, imm, cond) -#define ARM_ROR_IMM(p, rd, rm, imm) \ - ARM_ROR_IMM_COND(p, rd, rm, imm, ARMCOND_AL) -#define ARM_RORS_IMM_COND(p, rd, rm, imm, cond) \ - ARM_MOVS_REG_IMMSHIFT_COND(p, rd, rm, ARMSHIFT_ROR, imm, cond) -#define ARM_RORS_IMM(p, rd, rm, imm) \ - ARM_RORS_IMM_COND(p, rd, rm, imm, ARMCOND_AL) - -#define ARM_SHL_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOV_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_LSL, rs, cond) -#define ARM_SHL_REG(p, rd, rm, rs) \ - ARM_SHL_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_SHLS_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOVS_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_LSL, rs, cond) -#define ARM_SHLS_REG(p, rd, rm, rs) \ - ARM_SHLS_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_SHLS_REG_REG(p, rd, rm, rs) ARM_SHLS_REG(p, rd, rm, rs) - -#define ARM_SHR_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOV_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_LSR, rs, cond) -#define ARM_SHR_REG(p, rd, rm, rs) \ - ARM_SHR_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_SHRS_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOVS_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_LSR, rs, cond) -#define ARM_SHRS_REG(p, rd, rm, rs) \ - ARM_SHRS_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_SHRS_REG_REG(p, rd, rm, rs) ARM_SHRS_REG(p, rd, rm, rs) - -#define ARM_SAR_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOV_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_ASR, rs, cond) -#define ARM_SAR_REG(p, rd, rm, rs) \ - ARM_SAR_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_SARS_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOVS_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_ASR, rs, cond) -#define ARM_SARS_REG(p, rd, rm, rs) \ - ARM_SARS_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_SARS_REG_REG(p, rd, rm, rs) ARM_SARS_REG(p, rd, rm, rs) - -#define ARM_ROR_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOV_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_ROR, rs, cond) -#define ARM_ROR_REG(p, rd, rm, rs) \ - ARM_ROR_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_RORS_REG_COND(p, rd, rm, rs, cond) \ - ARM_MOVS_REG_REGSHIFT_COND(p, rd, rm, ARMSHIFT_ROR, rs, cond) -#define ARM_RORS_REG(p, rd, rm, rs) \ - ARM_RORS_REG_COND(p, rd, rm, rs, ARMCOND_AL) -#define ARM_RORS_REG_REG(p, rd, rm, rs) ARM_RORS_REG(p, rd, rm, rs) - -#ifdef __native_client_codegen__ -#define ARM_DBRK(p) ARM_EMIT(p, 0xE7FEDEF0) -#else -#define ARM_DBRK(p) ARM_EMIT(p, 0xE6000010) -#endif -#define ARM_IASM_DBRK() ARM_IASM_EMIT(0xE6000010) - -#define ARM_INC(p, reg) ARM_ADD_REG_IMM8(p, reg, reg, 1) -#define ARM_DEC(p, reg) ARM_SUB_REG_IMM8(p, reg, reg, 1) - -#define ARM_MLS(p, rd, rn, rm, ra) ARM_EMIT((p), (ARMCOND_AL << 28) | (0x6 << 20) | ((rd) << 16) | ((ra) << 12) | ((rm) << 8) | (0x9 << 4) | ((rn) << 0)) - -/* ARM V5 */ - -/* Count leading zeros, CLZ{cond} Rd, Rm */ -typedef struct { - arminstr_t rm : 4; - arminstr_t tag2 : 8; - arminstr_t rd : 4; - arminstr_t tag : 12; - arminstr_t cond : 4; -} ARMInstrCLZ; - -#define ARM_CLZ_ID 0x16F -#define ARM_CLZ_ID2 0xF1 -#define ARM_CLZ_MASK ((0xFFF << 16) | (0xFF < 4)) -#define ARM_CLZ_TAG ((ARM_CLZ_ID << 16) | (ARM_CLZ_ID2 << 4)) - - - - -typedef union { - ARMInstrBR br; - ARMInstrDPI dpi; - ARMInstrMRT mrt; - ARMInstrMul mul; - ARMInstrWXfer wxfer; - ARMInstrHXfer hxfer; - ARMInstrSwap swp; - ARMInstrCDP cdp; - ARMInstrCDT cdt; - ARMInstrCRT crt; - ARMInstrSWI swi; - ARMInstrMSR msr; - ARMInstrMRS mrs; - ARMInstrCLZ clz; - - ARMInstrGeneric generic; - arminstr_t raw; -} ARMInstr; - -/* ARMv6t2 */ - -#define ARM_MOVW_REG_IMM_COND(p, rd, imm16, cond) ARM_EMIT(p, (((cond) << 28) | (3 << 24) | (0 << 20) | ((((guint32)(imm16)) >> 12) << 16) | ((rd) << 12) | (((guint32)(imm16)) & 0xfff))) -#define ARM_MOVW_REG_IMM(p, rd, imm16) ARM_MOVW_REG_IMM_COND ((p), (rd), (imm16), ARMCOND_AL) - -#define ARM_MOVT_REG_IMM_COND(p, rd, imm16, cond) ARM_EMIT(p, (((cond) << 28) | (3 << 24) | (4 << 20) | ((((guint32)(imm16)) >> 12) << 16) | ((rd) << 12) | (((guint32)(imm16)) & 0xfff))) -#define ARM_MOVT_REG_IMM(p, rd, imm16) ARM_MOVT_REG_IMM_COND ((p), (rd), (imm16), ARMCOND_AL) - -/* MCR */ -#define ARM_DEF_MCR_COND(coproc, opc1, rt, crn, crm, opc2, cond) \ - ARM_DEF_COND ((cond)) | ((0xe << 24) | (((opc1) & 0x7) << 21) | (0 << 20) | (((crn) & 0xf) << 16) | (((rt) & 0xf) << 12) | (((coproc) & 0xf) << 8) | (((opc2) & 0x7) << 5) | (1 << 4) | (((crm) & 0xf) << 0)) - -#define ARM_MCR_COND(p, coproc, opc1, rt, crn, crm, opc2, cond) \ - ARM_EMIT(p, ARM_DEF_MCR_COND ((coproc), (opc1), (rt), (crn), (crm), (opc2), (cond))) - -#define ARM_MCR(p, coproc, opc1, rt, crn, crm, opc2) \ - ARM_MCR_COND ((p), (coproc), (opc1), (rt), (crn), (crm), (opc2), ARMCOND_AL) - -/* ARMv7VE */ -#define ARM_SDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x1 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0))) -#define ARM_SDIV(p, rd, rn, rm) ARM_SDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL) - -#define ARM_UDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x3 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0))) -#define ARM_UDIV(p, rd, rn, rm) ARM_UDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL) - -/* ARMv7 */ - -typedef enum { - ARM_DMB_SY = 0xf, -} ArmDmbFlags; - -#define ARM_DMB(p, option) ARM_EMIT ((p), ((0xf << 28) | (0x57 << 20) | (0xf << 16) | (0xf << 12) | (0x0 << 8) | (0x5 << 4) | ((option) << 0))) - -#define ARM_LDREX_REG(p, rt, rn) ARM_EMIT ((p), ((ARMCOND_AL << 28) | (0xc << 21) | (0x1 << 20) | ((rn) << 16) | ((rt) << 12)) | (0xf << 8) | (0x9 << 4) | 0xf << 0) - -#define ARM_STREX_REG(p, rd, rt, rn) ARM_EMIT ((p), ((ARMCOND_AL << 28) | (0xc << 21) | (0x0 << 20) | ((rn) << 16) | ((rd) << 12)) | (0xf << 8) | (0x9 << 4) | ((rt) << 0)) - -#ifdef __cplusplus -} -#endif - -#endif /* ARM_H */ - diff --git a/FFTS/Sources/FFTS/src/arch/arm/arm-dis.c b/FFTS/Sources/FFTS/src/arch/arm/arm-dis.c deleted file mode 100644 index 5074f26..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/arm-dis.c +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2002 Sergey Chaban - */ - - -#include - -#include "arm-dis.h" -#include "arm-codegen.h" - - -static ARMDis* gdisasm = NULL; - -static int use_reg_alias = 1; - -const static char* cond[] = { - "eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc", - "hi", "ls", "ge", "lt", "gt", "le", "", "nv" -}; - -const static char* ops[] = { - "and", "eor", "sub", "rsb", "add", "adc", "sbc", "rsc", - "tst", "teq", "cmp", "cmn", "orr", "mov", "bic", "mvn" -}; - -const static char* shift_types[] = {"lsl", "lsr", "asr", "ror"}; - -const static char* mul_ops[] = { - "mul", "mla", "?", "?", "umull", "umlal", "smull", "smlal" -}; - -const static char* reg_alias[] = { - "a1", "a2", "a3", "a4", - "r4", "r5", "r6", "r7", "r8", "r9", "r10", - "fp", "ip", "sp", "lr", "pc" -}; - -const static char* msr_fld[] = {"f", "c", "x", "?", "s"}; - - -/* private functions prototypes (to keep compiler happy) */ -void chk_out(ARMDis* dis); -void dump_reg(ARMDis* dis, int reg); -void dump_creg(ARMDis* dis, int creg); -void dump_reglist(ARMDis* dis, int reg_list); -void init_gdisasm(void); - -void dump_br(ARMDis* dis, ARMInstr i); -void dump_cdp(ARMDis* dis, ARMInstr i); -void dump_cdt(ARMDis* dis, ARMInstr i); -void dump_crt(ARMDis* dis, ARMInstr i); -void dump_dpi(ARMDis* dis, ARMInstr i); -void dump_hxfer(ARMDis* dis, ARMInstr i); -void dump_mrs(ARMDis* dis, ARMInstr i); -void dump_mrt(ARMDis* dis, ARMInstr i); -void dump_msr(ARMDis* dis, ARMInstr i); -void dump_mul(ARMDis* dis, ARMInstr i); -void dump_swi(ARMDis* dis, ARMInstr i); -void dump_swp(ARMDis* dis, ARMInstr i); -void dump_wxfer(ARMDis* dis, ARMInstr i); -void dump_clz(ARMDis* dis, ARMInstr i); - - -/* -void out(ARMDis* dis, const char* format, ...) { - va_list arglist; - va_start(arglist, format); - fprintf(dis->dis_out, format, arglist); - va_end(arglist); -} -*/ - - -void chk_out(ARMDis* dis) { - if (dis != NULL && dis->dis_out == NULL) dis->dis_out = stdout; -} - - -void armdis_set_output(ARMDis* dis, FILE* f) { - if (dis != NULL) { - dis->dis_out = f; - chk_out(dis); - } -} - -FILE* armdis_get_output(ARMDis* dis) { - return (dis != NULL ? dis->dis_out : NULL); -} - - - - -void dump_reg(ARMDis* dis, int reg) { - reg &= 0xF; - if (!use_reg_alias || (reg > 3 && reg < 11)) { - fprintf(dis->dis_out, "r%d", reg); - } else { - fprintf(dis->dis_out, "%s", reg_alias[reg]); - } -} - -void dump_creg(ARMDis* dis, int creg) { - if (dis != NULL) { - creg &= 0xF; - fprintf(dis->dis_out, "c%d", creg); - } -} - -void dump_reglist(ARMDis* dis, int reg_list) { - int i = 0, j, n = 0; - int m1 = 1, m2, rn; - while (i < 16) { - if ((reg_list & m1) != 0) { - if (n != 0) fprintf(dis->dis_out, ", "); - n++; - dump_reg(dis, i); - for (j = i+1, rn = 0, m2 = m1<<1; j < 16; ++j, m2<<=1) { - if ((reg_list & m2) != 0) ++rn; - else break; - } - i+=rn; - if (rn > 1) { - fprintf(dis->dis_out, "-"); - dump_reg(dis, i); - } else if (rn == 1) { - fprintf(dis->dis_out, ", "); - dump_reg(dis, i); - } - m1<<=(rn+1); - i++; - } else { - ++i; - m1<<=1; - } - } -} - - -void dump_br(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "b%s%s\t%x\t; %p -> %#x", - (i.br.link == 1) ? "l" : "", - cond[i.br.cond], i.br.offset, dis->pi, (int)dis->pi + 4*2 + ((int)(i.br.offset << 8) >> 6)); -} - - -void dump_dpi(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "%s%s", ops[i.dpi.all.opcode], cond[i.dpi.all.cond]); - - if ((i.dpi.all.opcode < ARMOP_TST || i.dpi.all.opcode > ARMOP_CMN) && (i.dpi.all.s != 0)) { - fprintf(dis->dis_out, "s"); - } - - fprintf(dis->dis_out, "\t"); - - if ((i.dpi.all.opcode < ARMOP_TST) || (i.dpi.all.opcode > ARMOP_CMN)) { - /* for comparison operations Rd is ignored */ - dump_reg(dis, i.dpi.all.rd); - fprintf(dis->dis_out, ", "); - } - - if ((i.dpi.all.opcode != ARMOP_MOV) && (i.dpi.all.opcode != ARMOP_MVN)) { - /* for MOV/MVN Rn is ignored */ - dump_reg(dis, i.dpi.all.rn); - fprintf(dis->dis_out, ", "); - } - - if (i.dpi.all.type == 1) { - /* immediate */ - if (i.dpi.op2_imm.rot != 0) { - fprintf(dis->dis_out, "#%d, %d\t; 0x%x", i.dpi.op2_imm.imm, i.dpi.op2_imm.rot << 1, - ARM_SCALE(i.dpi.op2_imm.imm, (i.dpi.op2_imm.rot << 1)) ); - } else { - fprintf(dis->dis_out, "#%d\t; 0x%x", i.dpi.op2_imm.imm, i.dpi.op2_imm.imm); - } - } else { - /* reg-reg */ - if (i.dpi.op2_reg.tag == 0) { - /* op2 is reg shift by imm */ - dump_reg(dis, i.dpi.op2_reg_imm.r2.rm); - if (i.dpi.op2_reg_imm.imm.shift != 0) { - fprintf(dis->dis_out, " %s #%d", shift_types[i.dpi.op2_reg_imm.r2.type], i.dpi.op2_reg_imm.imm.shift); - } - } else { - /* op2 is reg shift by reg */ - dump_reg(dis, i.dpi.op2_reg_reg.r2.rm); - fprintf(dis->dis_out, " %s ", shift_types[i.dpi.op2_reg_reg.r2.type]); - dump_reg(dis, i.dpi.op2_reg_reg.reg.rs); - } - - } -} - -void dump_wxfer(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "%s%s%s%s\t", - (i.wxfer.all.ls == 0) ? "str" : "ldr", - cond[i.generic.cond], - (i.wxfer.all.b == 0) ? "" : "b", - (i.wxfer.all.ls != 0 && i.wxfer.all.wb != 0) ? "t" : ""); - dump_reg(dis, i.wxfer.all.rd); - fprintf(dis->dis_out, ", ["); - dump_reg(dis, i.wxfer.all.rn); - fprintf(dis->dis_out, "%s, ", (i.wxfer.all.p == 0) ? "]" : ""); - - if (i.wxfer.all.type == 0) { /* imm */ - fprintf(dis->dis_out, "#%s%d", (i.wxfer.all.u == 0) ? "-" : "", i.wxfer.all.op2_imm); - } else { - dump_reg(dis, i.wxfer.op2_reg_imm.r2.rm); - if (i.wxfer.op2_reg_imm.imm.shift != 0) { - fprintf(dis->dis_out, " %s #%d", shift_types[i.wxfer.op2_reg_imm.r2.type], i.wxfer.op2_reg_imm.imm.shift); - } - } - - if (i.wxfer.all.p != 0) { - /* close pre-index instr, also check for write-back */ - fprintf(dis->dis_out, "]%s", (i.wxfer.all.wb != 0) ? "!" : ""); - } -} - -void dump_hxfer(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "%s%s%s%s\t", - (i.hxfer.ls == 0) ? "str" : "ldr", - cond[i.generic.cond], - (i.hxfer.s != 0) ? "s" : "", - (i.hxfer.h != 0) ? "h" : "b"); - dump_reg(dis, i.hxfer.rd); - fprintf(dis->dis_out, ", ["); - dump_reg(dis, i.hxfer.rn); - fprintf(dis->dis_out, "%s, ", (i.hxfer.p == 0) ? "]" : ""); - - if (i.hxfer.type != 0) { /* imm */ - fprintf(dis->dis_out, "#%s%d", (i.hxfer.u == 0) ? "-" : "", (i.hxfer.imm_hi << 4) | i.hxfer.rm); - } else { - dump_reg(dis, i.hxfer.rm); - } - - if (i.hxfer.p != 0) { - /* close pre-index instr, also check for write-back */ - fprintf(dis->dis_out, "]%s", (i.hxfer.wb != 0) ? "!" : ""); - } -} - - -void dump_mrt(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "%s%s%s%s\t", (i.mrt.ls == 0) ? "stm" : "ldm", cond[i.mrt.cond], - (i.mrt.u == 0) ? "d" : "i", (i.mrt.p == 0) ? "a" : "b"); - dump_reg(dis, i.mrt.rn); - fprintf(dis->dis_out, "%s, {", (i.mrt.wb != 0) ? "!" : ""); - dump_reglist(dis, i.mrt.reg_list); - fprintf(dis->dis_out, "}"); -} - - -void dump_swp(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "swp%s%s ", cond[i.swp.cond], (i.swp.b != 0) ? "b" : ""); - dump_reg(dis, i.swp.rd); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.swp.rm); - fprintf(dis->dis_out, ", ["); - dump_reg(dis, i.swp.rn); - fprintf(dis->dis_out, "]"); -} - - -void dump_mul(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "%s%s%s\t", mul_ops[i.mul.opcode], cond[i.mul.cond], (i.mul.s != 0) ? "s" : ""); - switch (i.mul.opcode) { - case ARMOP_MUL: - dump_reg(dis, i.mul.rd); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rm); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rs); - break; - case ARMOP_MLA: - dump_reg(dis, i.mul.rd); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rm); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rs); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rn); - break; - case ARMOP_UMULL: - case ARMOP_UMLAL: - case ARMOP_SMULL: - case ARMOP_SMLAL: - dump_reg(dis, i.mul.rd); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rn); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rm); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.mul.rs); - break; - default: - fprintf(dis->dis_out, "DCD 0x%x\t; ", i.raw); - break; - } -} - - -void dump_cdp(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "cdp%s\tp%d, %d, ", cond[i.generic.cond], i.cdp.cpn, i.cdp.op); - dump_creg(dis, i.cdp.crd); - fprintf(dis->dis_out, ", "); - dump_creg(dis, i.cdp.crn); - fprintf(dis->dis_out, ", "); - dump_creg(dis, i.cdp.crm); - - if (i.cdp.op2 != 0) { - fprintf(dis->dis_out, ", %d", i.cdp.op2); - } -} - - -void dump_cdt(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "%s%s%s\tp%d, ", (i.cdt.ls == 0) ? "stc" : "ldc", - cond[i.generic.cond], (i.cdt.n != 0) ? "l" : "", i.cdt.cpn); - dump_creg(dis, i.cdt.crd); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.cdt.rn); - - if (i.cdt.p == 0) { - fprintf(dis->dis_out, "]"); - } - - if (i.cdt.offs != 0) { - fprintf(dis->dis_out, ", #%d", i.cdt.offs); - } - - if (i.cdt.p != 0) { - fprintf(dis->dis_out, "]%s", (i.cdt.wb != 0) ? "!" : ""); - } -} - - -void dump_crt(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "%s%s\tp%d, %d, ", (i.crt.ls == 0) ? "mrc" : "mcr", - cond[i.generic.cond], i.crt.cpn, i.crt.op1); - dump_reg(dis, i.crt.rd); - fprintf(dis->dis_out, ", "); - dump_creg(dis, i.crt.crn); - fprintf(dis->dis_out, ", "); - dump_creg(dis, i.crt.crm); - - if (i.crt.op2 != 0) { - fprintf(dis->dis_out, ", %d", i.crt.op2); - } -} - - -void dump_msr(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "msr%s\t%spsr_, ", cond[i.generic.cond], - (i.msr.all.sel == 0) ? "s" : "c"); - if (i.msr.all.type == 0) { - /* reg */ - fprintf(dis->dis_out, "%s, ", msr_fld[i.msr.all.fld]); - dump_reg(dis, i.msr.all.rm); - } else { - /* imm */ - fprintf(dis->dis_out, "f, #%d", i.msr.op2_imm.imm << i.msr.op2_imm.rot); - } -} - - -void dump_mrs(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "mrs%s\t", cond[i.generic.cond]); - dump_reg(dis, i.mrs.rd); - fprintf(dis->dis_out, ", %spsr", (i.mrs.sel == 0) ? "s" : "c"); -} - - -void dump_swi(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "swi%s\t%d", cond[i.generic.cond], i.swi.num); -} - - -void dump_clz(ARMDis* dis, ARMInstr i) { - fprintf(dis->dis_out, "clz\t"); - dump_reg(dis, i.clz.rd); - fprintf(dis->dis_out, ", "); - dump_reg(dis, i.clz.rm); - fprintf(dis->dis_out, "\n"); -} - - - -void armdis_decode(ARMDis* dis, void* p, int size) { - int i; - arminstr_t* pi = (arminstr_t*)p; - ARMInstr instr; - - if (dis == NULL) return; - - chk_out(dis); - - size/=sizeof(arminstr_t); - - for (i=0; idis_out, "%p:\t%08x\t", pi, *pi); - dis->pi = pi; - instr.raw = *pi++; - - if ((instr.raw & ARM_BR_MASK) == ARM_BR_TAG) { - dump_br(dis, instr); - } else if ((instr.raw & ARM_SWP_MASK) == ARM_SWP_TAG) { - dump_swp(dis, instr); - } else if ((instr.raw & ARM_MUL_MASK) == ARM_MUL_TAG) { - dump_mul(dis, instr); - } else if ((instr.raw & ARM_CLZ_MASK) == ARM_CLZ_TAG) { - dump_clz(dis, instr); - } else if ((instr.raw & ARM_WXFER_MASK) == ARM_WXFER_TAG) { - dump_wxfer(dis, instr); - } else if ((instr.raw & ARM_HXFER_MASK) == ARM_HXFER_TAG) { - dump_hxfer(dis, instr); - } else if ((instr.raw & ARM_DPI_MASK) == ARM_DPI_TAG) { - dump_dpi(dis, instr); - } else if ((instr.raw & ARM_MRT_MASK) == ARM_MRT_TAG) { - dump_mrt(dis, instr); - } else if ((instr.raw & ARM_CDP_MASK) == ARM_CDP_TAG) { - dump_cdp(dis, instr); - } else if ((instr.raw & ARM_CDT_MASK) == ARM_CDT_TAG) { - dump_cdt(dis, instr); - } else if ((instr.raw & ARM_CRT_MASK) == ARM_CRT_TAG) { - dump_crt(dis, instr); - } else if ((instr.raw & ARM_MSR_MASK) == ARM_MSR_TAG) { - dump_msr(dis, instr); - } else if ((instr.raw & ARM_MRS_MASK) == ARM_MRS_TAG) { - dump_mrs(dis, instr); - } else if ((instr.raw & ARM_SWI_MASK) == ARM_SWI_TAG) { - dump_swi(dis, instr); - } else { - fprintf(dis->dis_out, "DCD 0x%x\t; ", instr.raw); - } - - fprintf(dis->dis_out, "\n"); - } -} - - -void armdis_open(ARMDis* dis, const char* dump_name) { - if (dis != NULL && dump_name != NULL) { - armdis_set_output(dis, fopen(dump_name, "w")); - } -} - - -void armdis_close(ARMDis* dis) { - if (dis->dis_out != NULL && dis->dis_out != stdout && dis->dis_out != stderr) { - fclose(dis->dis_out); - dis->dis_out = NULL; - } -} - - -void armdis_dump(ARMDis* dis, const char* dump_name, void* p, int size) { - armdis_open(dis, dump_name); - armdis_decode(dis, p, size); - armdis_close(dis); -} - - -void armdis_init(ARMDis* dis) { - if (dis != NULL) { - /* set to stdout */ - armdis_set_output(dis, NULL); - } -} - - - - -void init_gdisasm() { - if (gdisasm == NULL) { - gdisasm = (ARMDis*)malloc(sizeof(ARMDis)); - armdis_init(gdisasm); - } -} - -void _armdis_set_output(FILE* f) { - init_gdisasm(); - armdis_set_output(gdisasm, f); -} - -FILE* _armdis_get_output() { - init_gdisasm(); - return armdis_get_output(gdisasm); -} - -void _armdis_decode(void* p, int size) { - init_gdisasm(); - armdis_decode(gdisasm, p, size); -} - -void _armdis_open(const char* dump_name) { - init_gdisasm(); - armdis_open(gdisasm, dump_name); -} - -void _armdis_close() { - init_gdisasm(); - armdis_close(gdisasm); -} - -void _armdis_dump(const char* dump_name, void* p, int size) { - init_gdisasm(); - armdis_dump(gdisasm, dump_name, p, size); -} - diff --git a/FFTS/Sources/FFTS/src/arch/arm/arm-dis.h b/FFTS/Sources/FFTS/src/arch/arm/arm-dis.h deleted file mode 100644 index 8019499..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/arm-dis.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2002 Sergey Chaban - */ - -#ifndef ARM_DIS -#define ARM_DIS - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _ARMDis { - FILE* dis_out; - void* pi; -} ARMDis; - - -void _armdis_set_output(FILE* f); -FILE* _armdis_get_output(void); -void _armdis_decode(void* p, int size); -void _armdis_open(const char* dump_name); -void _armdis_close(void); -void _armdis_dump(const char* dump_name, void* p, int size); - - -void armdis_init(ARMDis* dis); -void armdis_set_output(ARMDis* dis, FILE* f); -FILE* armdis_get_output(ARMDis* dis); -void armdis_decode(ARMDis* dis, void* p, int size); -void armdis_open(ARMDis* dis, const char* dump_name); -void armdis_close(ARMDis* dis); -void armdis_dump(ARMDis* dis, const char* dump_name, void* p, int size); - -#ifdef __cplusplus -} -#endif - -#endif /* ARM_DIS */ diff --git a/FFTS/Sources/FFTS/src/arch/arm/arm-vfp-codegen.h b/FFTS/Sources/FFTS/src/arch/arm/arm-vfp-codegen.h deleted file mode 100644 index 8b56b00..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/arm-vfp-codegen.h +++ /dev/null @@ -1,247 +0,0 @@ -// -// Copyright 2011 Xamarin Inc -// - -#ifndef __MONO_ARM_VFP_CODEGEN_H__ -#define __MONO_ARM_VFP_CODEGEN_H__ - -#include "arm-codegen.h" - -enum { - /* VFP registers */ - ARM_VFP_F0, - ARM_VFP_F1, - ARM_VFP_F2, - ARM_VFP_F3, - ARM_VFP_F4, - ARM_VFP_F5, - ARM_VFP_F6, - ARM_VFP_F7, - ARM_VFP_F8, - ARM_VFP_F9, - ARM_VFP_F10, - ARM_VFP_F11, - ARM_VFP_F12, - ARM_VFP_F13, - ARM_VFP_F14, - ARM_VFP_F15, - ARM_VFP_F16, - ARM_VFP_F17, - ARM_VFP_F18, - ARM_VFP_F19, - ARM_VFP_F20, - ARM_VFP_F21, - ARM_VFP_F22, - ARM_VFP_F23, - ARM_VFP_F24, - ARM_VFP_F25, - ARM_VFP_F26, - ARM_VFP_F27, - ARM_VFP_F28, - ARM_VFP_F29, - ARM_VFP_F30, - ARM_VFP_F31, - - ARM_VFP_D0 = ARM_VFP_F0, - ARM_VFP_D1 = ARM_VFP_F2, - ARM_VFP_D2 = ARM_VFP_F4, - ARM_VFP_D3 = ARM_VFP_F6, - ARM_VFP_D4 = ARM_VFP_F8, - ARM_VFP_D5 = ARM_VFP_F10, - ARM_VFP_D6 = ARM_VFP_F12, - ARM_VFP_D7 = ARM_VFP_F14, - ARM_VFP_D8 = ARM_VFP_F16, - ARM_VFP_D9 = ARM_VFP_F18, - ARM_VFP_D10 = ARM_VFP_F20, - ARM_VFP_D11 = ARM_VFP_F22, - ARM_VFP_D12 = ARM_VFP_F24, - ARM_VFP_D13 = ARM_VFP_F26, - ARM_VFP_D14 = ARM_VFP_F28, - ARM_VFP_D15 = ARM_VFP_F30, - - ARM_VFP_COPROC_SINGLE = 10, - ARM_VFP_COPROC_DOUBLE = 11, - -#define ARM_VFP_OP(p,q,r,s) (((p) << 23) | ((q) << 21) | ((r) << 20) | ((s) << 6)) -#define ARM_VFP_OP2(Fn,N) (ARM_VFP_OP (1,1,1,1) | ((Fn) << 16) | ((N) << 7)) - - ARM_VFP_MUL = ARM_VFP_OP (0,1,0,0), - ARM_VFP_NMUL = ARM_VFP_OP (0,1,0,1), - ARM_VFP_ADD = ARM_VFP_OP (0,1,1,0), - ARM_VFP_SUB = ARM_VFP_OP (0,1,1,1), - ARM_VFP_DIV = ARM_VFP_OP (1,0,0,0), - - ARM_VFP_CPY = ARM_VFP_OP2 (0,0), - ARM_VFP_ABS = ARM_VFP_OP2 (0,1), - ARM_VFP_NEG = ARM_VFP_OP2 (1,0), - ARM_VFP_SQRT = ARM_VFP_OP2 (1,1), - ARM_VFP_CMP = ARM_VFP_OP2 (4,0), - ARM_VFP_CMPE = ARM_VFP_OP2 (4,1), - ARM_VFP_CMPZ = ARM_VFP_OP2 (5,0), - ARM_VFP_CMPEZ = ARM_VFP_OP2 (5,1), - ARM_VFP_CVT = ARM_VFP_OP2 (7,1), - ARM_VFP_UITO = ARM_VFP_OP2 (8,0), - ARM_VFP_SITO = ARM_VFP_OP2 (8,1), - ARM_VFP_TOUI = ARM_VFP_OP2 (12,0), - ARM_VFP_TOSI = ARM_VFP_OP2 (13,0), - ARM_VFP_TOUIZ = ARM_VFP_OP2 (12,1), - ARM_VFP_TOSIZ = ARM_VFP_OP2 (13,1), - - ARM_VFP_SID = 0, - ARM_VFP_SCR = 1 << 1, - ARM_VFP_EXC = 8 << 1 -}; - -#define ARM_DEF_VFP_DYADIC(cond,cp,op,Fd,Fn,Fm) \ - (14 << 24) | \ - ((cp) << 8) | \ - (op) | \ - (((Fd) >> 1) << 12) | \ - (((Fd) & 1) << 22) | \ - (((Fn) >> 1) << 16) | \ - (((Fn) & 1) << 7) | \ - (((Fm) >> 1) << 0) | \ - (((Fm) & 1) << 5) | \ - ARM_DEF_COND(cond) - -#define ARM_DEF_VFP_MONADIC(cond,cp,op,Fd,Fm) \ - (14 << 24) | \ - ((cp) << 8) | \ - (op) | \ - (((Fd) >> 1) << 12) | \ - (((Fd) & 1) << 22) | \ - (((Fm) >> 1) << 0) | \ - (((Fm) & 1) << 5) | \ - ARM_DEF_COND(cond) - -#define ARM_DEF_VFP_LSF(cond,cp,post,ls,wback,basereg,Fd,offset) \ - ((offset) >= 0? (offset)>>2: -(offset)>>2) | \ - (6 << 25) | \ - ((cp) << 8) | \ - (((Fd) >> 1) << 12) | \ - (((Fd) & 1) << 22) | \ - ((basereg) << 16) | \ - ((ls) << 20) | \ - ((wback) << 21) | \ - (((offset) >= 0) << 23) | \ - ((wback) << 21) | \ - ((post) << 24) | \ - ARM_DEF_COND(cond) - -#define ARM_DEF_VFP_CPT(cond,cp,op,L,Fn,Rd) \ - (14 << 24) | \ - (1 << 4) | \ - ((cp) << 8) | \ - ((op) << 21) | \ - ((L) << 20) | \ - ((Rd) << 12) | \ - (((Fn) >> 1) << 16) | \ - (((Fn) & 1) << 7) | \ - ARM_DEF_COND(cond) - -/* FP load and stores */ -#define ARM_FLDS_COND(p,freg,base,offset,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_LSF((cond),ARM_VFP_COPROC_SINGLE,1,ARMOP_LDR,0,(base),(freg),(offset))) -#define ARM_FLDS(p,freg,base,offset) \ - ARM_FLDS_COND(p,freg,base,offset,ARMCOND_AL) - -#define ARM_FLDD_COND(p,freg,base,offset,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_LSF((cond),ARM_VFP_COPROC_DOUBLE,1,ARMOP_LDR,0,(base),(freg),(offset))) -#define ARM_FLDD(p,freg,base,offset) \ - ARM_FLDD_COND(p,freg,base,offset,ARMCOND_AL) - -#define ARM_FSTS_COND(p,freg,base,offset,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_LSF((cond),ARM_VFP_COPROC_SINGLE,1,ARMOP_STR,0,(base),(freg),(offset))) -#define ARM_FSTS(p,freg,base,offset) \ - ARM_FSTS_COND(p,freg,base,offset,ARMCOND_AL) - -#define ARM_FSTD_COND(p,freg,base,offset,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_LSF((cond),ARM_VFP_COPROC_DOUBLE,1,ARMOP_STR,0,(base),(freg),(offset))) -#define ARM_FSTD(p,freg,base,offset) \ - ARM_FSTD_COND(p,freg,base,offset,ARMCOND_AL) - -#define ARM_FLDMD_COND(p,first_reg,nregs,base,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_LSF((cond),ARM_VFP_COPROC_DOUBLE,0,ARMOP_LDR,0,(base),(first_reg),((nregs) * 2) << 2)) - -#define ARM_FLDMD(p,first_reg,nregs,base) \ - ARM_FLDMD_COND(p,first_reg,nregs,base,ARMCOND_AL) - -#define ARM_FSTMD_COND(p,first_reg,nregs,base,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_LSF((cond),ARM_VFP_COPROC_DOUBLE,0,ARMOP_STR,0,(base),(first_reg),((nregs) * 2) << 2)) - -#define ARM_FSTMD(p,first_reg,nregs,base) \ - ARM_FSTMD_COND(p,first_reg,nregs,base,ARMCOND_AL) - -#include - -/* coprocessor register transfer */ -#define ARM_FMSR(p,freg,reg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_SINGLE,0,0,(freg),(reg))) -#define ARM_FMRS(p,reg,freg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_SINGLE,0,1,(freg),(reg))) - -#define ARM_FMDLR(p,freg,reg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_DOUBLE,0,0,(freg),(reg))) -#define ARM_FMRDL(p,reg,freg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_DOUBLE,0,1,(freg),(reg))) -#define ARM_FMDHR(p,freg,reg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_DOUBLE,1,0,(freg),(reg))) -#define ARM_FMRDH(p,reg,freg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_DOUBLE,1,1,(freg),(reg))) - -#define ARM_FMXR(p,freg,reg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_SINGLE,7,0,(freg),(reg))) -#define ARM_FMRX(p,reg,fcreg) \ - ARM_EMIT((p), ARM_DEF_VFP_CPT(ARMCOND_AL,ARM_VFP_COPROC_SINGLE,7,1,(fcreg),(reg))) - -#define ARM_FMSTAT(p) \ - ARM_FMRX((p),ARMREG_R15,ARM_VFP_SCR) - -#define ARM_DEF_MCRR(cond,cp,rn,rd,Fm,M) \ - ((Fm) << 0) | \ - (1 << 4) | \ - ((M) << 5) | \ - ((cp) << 8) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((2) << 21) | \ - (12 << 24) | \ - ARM_DEF_COND(cond) - -#define ARM_FMDRR(p,rd,rn,dm) \ - ARM_EMIT((p), ARM_DEF_MCRR(ARMCOND_AL,ARM_VFP_COPROC_DOUBLE,(rn),(rd),(dm) >> 1, (dm) & 1)) - -#define ARM_DEF_FMRRD(cond,cp,rn,rd,Dm,D) \ - ((Dm) << 0) | \ - (1 << 4) | \ - ((cp) << 8) | \ - ((rd) << 12) | \ - ((rn) << 16) | \ - ((0xc5) << 20) | \ - ARM_DEF_COND(cond) - -#define ARM_FMRRD(p,rd,rn,dm) \ - ARM_EMIT((p), ARM_DEF_FMRRD(ARMCOND_AL,ARM_VFP_COPROC_DOUBLE,(rn),(rd),(dm) >> 1, (dm) & 1)) - -#define ARM_DEF_FUITOS(cond,Dd,D,Fm,M) ((cond) << 28) | ((0x1d) << 23) | ((D) << 22) | ((0x3) << 20) | ((8) << 16) | ((Dd) << 12) | ((0xa) << 8) | ((1) << 6) | ((M) << 5) | ((Fm) << 0) - -#define ARM_FUITOS(p,dreg,sreg) \ - ARM_EMIT((p), ARM_DEF_FUITOS (ARMCOND_AL, (dreg) >> 1, (dreg) & 1, (sreg) >> 1, (sreg) & 1)) - -#define ARM_DEF_FUITOD(cond,Dd,D,Fm,M) ((cond) << 28) | ((0x1d) << 23) | ((D) << 22) | ((0x3) << 20) | ((8) << 16) | ((Dd) << 12) | ((0xb) << 8) | ((1) << 6) | ((M) << 5) | ((Fm) << 0) - -#define ARM_FUITOD(p,dreg,sreg) \ - ARM_EMIT((p), ARM_DEF_FUITOD (ARMCOND_AL, (dreg) >> 1, (dreg) & 1, (sreg) >> 1, (sreg) & 1)) - -#define ARM_DEF_FSITOS(cond,Dd,D,Fm,M) ((cond) << 28) | ((0x1d) << 23) | ((D) << 22) | ((0x3) << 20) | ((8) << 16) | ((Dd) << 12) | ((0xa) << 8) | ((1) << 7) | ((1) << 6) | ((M) << 5) | ((Fm) << 0) - -#define ARM_FSITOS(p,dreg,sreg) \ - ARM_EMIT((p), ARM_DEF_FSITOS (ARMCOND_AL, (dreg) >> 1, (dreg) & 1, (sreg) >> 1, (sreg) & 1)) - -#define ARM_DEF_FSITOD(cond,Dd,D,Fm,M) ((cond) << 28) | ((0x1d) << 23) | ((D) << 22) | ((0x3) << 20) | ((8) << 16) | ((Dd) << 12) | ((0xb) << 8) | ((1) << 7) | ((1) << 6) | ((M) << 5) | ((Fm) << 0) - -#define ARM_FSITOD(p,dreg,sreg) \ - ARM_EMIT((p), ARM_DEF_FSITOD (ARMCOND_AL, (dreg) >> 1, (dreg) & 1, (sreg) >> 1, (sreg) & 1)) - -#endif /* __MONO_ARM_VFP_CODEGEN_H__ */ - diff --git a/FFTS/Sources/FFTS/src/arch/arm/arm-wmmx.h b/FFTS/Sources/FFTS/src/arch/arm/arm-wmmx.h deleted file mode 100644 index 427c4fc..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/arm-wmmx.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - * ARM CodeGen - * XScale WirelessMMX extensions - * Copyright 2002 Wild West Software - */ - -#ifndef __WMMX_H__ -#define __WMMX_H__ 1 - -#if 0 -#include -#endif - -#if defined(ARM_IASM) -# define WM_ASM(_expr) ARM_IASM(_expr) -#else -# define WM_ASM(_expr) __emit (_expr) -#endif - -#if defined(ARM_EMIT) -# define WM_EMIT(p, i) ARM_EMIT(p, i) -#else -# define WM_EMIT(p, i) -#endif - -enum { - WM_CC_EQ = 0x0, - WM_CC_NE = 0x1, - WM_CC_CS = 0x2, - WM_CC_HS = WM_CC_CS, - WM_CC_CC = 0x3, - WM_CC_LO = WM_CC_CC, - WM_CC_MI = 0x4, - WM_CC_PL = 0x5, - WM_CC_VS = 0x6, - WM_CC_VC = 0x7, - WM_CC_HI = 0x8, - WM_CC_LS = 0x9, - WM_CC_GE = 0xA, - WM_CC_LT = 0xB, - WM_CC_GT = 0xC, - WM_CC_LE = 0xD, - WM_CC_AL = 0xE, - WM_CC_NV = 0xF, - WM_CC_SHIFT = 28 -}; - -#if defined(ARM_DEF_COND) -# define WM_DEF_CC(_cc) ARM_DEF_COND(_cc) -#else -# define WM_DEF_CC(_cc) ((_cc & 0xF) << WM_CC_SHIFT) -#endif - - -enum { - WM_R0 = 0x0, - WM_R1 = 0x1, - WM_R2 = 0x2, - WM_R3 = 0x3, - WM_R4 = 0x4, - WM_R5 = 0x5, - WM_R6 = 0x6, - WM_R7 = 0x7, - WM_R8 = 0x8, - WM_R9 = 0x9, - WM_R10 = 0xA, - WM_R11 = 0xB, - WM_R12 = 0xC, - WM_R13 = 0xD, - WM_R14 = 0xE, - WM_R15 = 0xF, - - WM_wR0 = 0x0, - WM_wR1 = 0x1, - WM_wR2 = 0x2, - WM_wR3 = 0x3, - WM_wR4 = 0x4, - WM_wR5 = 0x5, - WM_wR6 = 0x6, - WM_wR7 = 0x7, - WM_wR8 = 0x8, - WM_wR9 = 0x9, - WM_wR10 = 0xA, - WM_wR11 = 0xB, - WM_wR12 = 0xC, - WM_wR13 = 0xD, - WM_wR14 = 0xE, - WM_wR15 = 0xF -}; - - -/* - * Qualifiers: - * H - 16-bit (HalfWord) SIMD - * W - 32-bit (Word) SIMD - * D - 64-bit (Double) - */ -enum { - WM_B = 0, - WM_H = 1, - WM_D = 2 -}; - -/* - * B.2.3 Transfers From Coprocessor Register (MRC) - * Table B-5 - */ -enum { - WM_TMRC_OP2 = 0, - WM_TMRC_CPNUM = 1, - - WM_TMOVMSK_OP2 = 1, - WM_TMOVMSK_CPNUM = 0, - - WM_TANDC_OP2 = 1, - WM_TANDC_CPNUM = 1, - - WM_TORC_OP2 = 2, - WM_TORC_CPNUM = 1, - - WM_TEXTRC_OP2 = 3, - WM_TEXTRC_CPNUM = 1, - - WM_TEXTRM_OP2 = 3, - WM_TEXTRM_CPNUM = 0 -}; - - -/* - * TANDC{Cond} R15 - * Performs AND across the fields of the SIMD PSR register (wCASF) and sends the result - * to CPSR; can be performed after a Byte, Half-word or Word operation that sets the flags. - * NOTE: R15 is omitted from the macro declaration; - */ -#define DEF_WM_TNADC_CC(_q, _cc) WM_DEF_CC((_cc)) + ((_q) << 0x16) + 0xE13F130 - -#define _WM_TNADC_CC(_q, _cc) WM_ASM(DEF_WM_TNADC_CC(_q, _cc)) -#define ARM_WM_TNADC_CC(_p, _q, _cc) WM_EMIT(_p, DEF_WM_TNADC_CC(_q, _cc)) - -/* inline assembly */ -#define _WM_TNADC(_q) _WM_TNADC_CC((_q), WM_CC_AL) -#define _WM_TNADCB() _WM_TNADC(WM_B) -#define _WM_TNADCH() _WM_TNADC(WM_H) -#define _WM_TNADCD() _WM_TNADC(WM_D) - -/* codegen */ -#define ARM_WM_TNADC(_p, _q) ARM_WM_TNADC_CC((_p), (_q), WM_CC_AL) -#define ARM_WM_TNADCB(_p) ARM_WM_TNADC(_p, WM_B) -#define ARM_WM_TNADCH(_p) ARM_WM_TNADC(_p, WM_H) -#define ARM_WM_TNADCD(_p) ARM_WM_TNADC(_p, WM_D) - - -/* - * TBCST{Cond} wRd, Rn - * Broadcasts a value from the ARM Source reg (Rn) to every SIMD position - * in the WMMX Destination reg (wRd). - */ -#define DEF_WM_TBCST_CC(_q, _cc, _wrd, _rn) \ - WM_DEF_CC((_cc)) + ((_q) << 6) + ((_wrd) << 16) + ((_rn) << 12) + 0xE200010 - -#define _WM_TBCST_CC(_q, _cc, _wrd, _rn) WM_ASM(DEF_WM_TBCST_CC(_q, _cc, _wrd, _rn)) -#define ARM_WM_TBCST_CC(_p, _q, _cc, _wrd, _rn) WM_EMIT(_p, DEF_WM_TBCST_CC(_q, _cc, _wrd, _rn)) - -/* inline */ -#define _WM_TBCST(_q, _wrd, _rn) _WM_TBCST_CC(_q, WM_CC_AL, _wrd, _rn) -#define _WM_TBCSTB(_wrd, _rn) _WM_TBCST(WM_B) -#define _WM_TBCSTH(_wrd, _rn) _WM_TBCST(WM_H) -#define _WM_TBCSTD(_wrd, _rn) _WM_TBCST(WM_D) - -/* codegen */ -#define ARM_WM_TBCST(_p, _q, _wrd, _rn) ARM_WM_TBCST_CC(_p, _q, WM_CC_AL, _wrd, _rn) -#define ARM_WM_TBCSTB(_p, _wrd, _rn) _WM_TBCST(_p, WM_B) -#define ARM_WM_TBCSTH(_p, _wrd, _rn) _WM_TBCST(_p, WM_H) -#define ARM_WM_TBCSTD(_p, _wrd, _rn) _WM_TBCST(_p, WM_D) - - -#endif /* __WMMX_H__ */ diff --git a/FFTS/Sources/FFTS/src/arch/arm/cmp_macros.th b/FFTS/Sources/FFTS/src/arch/arm/cmp_macros.th deleted file mode 100644 index cb2639d..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/cmp_macros.th +++ /dev/null @@ -1,56 +0,0 @@ -/* PSR := Rn, (imm8 ROR 2*rot) */ -#define ARM__REG_IMM_COND(p, rn, imm8, rot, cond) \ - ARM_DPIOP_S_REG_IMM8ROT_COND(p, ARMOP_, 0, rn, imm8, rot, cond) -#define ARM__REG_IMM(p, rn, imm8, rot) \ - ARM__REG_IMM_COND(p, rn, imm8, rot, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMM_COND(rn, imm8, rot, cond) \ - ARM_IASM_DPIOP_S_REG_IMM8ROT_COND(ARMOP_, 0, rn, imm8, rot, cond) -#define __REG_IMM(rn, imm8, rot) \ - __REG_IMM_COND(rn, imm8, rot, ARMCOND_AL) -#endif - - -/* PSR := Rn, imm8 */ -#define ARM__REG_IMM8_COND(p, rn, imm8, cond) \ - ARM__REG_IMM_COND(p, rn, imm8, 0, cond) -#define ARM__REG_IMM8(p, rn, imm8) \ - ARM__REG_IMM8_COND(p, rn, imm8, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMM8_COND(rn, imm8, cond) \ - __REG_IMM_COND(rn, imm8, 0, cond) -#define __REG_IMM8(rn, imm8) \ - __REG_IMM8_COND(rn, imm8, ARMCOND_AL) -#endif - - -/* PSR := Rn, Rm */ -#define ARM__REG_REG_COND(p, rn, rm, cond) \ - ARM_DPIOP_S_REG_REG_COND(p, ARMOP_, 0, rn, rm, cond) -#define ARM__REG_REG(p, rn, rm) \ - ARM__REG_REG_COND(p, rn, rm, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_REG_COND(rn, rm, cond) \ - ARM_IASM_DPIOP_S_REG_REG_COND(ARMOP_, 0, rn, rm, cond) -#define __REG_REG(rn, rm) \ - __REG_REG_COND(rn, rm, ARMCOND_AL) -#endif - - -/* PSR := Rn, (Rm imm8) */ -#define ARM__REG_IMMSHIFT_COND(p, rn, rm, shift_type, imm_shift, cond) \ - ARM_DPIOP_S_REG_IMMSHIFT_COND(p, ARMOP_, 0, rn, rm, shift_type, imm_shift, cond) -#define ARM__REG_IMMSHIFT(p, rn, rm, shift_type, imm_shift) \ - ARM__REG_IMMSHIFT_COND(p, rn, rm, shift_type, imm_shift, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMMSHIFT_COND(rn, rm, shift_type, imm_shift, cond) \ - ARM_IASM_DPIOP_S_REG_IMMSHIFT_COND(ARMOP_, 0, rn, rm, shift_type, imm_shift, cond) -#define __REG_IMMSHIFT(rn, rm, shift_type, imm_shift) \ - __REG_IMMSHIFT_COND(rn, rm, shift_type, imm_shift, ARMCOND_AL) -#endif - - diff --git a/FFTS/Sources/FFTS/src/arch/arm/dpi_macros.th b/FFTS/Sources/FFTS/src/arch/arm/dpi_macros.th deleted file mode 100644 index be43d1f..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/dpi_macros.th +++ /dev/null @@ -1,112 +0,0 @@ -/* -- -- */ - -/* Rd := Rn (imm8 ROR rot) ; rot is power of 2 */ -#define ARM__REG_IMM_COND(p, rd, rn, imm8, rot, cond) \ - ARM_DPIOP_REG_IMM8ROT_COND(p, ARMOP_, rd, rn, imm8, rot, cond) -#define ARM__REG_IMM(p, rd, rn, imm8, rot) \ - ARM__REG_IMM_COND(p, rd, rn, imm8, rot, ARMCOND_AL) -#define ARM_S_REG_IMM_COND(p, rd, rn, imm8, rot, cond) \ - ARM_DPIOP_S_REG_IMM8ROT_COND(p, ARMOP_, rd, rn, imm8, rot, cond) -#define ARM_S_REG_IMM(p, rd, rn, imm8, rot) \ - ARM_S_REG_IMM_COND(p, rd, rn, imm8, rot, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMM_COND(rd, rn, imm8, rot, cond) \ - ARM_IASM_DPIOP_REG_IMM8ROT_COND(ARMOP_, rd, rn, imm8, rot, cond) -#define __REG_IMM(rd, rn, imm8, rot) \ - __REG_IMM_COND(rd, rn, imm8, rot, ARMCOND_AL) -#define _S_REG_IMM_COND(rd, rn, imm8, rot, cond) \ - ARM_IASM_DPIOP_S_REG_IMM8ROT_COND(ARMOP_, rd, rn, imm8, rot, cond) -#define _S_REG_IMM(rd, rn, imm8, rot) \ - _S_REG_IMM_COND(rd, rn, imm8, rot, ARMCOND_AL) -#endif - - -/* Rd := Rn imm8 */ -#define ARM__REG_IMM8_COND(p, rd, rn, imm8, cond) \ - ARM__REG_IMM_COND(p, rd, rn, imm8, 0, cond) -#define ARM__REG_IMM8(p, rd, rn, imm8) \ - ARM__REG_IMM8_COND(p, rd, rn, imm8, ARMCOND_AL) -#define ARM_S_REG_IMM8_COND(p, rd, rn, imm8, cond) \ - ARM_S_REG_IMM_COND(p, rd, rn, imm8, 0, cond) -#define ARM_S_REG_IMM8(p, rd, rn, imm8) \ - ARM_S_REG_IMM8_COND(p, rd, rn, imm8, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMM8_COND(rd, rn, imm8, cond) \ - __REG_IMM_COND(rd, rn, imm8, 0, cond) -#define __REG_IMM8(rd, rn, imm8) \ - __REG_IMM8_COND(rd, rn, imm8, ARMCOND_AL) -#define _S_REG_IMM8_COND(rd, rn, imm8, cond) \ - _S_REG_IMM_COND(rd, rn, imm8, 0, cond) -#define _S_REG_IMM8(rd, rn, imm8) \ - _S_REG_IMM8_COND(rd, rn, imm8, ARMCOND_AL) -#endif - - -/* Rd := Rn Rm */ -#define ARM__REG_REG_COND(p, rd, rn, rm, cond) \ - ARM_DPIOP_REG_REG_COND(p, ARMOP_, rd, rn, rm, cond) -#define ARM__REG_REG(p, rd, rn, rm) \ - ARM__REG_REG_COND(p, rd, rn, rm, ARMCOND_AL) -#define ARM_S_REG_REG_COND(p, rd, rn, rm, cond) \ - ARM_DPIOP_S_REG_REG_COND(p, ARMOP_, rd, rn, rm, cond) -#define ARM_S_REG_REG(p, rd, rn, rm) \ - ARM_S_REG_REG_COND(p, rd, rn, rm, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_REG_COND(rd, rn, rm, cond) \ - ARM_IASM_DPIOP_REG_REG_COND(ARMOP_, rd, rn, rm, cond) -#define __REG_REG(rd, rn, rm) \ - __REG_REG_COND(rd, rn, rm, ARMCOND_AL) -#define _S_REG_REG_COND(rd, rn, rm, cond) \ - ARM_IASM_DPIOP_S_REG_REG_COND(ARMOP_, rd, rn, rm, cond) -#define _S_REG_REG(rd, rn, rm) \ - _S_REG_REG_COND(rd, rn, rm, ARMCOND_AL) -#endif - - -/* Rd := Rn (Rm imm_shift) */ -#define ARM__REG_IMMSHIFT_COND(p, rd, rn, rm, shift_type, imm_shift, cond) \ - ARM_DPIOP_REG_IMMSHIFT_COND(p, ARMOP_, rd, rn, rm, shift_type, imm_shift, cond) -#define ARM__REG_IMMSHIFT(p, rd, rn, rm, shift_type, imm_shift) \ - ARM__REG_IMMSHIFT_COND(p, rd, rn, rm, shift_type, imm_shift, ARMCOND_AL) -#define ARM_S_REG_IMMSHIFT_COND(p, rd, rn, rm, shift_type, imm_shift, cond) \ - ARM_DPIOP_S_REG_IMMSHIFT_COND(p, ARMOP_, rd, rn, rm, shift_type, imm_shift, cond) -#define ARM_S_REG_IMMSHIFT(p, rd, rn, rm, shift_type, imm_shift) \ - ARM_S_REG_IMMSHIFT_COND(p, rd, rn, rm, shift_type, imm_shift, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMMSHIFT_COND(rd, rn, rm, shift_type, imm_shift, cond) \ - ARM_IASM_DPIOP_REG_IMMSHIFT_COND(ARMOP_, rd, rn, rm, shift_type, imm_shift, cond) -#define __REG_IMMSHIFT(rd, rn, rm, shift_type, imm_shift) \ - __REG_IMMSHIFT_COND(rd, rn, rm, shift_type, imm_shift, ARMCOND_AL) -#define _S_REG_IMMSHIFT_COND(rd, rn, rm, shift_type, imm_shift, cond) \ - ARM_IASM_DPIOP_S_REG_IMMSHIFT_COND(ARMOP_, rd, rn, rm, shift_type, imm_shift, cond) -#define _S_REG_IMMSHIFT(rd, rn, rm, shift_type, imm_shift) \ - _S_REG_IMMSHIFT_COND(rd, rn, rm, shift_type, imm_shift, ARMCOND_AL) -#endif - - -/* Rd := Rn (Rm Rs) */ -#define ARM__REG_REGSHIFT_COND(p, rd, rn, rm, shift_type, rs, cond) \ - ARM_DPIOP_REG_REGSHIFT_COND(p, ARMOP_, rd, rn, rm, shift_t, rs, cond) -#define ARM__REG_REGSHIFT(p, rd, rn, rm, shift_type, rs) \ - ARM__REG_REGSHIFT_COND(p, rd, rn, rm, shift_type, rs, ARMCOND_AL) -#define ARM_S_REG_REGSHIFT_COND(p, rd, rn, rm, shift_type, rs, cond) \ - ARM_DPIOP_S_REG_REGSHIFT_COND(p, ARMOP_, rd, rn, rm, shift_t, rs, cond) -#define ARM_S_REG_REGSHIFT(p, rd, rn, rm, shift_type, rs) \ - ARM_S_REG_REGSHIFT_COND(p, rd, rn, rm, shift_type, rs, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_REGSHIFT_COND(rd, rn, rm, shift_type, rs, cond) \ - ARM_IASM_DPIOP_REG_REGSHIFT_COND(ARMOP_, rd, rn, rm, shift_t, rs, cond) -#define __REG_REGSHIFT(rd, rn, rm, shift_type, rs) \ - __REG_REGSHIFT_COND(rd, rn, rm, shift_type, rs, ARMCOND_AL) -#define _S_REG_REGSHIFT_COND(rd, rn, rm, shift_type, rs, cond) \ - ARM_IASM_DPIOP_S_REG_REGSHIFT_COND(ARMOP_, rd, rn, rm, shift_t, rs, cond) -#define _S_REG_REGSHIFT(rd, rn, rm, shift_type, rs) \ - _S_REG_REGSHIFT_COND(rd, rn, rm, shift_type, rs, ARMCOND_AL) -#endif - - diff --git a/FFTS/Sources/FFTS/src/arch/arm/dpiops.sh b/FFTS/Sources/FFTS/src/arch/arm/dpiops.sh deleted file mode 100755 index d3b93ff..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/dpiops.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -OPCODES="AND EOR SUB RSB ADD ADC SBC RSC ORR BIC" -CMP_OPCODES="TST TEQ CMP CMN" -MOV_OPCODES="MOV MVN" - -# $1: opcode list -# $2: template -gen() { - for i in $1; do - sed "s//$i/g" $2.th - done -} - - - -echo -e "/* Macros for DPI ops, auto-generated from template */\n" - -echo -e "\n/* mov/mvn */\n" -gen "$MOV_OPCODES" mov_macros - -echo -e "\n/* DPIs, arithmetic and logical */\n" -gen "$OPCODES" dpi_macros - -echo -e "\n\n" - -echo -e "\n/* DPIs, comparison */\n" -gen "$CMP_OPCODES" cmp_macros - -echo -e "\n/* end generated */\n" diff --git a/FFTS/Sources/FFTS/src/arch/arm/mov_macros.th b/FFTS/Sources/FFTS/src/arch/arm/mov_macros.th deleted file mode 100644 index 6bac290..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/mov_macros.th +++ /dev/null @@ -1,121 +0,0 @@ -/* Rd := imm8 ROR rot */ -#define ARM__REG_IMM_COND(p, reg, imm8, rot, cond) \ - ARM_DPIOP_REG_IMM8ROT_COND(p, ARMOP_, reg, 0, imm8, rot, cond) -#define ARM__REG_IMM(p, reg, imm8, rot) \ - ARM__REG_IMM_COND(p, reg, imm8, rot, ARMCOND_AL) -/* S */ -#define ARM_S_REG_IMM_COND(p, reg, imm8, rot, cond) \ - ARM_DPIOP_S_REG_IMM8ROT_COND(p, ARMOP_, reg, 0, imm8, rot, cond) -#define ARM_S_REG_IMM(p, reg, imm8, rot) \ - ARM_S_REG_IMM_COND(p, reg, imm8, rot, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMM_COND(reg, imm8, rot, cond) \ - ARM_IASM_DPIOP_REG_IMM8ROT_COND(ARMOP_, reg, 0, imm8, rot, cond) -#define __REG_IMM(reg, imm8, rot) \ - __REG_IMM_COND(reg, imm8, rot, ARMCOND_AL) -/* S */ -#define _S_REG_IMM_COND(reg, imm8, rot, cond) \ - ARM_IASM_DPIOP_S_REG_IMM8ROT_COND(ARMOP_, reg, 0, imm8, rot, cond) -#define _S_REG_IMM(reg, imm8, rot) \ - _S_REG_IMM_COND(reg, imm8, rot, ARMCOND_AL) -#endif - - -/* Rd := imm8 */ -#define ARM__REG_IMM8_COND(p, reg, imm8, cond) \ - ARM_DPIOP_REG_IMM8ROT_COND(p, ARMOP_, reg, 0, imm8, 0, cond) -#define ARM__REG_IMM8(p, reg, imm8) \ - ARM__REG_IMM8_COND(p, reg, imm8, ARMCOND_AL) -/* S */ -#define ARM_S_REG_IMM8_COND(p, reg, imm8, cond) \ - ARM_DPIOP_S_REG_IMM8ROT_COND(p, ARMOP_, reg, 0, imm8, 0, cond) -#define ARM_S_REG_IMM8(p, reg, imm8) \ - ARM_S_REG_IMM8_COND(p, reg, imm8, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMM8_COND(reg, imm8, cond) \ - ARM_IASM_DPIOP_REG_IMM8ROT_COND(ARMOP_, reg, 0, imm8, 0, cond) -#define __REG_IMM8(reg, imm8) \ - __REG_IMM8_COND(reg, imm8, ARMCOND_AL) -/* S */ -#define _S_REG_IMM8_COND(reg, imm8, cond) \ - ARM_IASM_DPIOP_S_REG_IMM8ROT_COND(ARMOP_, reg, 0, imm8, 0, cond) -#define _S_REG_IMM8(reg, imm8) \ - _S_REG_IMM8_COND(reg, imm8, ARMCOND_AL) -#endif - - -/* Rd := Rm */ -#define ARM__REG_REG_COND(p, rd, rm, cond) \ - ARM_DPIOP_REG_REG_COND(p, ARMOP_, rd, 0, rm, cond) -#define ARM__REG_REG(p, rd, rm) \ - ARM__REG_REG_COND(p, rd, rm, ARMCOND_AL) -/* S */ -#define ARM_S_REG_REG_COND(p, rd, rm, cond) \ - ARM_DPIOP_S_REG_REG_COND(p, ARMOP_, rd, 0, rm, cond) -#define ARM_S_REG_REG(p, rd, rm) \ - ARM_S_REG_REG_COND(p, rd, rm, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_REG_COND(rd, rm, cond) \ - ARM_IASM_DPIOP_REG_REG_COND(ARMOP_, rd, 0, rm, cond) -#define __REG_REG(rd, rm) \ - __REG_REG_COND(rd, rm, ARMCOND_AL) -/* S */ -#define _S_REG_REG_COND(rd, rm, cond) \ - ARM_IASM_DPIOP_S_REG_REG_COND(ARMOP_, rd, 0, rm, cond) -#define _S_REG_REG(rd, rm) \ - _S_REG_REG_COND(rd, rm, ARMCOND_AL) -#endif - - -/* Rd := Rm imm_shift */ -#define ARM__REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, cond) \ - ARM_DPIOP_REG_IMMSHIFT_COND(p, ARMOP_, rd, 0, rm, shift_type, imm_shift, cond) -#define ARM__REG_IMMSHIFT(p, rd, rm, shift_type, imm_shift) \ - ARM__REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, ARMCOND_AL) -/* S */ -#define ARM_S_REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, cond) \ - ARM_DPIOP_S_REG_IMMSHIFT_COND(p, ARMOP_, rd, 0, rm, shift_type, imm_shift, cond) -#define ARM_S_REG_IMMSHIFT(p, rd, rm, shift_type, imm_shift) \ - ARM_S_REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, cond) \ - ARM_IASM_DPIOP_REG_IMMSHIFT_COND(ARMOP_, rd, 0, rm, shift_type, imm_shift, cond) -#define __REG_IMMSHIFT(rd, rm, shift_type, imm_shift) \ - __REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, ARMCOND_AL) -/* S */ -#define _S_REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, cond) \ - ARM_IASM_DPIOP_S_REG_IMMSHIFT_COND(ARMOP_, rd, 0, rm, shift_type, imm_shift, cond) -#define _S_REG_IMMSHIFT(rd, rm, shift_type, imm_shift) \ - _S_REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, ARMCOND_AL) -#endif - - - -/* Rd := (Rm Rs) */ -#define ARM__REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, cond) \ - ARM_DPIOP_REG_REGSHIFT_COND(p, ARMOP_, rd, 0, rm, shift_type, rs, cond) -#define ARM__REG_REGSHIFT(p, rd, rm, shift_type, rs) \ - ARM__REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, ARMCOND_AL) -/* S */ -#define ARM_S_REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, cond) \ - ARM_DPIOP_S_REG_REGSHIFT_COND(p, ARMOP_, rd, 0, rm, shift_type, rs, cond) -#define ARM_S_REG_REGSHIFT(p, rd, rm, shift_type, rs) \ - ARM_S_REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, ARMCOND_AL) - -#ifndef ARM_NOIASM -#define __REG_REGSHIFT_COND(rd, rm, shift_type, rs, cond) \ - ARM_IASM_DPIOP_REG_REGSHIFT_COND(ARMOP_, rd, 0, rm, shift_type, rs, cond) -#define __REG_REGSHIFT(rd, rm, shift_type, rs) \ - __REG_REGSHIFT_COND(rd, rm, shift_type, rs, ARMCOND_AL) -/* S */ -#define _S_REG_REGSHIFT_COND(rd, rm, shift_type, rs, cond) \ - ARM_IASM_DPIOP_S_REG_REGSHIFT_COND(ARMOP_, rd, 0, rm, shift_type, rs, cond) -#define _S_REG_REGSHIFT(rd, rm, shift_type, rs) \ - _S_REG_REGSHIFT_COND(rd, rm, shift_type, rs, ARMCOND_AL) -#endif - - diff --git a/FFTS/Sources/FFTS/src/arch/arm/tramp.c b/FFTS/Sources/FFTS/src/arch/arm/tramp.c deleted file mode 100644 index f736c7a..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/tramp.c +++ /dev/null @@ -1,710 +0,0 @@ -/* - * Create trampolines to invoke arbitrary functions. - * Copyright (c) 2002 Sergey Chaban - * - * Contributions by Malte Hildingson - */ - -#include "arm-codegen.h" -#include "arm-dis.h" - -#if defined(_WIN32_WCE) || defined (UNDER_CE) -# include -#else -#include -#include -#endif - -#if !defined(PLATFORM_MACOSX) -#include - -#include "mono/metadata/class.h" -#include "mono/metadata/tabledefs.h" -#include "mono/interpreter/interp.h" -#include "mono/metadata/appdomain.h" - - -#if 0 -# define ARM_DUMP_DISASM 1 -#endif - -/* prototypes for private functions (to avoid compiler warnings) */ -void flush_icache (void); -void* alloc_code_buff (int num_instr); - - - -/* - * The resulting function takes the form: - * void func (void (*callme)(), void *retval, void *this_obj, stackval *arguments); - * NOTE: all args passed in ARM registers (A1-A4), - * then copied to R4-R7 (see definitions below). - */ - -#define REG_FUNC_ADDR ARMREG_R4 -#define REG_RETVAL ARMREG_R5 -#define REG_THIS ARMREG_R6 -#define REG_ARGP ARMREG_R7 - - -#define ARG_SIZE sizeof(stackval) - - - - -void flush_icache () -{ -#if defined(_WIN32) - FlushInstructionCache(GetCurrentProcess(), NULL, 0); -#else -# if 0 - asm ("mov r0, r0"); - asm ("mov r0, #0"); - asm ("mcr p15, 0, r0, c7, c7, 0"); -# else - /* TODO: use (movnv pc, rx) method */ -# endif -#endif -} - - -void* alloc_code_buff (int num_instr) -{ - void* code_buff; - int code_size = num_instr * sizeof(arminstr_t); - -#if defined(_WIN32) || defined(UNDER_CE) - int old_prot = 0; - - code_buff = malloc(code_size); - VirtualProtect(code_buff, code_size, PAGE_EXECUTE_READWRITE, &old_prot); -#else - int page_size = sysconf(_SC_PAGESIZE); - int new_code_size; - - new_code_size = code_size + page_size - 1; - code_buff = malloc(new_code_size); - code_buff = (void *) (((int) code_buff + page_size - 1) & ~(page_size - 1)); - - if (mprotect(code_buff, code_size, PROT_READ|PROT_WRITE|PROT_EXEC) != 0) { - g_critical (G_GNUC_PRETTY_FUNCTION - ": mprotect error: %s", g_strerror (errno)); - } -#endif - - return code_buff; -} - - -/* - * Refer to ARM Procedure Call Standard (APCS) for more info. - */ -MonoPIFunc mono_arch_create_trampoline (MonoMethodSignature *sig, gboolean string_ctor) -{ - MonoType* param; - MonoPIFunc code_buff; - arminstr_t* p; - guint32 code_size, stack_size; - guint32 simple_type; - int i, hasthis, aregs, regc, stack_offs; - int this_loaded; - guchar reg_alloc [ARM_NUM_ARG_REGS]; - - /* pessimistic estimation for prologue/epilogue size */ - code_size = 16 + 16; - /* push/pop work regs */ - code_size += 2; - /* call */ - code_size += 2; - /* handle retval */ - code_size += 2; - - stack_size = 0; - hasthis = sig->hasthis ? 1 : 0; - - aregs = ARM_NUM_ARG_REGS - hasthis; - - for (i = 0, regc = aregs; i < sig->param_count; ++i) { - param = sig->params [i]; - - /* keep track of argument sizes */ - if (i < ARM_NUM_ARG_REGS) reg_alloc [i] = 0; - - if (param->byref) { - if (regc > 0) { - code_size += 1; - reg_alloc [i] = regc; - --regc; - } else { - code_size += 2; - stack_size += sizeof(gpointer); - } - } else { - simple_type = param->type; -enum_calc_size: - switch (simple_type) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_CHAR: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_PTR: - case MONO_TYPE_R4: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - if (regc > 0) { - /* register arg */ - code_size += 1; - reg_alloc [i] = regc; - --regc; - } else { - /* stack arg */ - code_size += 2; - stack_size += 4; - } - break; - case MONO_TYPE_I8: - case MONO_TYPE_U8: - case MONO_TYPE_R8: - /* keep track of argument sizes */ - if (regc > 1) { - /* fits into registers, two LDRs */ - code_size += 2; - reg_alloc [i] = regc; - regc -= 2; - } else if (regc > 0) { - /* first half fits into register, one LDR */ - code_size += 1; - reg_alloc [i] = regc; - --regc; - /* the rest on the stack, LDR/STR */ - code_size += 2; - stack_size += 4; - } else { - /* stack arg, 4 instrs - 2x(LDR/STR) */ - code_size += 4; - stack_size += 2 * 4; - } - break; - case MONO_TYPE_VALUETYPE: - if (param->data.klass->enumtype) { - simple_type = param->data.klass->enum_basetype->type; - goto enum_calc_size; - } - - if (mono_class_value_size(param->data.klass, NULL) != 4) { - g_error("can only marshal enums, not generic structures (size: %d)", mono_class_value_size(param->data.klass, NULL)); - } - if (regc > 0) { - /* register arg */ - code_size += 1; - reg_alloc [i] = regc; - --regc; - } else { - /* stack arg */ - code_size += 2; - stack_size += 4; - } - break; - default : - break; - } - } - } - - code_buff = (MonoPIFunc)alloc_code_buff(code_size); - p = (arminstr_t*)code_buff; - - /* prologue */ - p = arm_emit_lean_prologue(p, stack_size, - /* save workset (r4-r7) */ - (1 << ARMREG_R4) | (1 << ARMREG_R5) | (1 << ARMREG_R6) | (1 << ARMREG_R7)); - - - /* copy args into workset */ - /* callme - always present */ - ARM_MOV_REG_REG(p, ARMREG_R4, ARMREG_A1); - /* retval */ - if (sig->ret->byref || string_ctor || (sig->ret->type != MONO_TYPE_VOID)) { - ARM_MOV_REG_REG(p, ARMREG_R5, ARMREG_A2); - } - /* this_obj */ - if (sig->hasthis) { - this_loaded = 0; - if (stack_size == 0) { - ARM_MOV_REG_REG(p, ARMREG_A1, ARMREG_A3); - this_loaded = 1; - } else { - ARM_MOV_REG_REG(p, ARMREG_R6, ARMREG_A3); - } - } - /* args */ - if (sig->param_count != 0) { - ARM_MOV_REG_REG(p, ARMREG_R7, ARMREG_A4); - } - - stack_offs = stack_size; - - /* handle arguments */ - /* in reverse order so we could use r0 (arg1) for memory transfers */ - for (i = sig->param_count; --i >= 0;) { - param = sig->params [i]; - if (param->byref) { - if (i < aregs && reg_alloc[i] > 0) { - ARM_LDR_IMM(p, ARMREG_A1 + i, REG_ARGP, i*ARG_SIZE); - } else { - stack_offs -= sizeof(armword_t); - ARM_LDR_IMM(p, ARMREG_R0, REG_ARGP, i*ARG_SIZE); - ARM_STR_IMM(p, ARMREG_R0, ARMREG_SP, stack_offs); - } - } else { - simple_type = param->type; -enum_marshal: - switch (simple_type) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_CHAR: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_PTR: - case MONO_TYPE_R4: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - if (i < aregs && reg_alloc [i] > 0) { - /* pass in register */ - ARM_LDR_IMM(p, ARMREG_A1 + hasthis + (aregs - reg_alloc [i]), REG_ARGP, i*ARG_SIZE); - } else { - stack_offs -= sizeof(armword_t); - ARM_LDR_IMM(p, ARMREG_R0, REG_ARGP, i*ARG_SIZE); - ARM_STR_IMM(p, ARMREG_R0, ARMREG_SP, stack_offs); - } - break; - case MONO_TYPE_I8: - case MONO_TYPE_U8: - case MONO_TYPE_R8: - if (i < aregs && reg_alloc [i] > 0) { - if (reg_alloc [i] > 1) { - /* pass in registers */ - ARM_LDR_IMM(p, ARMREG_A1 + hasthis + (aregs - reg_alloc [i]), REG_ARGP, i*ARG_SIZE); - ARM_LDR_IMM(p, ARMREG_A1 + hasthis + (aregs - reg_alloc [i]) + 1, REG_ARGP, i*ARG_SIZE + 4); - } else { - stack_offs -= sizeof(armword_t); - ARM_LDR_IMM(p, ARMREG_R0, REG_ARGP, i*ARG_SIZE + 4); - ARM_STR_IMM(p, ARMREG_R0, ARMREG_SP, stack_offs); - ARM_LDR_IMM(p, ARMREG_A1 + hasthis + (aregs - reg_alloc [i]), REG_ARGP, i*ARG_SIZE); - } - } else { - /* two words transferred on the stack */ - stack_offs -= 2*sizeof(armword_t); - ARM_LDR_IMM(p, ARMREG_R0, REG_ARGP, i*ARG_SIZE); - ARM_STR_IMM(p, ARMREG_R0, ARMREG_SP, stack_offs); - ARM_LDR_IMM(p, ARMREG_R0, REG_ARGP, i*ARG_SIZE + 4); - ARM_STR_IMM(p, ARMREG_R0, ARMREG_SP, stack_offs + 4); - } - break; - case MONO_TYPE_VALUETYPE: - if (param->data.klass->enumtype) { - /* it's an enum value, proceed based on its base type */ - simple_type = param->data.klass->enum_basetype->type; - goto enum_marshal; - } else { - if (i < aregs && reg_alloc[i] > 0) { - int vtreg = ARMREG_A1 + hasthis + - hasthis + (aregs - reg_alloc[i]); - ARM_LDR_IMM(p, vtreg, REG_ARGP, i * ARG_SIZE); - ARM_LDR_IMM(p, vtreg, vtreg, 0); - } else { - stack_offs -= sizeof(armword_t); - ARM_LDR_IMM(p, ARMREG_R0, REG_ARGP, i * ARG_SIZE); - ARM_LDR_IMM(p, ARMREG_R0, ARMREG_R0, 0); - ARM_STR_IMM(p, ARMREG_R0, ARMREG_SP, stack_offs); - } - } - break; - - default: - break; - } - } - } - - if (sig->hasthis && !this_loaded) { - /* [this] always passed in A1, regardless of sig->call_convention */ - ARM_MOV_REG_REG(p, ARMREG_A1, REG_THIS); - } - - /* call [func] */ - ARM_MOV_REG_REG(p, ARMREG_LR, ARMREG_PC); - ARM_MOV_REG_REG(p, ARMREG_PC, REG_FUNC_ADDR); - - /* handle retval */ - if (sig->ret->byref || string_ctor) { - ARM_STR_IMM(p, ARMREG_R0, REG_RETVAL, 0); - } else { - simple_type = sig->ret->type; -enum_retvalue: - switch (simple_type) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - ARM_STRB_IMM(p, ARMREG_R0, REG_RETVAL, 0); - break; - case MONO_TYPE_CHAR: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - ARM_STRH_IMM(p, ARMREG_R0, REG_RETVAL, 0); - break; - /* - * A 32-bit integer and integer-equivalent return value - * is returned in R0. - * Single-precision floating-point values are returned in R0. - */ - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_R4: - case MONO_TYPE_OBJECT: - case MONO_TYPE_CLASS: - case MONO_TYPE_ARRAY: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_STRING: - ARM_STR_IMM(p, ARMREG_R0, REG_RETVAL, 0); - break; - /* - * A 64-bit integer is returned in R0 and R1. - * Double-precision floating-point values are returned in R0 and R1. - */ - case MONO_TYPE_I8: - case MONO_TYPE_U8: - case MONO_TYPE_R8: - ARM_STR_IMM(p, ARMREG_R0, REG_RETVAL, 0); - ARM_STR_IMM(p, ARMREG_R1, REG_RETVAL, 4); - break; - case MONO_TYPE_VALUETYPE: - if (sig->ret->data.klass->enumtype) { - simple_type = sig->ret->data.klass->enum_basetype->type; - goto enum_retvalue; - } - break; - case MONO_TYPE_VOID: - break; - default: - break; - } - } - - p = arm_emit_std_epilogue(p, stack_size, - /* restore R4-R7 */ - (1 << ARMREG_R4) | (1 << ARMREG_R5) | (1 << ARMREG_R6) | (1 << ARMREG_R7)); - - flush_icache(); - -#ifdef ARM_DUMP_DISASM - _armdis_decode((arminstr_t*)code_buff, ((guint8*)p) - ((guint8*)code_buff)); -#endif - - return code_buff; -} - - - -#define MINV_OFFS(member) G_STRUCT_OFFSET(MonoInvocation, member) - - - -/* - * Returns a pointer to a native function that can be used to - * call the specified method. - * The function created will receive the arguments according - * to the call convention specified in the method. - * This function works by creating a MonoInvocation structure, - * filling the fields in and calling ves_exec_method on it. - * Still need to figure out how to handle the exception stuff - * across the managed/unmanaged boundary. - */ -void* mono_arch_create_method_pointer (MonoMethod* method) -{ - MonoMethodSignature* sig; - guchar* p, * p_method, * p_stackval_from_data, * p_exec; - void* code_buff; - int i, stack_size, arg_pos, arg_add, stackval_pos, offs; - int areg, reg_args, shift, pos; - MonoJitInfo *ji; - - code_buff = alloc_code_buff(128); - p = (guchar*)code_buff; - - sig = method->signature; - - ARM_B(p, 3); - - /* embed magic number followed by method pointer */ - *p++ = 'M'; - *p++ = 'o'; - *p++ = 'n'; - *p++ = 'o'; - /* method ptr */ - *(void**)p = method; - p_method = p; - p += 4; - - /* call table */ - *(void**)p = stackval_from_data; - p_stackval_from_data = p; - p += 4; - *(void**)p = ves_exec_method; - p_exec = p; - p += 4; - - stack_size = sizeof(MonoInvocation) + ARG_SIZE*(sig->param_count + 1) + ARM_NUM_ARG_REGS*2*sizeof(armword_t); - - /* prologue */ - p = (guchar*)arm_emit_lean_prologue((arminstr_t*)p, stack_size, - (1 << ARMREG_R4) | - (1 << ARMREG_R5) | - (1 << ARMREG_R6) | - (1 << ARMREG_R7)); - - /* R7 - ptr to stack args */ - ARM_MOV_REG_REG(p, ARMREG_R7, ARMREG_IP); - - /* - * Initialize MonoInvocation fields, first the ones known now. - */ - ARM_MOV_REG_IMM8(p, ARMREG_R4, 0); - ARM_STR_IMM(p, ARMREG_R4, ARMREG_SP, MINV_OFFS(ex)); - ARM_STR_IMM(p, ARMREG_R4, ARMREG_SP, MINV_OFFS(ex_handler)); - ARM_STR_IMM(p, ARMREG_R4, ARMREG_SP, MINV_OFFS(parent)); - - /* Set the method pointer. */ - ARM_LDR_IMM(p, ARMREG_R4, ARMREG_PC, -(int)(p - p_method + sizeof(arminstr_t)*2)); - ARM_STR_IMM(p, ARMREG_R4, ARMREG_SP, MINV_OFFS(method)); - - if (sig->hasthis) { - /* [this] in A1 */ - ARM_STR_IMM(p, ARMREG_A1, ARMREG_SP, MINV_OFFS(obj)); - } else { - /* else set minv.obj to NULL */ - ARM_STR_IMM(p, ARMREG_R4, ARMREG_SP, MINV_OFFS(obj)); - } - - /* copy args from registers to stack */ - areg = ARMREG_A1 + sig->hasthis; - arg_pos = -(int)(ARM_NUM_ARG_REGS - sig->hasthis) * 2 * sizeof(armword_t); - arg_add = 0; - for (i = 0; i < sig->param_count; ++i) { - if (areg >= ARM_NUM_ARG_REGS) break; - ARM_STR_IMM(p, areg, ARMREG_R7, arg_pos); - ++areg; - if (!sig->params[i]->byref) { - switch (sig->params[i]->type) { - case MONO_TYPE_I8: - case MONO_TYPE_U8: - case MONO_TYPE_R8: - if (areg >= ARM_NUM_ARG_REGS) { - /* load second half of 64-bit arg */ - ARM_LDR_IMM(p, ARMREG_R4, ARMREG_R7, 0); - ARM_STR_IMM(p, ARMREG_R4, ARMREG_R7, arg_pos + sizeof(armword_t)); - arg_add = sizeof(armword_t); - } else { - /* second half is already the register */ - ARM_STR_IMM(p, areg, ARMREG_R7, arg_pos + sizeof(armword_t)); - ++areg; - } - break; - case MONO_TYPE_VALUETYPE: - /* assert */ - default: - break; - } - } - arg_pos += 2 * sizeof(armword_t); - } - /* number of args passed in registers */ - reg_args = i; - - - - /* - * Calc and save stack args ptr, - * args follow MonoInvocation struct on the stack. - */ - ARM_ADD_REG_IMM8(p, ARMREG_R1, ARMREG_SP, sizeof(MonoInvocation)); - ARM_STR_IMM(p, ARMREG_R1, ARMREG_SP, MINV_OFFS(stack_args)); - - /* convert method args to stackvals */ - arg_pos = -(int)(ARM_NUM_ARG_REGS - sig->hasthis) * 2 * sizeof(armword_t); - stackval_pos = sizeof(MonoInvocation); - for (i = 0; i < sig->param_count; ++i) { - if (i < reg_args) { - ARM_SUB_REG_IMM8(p, ARMREG_A3, ARMREG_R7, -arg_pos); - arg_pos += 2 * sizeof(armword_t); - } else { - if (arg_pos < 0) arg_pos = 0; - pos = arg_pos + arg_add; - if (pos <= 0xFF) { - ARM_ADD_REG_IMM8(p, ARMREG_A3, ARMREG_R7, pos); - } else { - if (is_arm_const((armword_t)pos)) { - shift = calc_arm_mov_const_shift((armword_t)pos); - ARM_ADD_REG_IMM(p, ARMREG_A3, ARMREG_R7, pos >> ((32 - shift) & 31), shift >> 1); - } else { - p = (guchar*)arm_mov_reg_imm32((arminstr_t*)p, ARMREG_R6, (armword_t)pos); - ARM_ADD_REG_REG(p, ARMREG_A2, ARMREG_R7, ARMREG_R6); - } - } - arg_pos += sizeof(armword_t); - if (!sig->params[i]->byref) { - switch (sig->params[i]->type) { - case MONO_TYPE_I8: - case MONO_TYPE_U8: - case MONO_TYPE_R8: - arg_pos += sizeof(armword_t); - break; - case MONO_TYPE_VALUETYPE: - /* assert */ - default: - break; - } - } - } - - /* A2 = result */ - if (stackval_pos <= 0xFF) { - ARM_ADD_REG_IMM8(p, ARMREG_A2, ARMREG_SP, stackval_pos); - } else { - if (is_arm_const((armword_t)stackval_pos)) { - shift = calc_arm_mov_const_shift((armword_t)stackval_pos); - ARM_ADD_REG_IMM(p, ARMREG_A2, ARMREG_SP, stackval_pos >> ((32 - shift) & 31), shift >> 1); - } else { - p = (guchar*)arm_mov_reg_imm32((arminstr_t*)p, ARMREG_R6, (armword_t)stackval_pos); - ARM_ADD_REG_REG(p, ARMREG_A2, ARMREG_SP, ARMREG_R6); - } - } - - /* A1 = type */ - p = (guchar*)arm_mov_reg_imm32((arminstr_t*)p, ARMREG_A1, (armword_t)sig->params [i]); - - stackval_pos += ARG_SIZE; - - offs = -(p + 2*sizeof(arminstr_t) - p_stackval_from_data); - /* load function address */ - ARM_LDR_IMM(p, ARMREG_R4, ARMREG_PC, offs); - /* call stackval_from_data */ - ARM_MOV_REG_REG(p, ARMREG_LR, ARMREG_PC); - ARM_MOV_REG_REG(p, ARMREG_PC, ARMREG_R4); - } - - /* store retval ptr */ - p = (guchar*)arm_mov_reg_imm32((arminstr_t*)p, ARMREG_R5, (armword_t)stackval_pos); - ARM_ADD_REG_REG(p, ARMREG_R5, ARMREG_SP, ARMREG_R4); - ARM_STR_IMM(p, ARMREG_R5, ARMREG_SP, MINV_OFFS(retval)); - - /* - * Call the method. - */ - /* A1 = MonoInvocation ptr */ - ARM_MOV_REG_REG(p, ARMREG_A1, ARMREG_SP); - offs = -(p + 2*sizeof(arminstr_t) - p_exec); - /* load function address */ - ARM_LDR_IMM(p, ARMREG_R4, ARMREG_PC, offs); - /* call ves_exec */ - ARM_MOV_REG_REG(p, ARMREG_LR, ARMREG_PC); - ARM_MOV_REG_REG(p, ARMREG_PC, ARMREG_R4); - - - /* - * Move retval into reg. - */ - if (sig->ret->byref) { - ARM_LDR_IMM(p, ARMREG_R0, ARMREG_R5, 0); - } else { - switch (sig->ret->type) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - ARM_LDRB_IMM(p, ARMREG_R0, ARMREG_R5, 0); - break; - case MONO_TYPE_CHAR: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - ARM_LDRH_IMM(p, ARMREG_R0, ARMREG_R5, 0); - break; - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_R4: - case MONO_TYPE_OBJECT: - case MONO_TYPE_CLASS: - case MONO_TYPE_ARRAY: - case MONO_TYPE_SZARRAY: - ARM_LDR_IMM(p, ARMREG_R0, ARMREG_R5, 0); - break; - case MONO_TYPE_I8: - case MONO_TYPE_U8: - case MONO_TYPE_R8: - ARM_LDR_IMM(p, ARMREG_R0, ARMREG_R5, 0); - ARM_LDR_IMM(p, ARMREG_R1, ARMREG_R5, 4); - break; - case MONO_TYPE_VOID: - default: - break; - } - } - - - p = (guchar*)arm_emit_std_epilogue((arminstr_t*)p, stack_size, - (1 << ARMREG_R4) | - (1 << ARMREG_R5) | - (1 << ARMREG_R6) | - (1 << ARMREG_R7)); - - flush_icache(); - -#ifdef ARM_DUMP_DISASM - _armdis_decode((arminstr_t*)code_buff, ((guint8*)p) - ((guint8*)code_buff)); -#endif - - ji = g_new0(MonoJitInfo, 1); - ji->method = method; - ji->code_size = ((guint8 *) p) - ((guint8 *) code_buff); - ji->code_start = (gpointer) code_buff; - - mono_jit_info_table_add(mono_get_root_domain (), ji); - - return code_buff; -} - - -/* - * mono_create_method_pointer () will insert a pointer to the MonoMethod - * so that the interp can easily get at the data: this function will retrieve - * the method from the code stream. - */ -MonoMethod* mono_method_pointer_get (void* code) -{ - unsigned char* c = code; - /* check out magic number that follows unconditional branch */ - if (c[4] == 'M' && - c[5] == 'o' && - c[6] == 'n' && - c[7] == 'o') return ((MonoMethod**)code)[2]; - return NULL; -} -#endif diff --git a/FFTS/Sources/FFTS/src/arch/arm/vfp_macros.th b/FFTS/Sources/FFTS/src/arch/arm/vfp_macros.th deleted file mode 100644 index cca67dc..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/vfp_macros.th +++ /dev/null @@ -1,15 +0,0 @@ -/* -- -- */ - - -/* Fd := Fn Fm */ -#define ARM_VFP_D_COND(p, rd, rn, rm, cond) \ - ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_DOUBLE,ARM_VFP_,rd,rn,rm)) -#define ARM_VFP_D(p, rd, rn, rm) \ - ARM_VFP_D_COND(p, rd, rn, rm, ARMCOND_AL) - -#define ARM_VFP_S_COND(p, rd, rn, rm, cond) \ - ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_SINGLE,ARM_VFP_,rd,rn,rm)) -#define ARM_VFP_S(p, rd, rn, rm) \ - ARM_VFP_S_COND(p, rd, rn, rm, ARMCOND_AL) - - diff --git a/FFTS/Sources/FFTS/src/arch/arm/vfpm_macros.th b/FFTS/Sources/FFTS/src/arch/arm/vfpm_macros.th deleted file mode 100644 index 25ad721..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/vfpm_macros.th +++ /dev/null @@ -1,14 +0,0 @@ -/* -- -- */ - - -/* Fd := Fm */ - -#define ARM_D_COND(p,dreg,sreg,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_,(dreg),(sreg))) -#define ARM_D(p,dreg,sreg) ARM_D_COND(p,dreg,sreg,ARMCOND_AL) - -#define ARM_S_COND(p,dreg,sreg,cond) \ - ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_,(dreg),(sreg))) -#define ARM_S(p,dreg,sreg) ARM_S_COND(p,dreg,sreg,ARMCOND_AL) - - diff --git a/FFTS/Sources/FFTS/src/arch/arm/vfpops.sh b/FFTS/Sources/FFTS/src/arch/arm/vfpops.sh deleted file mode 100755 index bed4a9c..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm/vfpops.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -DYADIC="ADD SUB MUL NMUL DIV" -MONADIC="CPY ABS NEG SQRT CMP CMPE CMPZ CMPEZ CVT UITO SITO TOUI TOSI TOUIZ TOSIZ" - -# $1: opcode list -# $2: template -gen() { - for i in $1; do - sed "s//$i/g" $2.th - done -} - -echo -e "/* Macros for VFP ops, auto-generated from template */\n" - -echo -e "\n/* dyadic */\n" -gen "$DYADIC" vfp_macros - -echo -e "\n/* monadic */\n" -gen "$MONADIC" vfpm_macros - -echo -e "\n\n" - -echo -e "\n/* end generated */\n" diff --git a/FFTS/Sources/FFTS/src/arch/arm64/.gitignore b/FFTS/Sources/FFTS/src/arch/arm64/.gitignore deleted file mode 100644 index 13efac7..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm64/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/ -/Makefile -/Makefile.in -/*.o -/*.lo -/.deps diff --git a/FFTS/Sources/FFTS/src/arch/arm64/Makefile.am b/FFTS/Sources/FFTS/src/arch/arm64/Makefile.am deleted file mode 100644 index e69de29..0000000 diff --git a/FFTS/Sources/FFTS/src/arch/arm64/arm64-codegen.h b/FFTS/Sources/FFTS/src/arch/arm64/arm64-codegen.h deleted file mode 100644 index 259ff96..0000000 --- a/FFTS/Sources/FFTS/src/arch/arm64/arm64-codegen.h +++ /dev/null @@ -1,3 +0,0 @@ -#include "../../../../mono-extensions/mono/arch/arm64/arm64-codegen.h" - - diff --git a/FFTS/Sources/FFTS/src/arch/ia64/.gitignore b/FFTS/Sources/FFTS/src/arch/ia64/.gitignore deleted file mode 100644 index b336cc7..0000000 --- a/FFTS/Sources/FFTS/src/arch/ia64/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/FFTS/Sources/FFTS/src/arch/ia64/Makefile.am b/FFTS/Sources/FFTS/src/arch/ia64/Makefile.am deleted file mode 100644 index e03ea47..0000000 --- a/FFTS/Sources/FFTS/src/arch/ia64/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -EXTRA_DIST = ia64-codegen.h - - diff --git a/FFTS/Sources/FFTS/src/arch/ia64/codegen.c b/FFTS/Sources/FFTS/src/arch/ia64/codegen.c deleted file mode 100644 index 97e1aef..0000000 --- a/FFTS/Sources/FFTS/src/arch/ia64/codegen.c +++ /dev/null @@ -1,861 +0,0 @@ -/* - * codegen.c: Tests for the IA64 code generation macros - */ - -#include -#include -#include - -#define IA64_SIMPLE_EMIT_BUNDLE - -#include - -void -mono_disassemble_code (guint8 *code, int size, char *id) -{ - int i; - FILE *ofd; - const char *tmp = g_get_tmp_dir (); - const char *objdump_args = g_getenv ("MONO_OBJDUMP_ARGS"); - char *as_file; - char *o_file; - char *cmd; - - as_file = g_strdup_printf ("%s/test.s", tmp); - - if (!(ofd = fopen (as_file, "w"))) - g_assert_not_reached (); - - for (i = 0; id [i]; ++i) { - if (!isalnum (id [i])) - fprintf (ofd, "_"); - else - fprintf (ofd, "%c", id [i]); - } - fprintf (ofd, ":\n"); - - for (i = 0; i < size; ++i) - fprintf (ofd, ".byte %d\n", (unsigned int) code [i]); - - fclose (ofd); - -#ifdef __ia64__ -#define DIS_CMD "objdump -d" -#define AS_CMD "as" -#else -#define DIS_CMD "ia64-linux-gnu-objdump -d" -#define AS_CMD "ia64-linux-gnu-as" -#endif - - o_file = g_strdup_printf ("%s/test.o", tmp); - cmd = g_strdup_printf (AS_CMD " %s -o %s", as_file, o_file); - system (cmd); - g_free (cmd); - if (!objdump_args) - objdump_args = ""; - - cmd = g_strdup_printf (DIS_CMD " %s %s", objdump_args, o_file); - system (cmd); - g_free (cmd); - - g_free (o_file); - g_free (as_file); -} - -int -main () -{ - Ia64CodegenState code; - - guint8 *buf = g_malloc0 (40960); - - ia64_codegen_init (code, buf); - - ia64_add (code, 1, 2, 3); - ia64_add1 (code, 1, 2, 3); - ia64_sub (code, 1, 2, 3); - ia64_sub1 (code, 1, 2, 3); - ia64_addp4 (code, 1, 2, 3); - ia64_and (code, 1, 2, 3); - ia64_andcm (code, 1, 2, 3); - ia64_or (code, 1, 2, 3); - ia64_xor (code, 1, 2, 3); - ia64_shladd (code, 1, 2, 3, 4); - ia64_shladdp4 (code, 1, 2, 3, 4); - ia64_sub_imm (code, 1, 0x7f, 2); - ia64_sub_imm (code, 1, -1, 2); - ia64_and_imm (code, 1, -128, 2); - ia64_andcm_imm (code, 1, -128, 2); - ia64_or_imm (code, 1, -128, 2); - ia64_xor_imm (code, 1, -128, 2); - ia64_adds_imm (code, 1, 8191, 2); - ia64_adds_imm (code, 1, -8192, 2); - ia64_adds_imm (code, 1, 1234, 2); - ia64_adds_imm (code, 1, -1234, 2); - ia64_addp4_imm (code, 1, -1234, 2); - ia64_addl_imm (code, 1, 1234, 2); - ia64_addl_imm (code, 1, -1234, 2); - ia64_addl_imm (code, 1, 2097151, 2); - ia64_addl_imm (code, 1, -2097152, 2); - - ia64_cmp_lt (code, 1, 2, 1, 2); - ia64_cmp_ltu (code, 1, 2, 1, 2); - ia64_cmp_eq (code, 1, 2, 1, 2); - ia64_cmp_lt_unc (code, 1, 2, 1, 2); - ia64_cmp_ltu_unc (code, 1, 2, 1, 2); - ia64_cmp_eq_unc (code, 1, 2, 1, 2); - ia64_cmp_eq_and (code, 1, 2, 1, 2); - ia64_cmp_eq_or (code, 1, 2, 1, 2); - ia64_cmp_eq_or_andcm (code, 1, 2, 1, 2); - ia64_cmp_ne_and (code, 1, 2, 1, 2); - ia64_cmp_ne_or (code, 1, 2, 1, 2); - ia64_cmp_ne_or_andcm (code, 1, 2, 1, 2); - - ia64_cmp4_lt (code, 1, 2, 1, 2); - ia64_cmp4_ltu (code, 1, 2, 1, 2); - ia64_cmp4_eq (code, 1, 2, 1, 2); - ia64_cmp4_lt_unc (code, 1, 2, 1, 2); - ia64_cmp4_ltu_unc (code, 1, 2, 1, 2); - ia64_cmp4_eq_unc (code, 1, 2, 1, 2); - ia64_cmp4_eq_and (code, 1, 2, 1, 2); - ia64_cmp4_eq_or (code, 1, 2, 1, 2); - ia64_cmp4_eq_or_andcm (code, 1, 2, 1, 2); - ia64_cmp4_ne_and (code, 1, 2, 1, 2); - ia64_cmp4_ne_or (code, 1, 2, 1, 2); - ia64_cmp4_ne_or_andcm (code, 1, 2, 1, 2); - - ia64_cmp_gt_and (code, 1, 2, 0, 2); - ia64_cmp_gt_or (code, 1, 2, 0, 2); - ia64_cmp_gt_or_andcm (code, 1, 2, 0, 2); - ia64_cmp_le_and (code, 1, 2, 0, 2); - ia64_cmp_le_or (code, 1, 2, 0, 2); - ia64_cmp_le_or_andcm (code, 1, 2, 0, 2); - ia64_cmp_ge_and (code, 1, 2, 0, 2); - ia64_cmp_ge_or (code, 1, 2, 0, 2); - ia64_cmp_ge_or_andcm (code, 1, 2, 0, 2); - ia64_cmp_lt_and (code, 1, 2, 0, 2); - ia64_cmp_lt_or (code, 1, 2, 0, 2); - ia64_cmp_lt_or_andcm (code, 1, 2, 0, 2); - - ia64_cmp4_gt_and (code, 1, 2, 0, 2); - ia64_cmp4_gt_or (code, 1, 2, 0, 2); - ia64_cmp4_gt_or_andcm (code, 1, 2, 0, 2); - ia64_cmp4_le_and (code, 1, 2, 0, 2); - ia64_cmp4_le_or (code, 1, 2, 0, 2); - ia64_cmp4_le_or_andcm (code, 1, 2, 0, 2); - ia64_cmp4_ge_and (code, 1, 2, 0, 2); - ia64_cmp4_ge_or (code, 1, 2, 0, 2); - ia64_cmp4_ge_or_andcm (code, 1, 2, 0, 2); - ia64_cmp4_lt_and (code, 1, 2, 0, 2); - ia64_cmp4_lt_or (code, 1, 2, 0, 2); - ia64_cmp4_lt_or_andcm (code, 1, 2, 0, 2); - - ia64_cmp_lt_imm (code, 1, 2, 127, 2); - ia64_cmp_lt_imm (code, 1, 2, -128, 2); - - ia64_cmp_lt_imm (code, 1, 2, -128, 2); - ia64_cmp_ltu_imm (code, 1, 2, -128, 2); - ia64_cmp_eq_imm (code, 1, 2, -128, 2); - ia64_cmp_lt_unc_imm (code, 1, 2, -128, 2); - ia64_cmp_ltu_unc_imm (code, 1, 2, -128, 2); - ia64_cmp_eq_unc_imm (code, 1, 2, -128, 2); - ia64_cmp_eq_and_imm (code, 1, 2, -128, 2); - ia64_cmp_eq_or_imm (code, 1, 2, -128, 2); - ia64_cmp_eq_unc_imm (code, 1, 2, -128, 2); - ia64_cmp_ne_and_imm (code, 1, 2, -128, 2); - ia64_cmp_ne_or_imm (code, 1, 2, -128, 2); - ia64_cmp_ne_or_andcm_imm (code, 1, 2, -128, 2); - - ia64_cmp4_lt_imm (code, 1, 2, -128, 2); - ia64_cmp4_ltu_imm (code, 1, 2, -128, 2); - ia64_cmp4_eq_imm (code, 1, 2, -128, 2); - ia64_cmp4_lt_unc_imm (code, 1, 2, -128, 2); - ia64_cmp4_ltu_unc_imm (code, 1, 2, -128, 2); - ia64_cmp4_eq_unc_imm (code, 1, 2, -128, 2); - ia64_cmp4_eq_and_imm (code, 1, 2, -128, 2); - ia64_cmp4_eq_or_imm (code, 1, 2, -128, 2); - ia64_cmp4_eq_unc_imm (code, 1, 2, -128, 2); - ia64_cmp4_ne_and_imm (code, 1, 2, -128, 2); - ia64_cmp4_ne_or_imm (code, 1, 2, -128, 2); - ia64_cmp4_ne_or_andcm_imm (code, 1, 2, -128, 2); - - ia64_padd1 (code, 1, 2, 3); - ia64_padd2 (code, 1, 2, 3); - ia64_padd4 (code, 1, 2, 3); - ia64_padd1_sss (code, 1, 2, 3); - ia64_padd2_sss (code, 1, 2, 3); - ia64_padd1_uuu (code, 1, 2, 3); - ia64_padd2_uuu (code, 1, 2, 3); - ia64_padd1_uus (code, 1, 2, 3); - ia64_padd2_uus (code, 1, 2, 3); - - ia64_psub1 (code, 1, 2, 3); - ia64_psub2 (code, 1, 2, 3); - ia64_psub4 (code, 1, 2, 3); - ia64_psub1_sss (code, 1, 2, 3); - ia64_psub2_sss (code, 1, 2, 3); - ia64_psub1_uuu (code, 1, 2, 3); - ia64_psub2_uuu (code, 1, 2, 3); - ia64_psub1_uus (code, 1, 2, 3); - ia64_psub2_uus (code, 1, 2, 3); - - ia64_pavg1 (code, 1, 2, 3); - ia64_pavg2 (code, 1, 2, 3); - ia64_pavg1_raz (code, 1, 2, 3); - ia64_pavg2_raz (code, 1, 2, 3); - ia64_pavgsub1 (code, 1, 2, 3); - ia64_pavgsub2 (code, 1, 2, 3); - ia64_pcmp1_eq (code, 1, 2, 3); - ia64_pcmp2_eq (code, 1, 2, 3); - ia64_pcmp4_eq (code, 1, 2, 3); - ia64_pcmp1_gt (code, 1, 2, 3); - ia64_pcmp2_gt (code, 1, 2, 3); - ia64_pcmp4_gt (code, 1, 2, 3); - - ia64_pshladd2 (code, 1, 2, 3, 4); - ia64_pshradd2 (code, 1, 2, 3, 4); - - ia64_pmpyshr2 (code, 1, 2, 3, 0); - ia64_pmpyshr2_u (code, 1, 2, 3, 0); - ia64_pmpyshr2 (code, 1, 2, 3, 7); - ia64_pmpyshr2_u (code, 1, 2, 3, 7); - ia64_pmpyshr2 (code, 1, 2, 3, 15); - ia64_pmpyshr2_u (code, 1, 2, 3, 15); - ia64_pmpyshr2 (code, 1, 2, 3, 16); - ia64_pmpyshr2_u (code, 1, 2, 3, 16); - - ia64_pmpy2_r (code, 1, 2, 3); - ia64_pmpy2_l (code, 1, 2, 3); - ia64_mix1_r (code, 1, 2, 3); - ia64_mix2_r (code, 1, 2, 3); - ia64_mix4_r (code, 1, 2, 3); - ia64_mix1_l (code, 1, 2, 3); - ia64_mix2_l (code, 1, 2, 3); - ia64_mix4_l (code, 1, 2, 3); - ia64_pack2_uss (code, 1, 2, 3); - ia64_pack2_sss (code, 1, 2, 3); - ia64_pack4_sss (code, 1, 2, 3); - ia64_unpack1_h (code, 1, 2, 3); - ia64_unpack2_h (code, 1, 2, 3); - ia64_unpack4_h (code, 1, 2, 3); - ia64_unpack1_l (code, 1, 2, 3); - ia64_unpack2_l (code, 1, 2, 3); - ia64_unpack4_l (code, 1, 2, 3); - ia64_pmin1_u (code, 1, 2, 3); - ia64_pmax1_u (code, 1, 2, 3); - ia64_pmin2 (code, 1, 2, 3); - ia64_pmax2 (code, 1, 2, 3); - ia64_psad1 (code, 1, 2, 3); - - ia64_mux1 (code, 1, 2, IA64_MUX1_BRCST); - ia64_mux1 (code, 1, 2, IA64_MUX1_MIX); - ia64_mux1 (code, 1, 2, IA64_MUX1_SHUF); - ia64_mux1 (code, 1, 2, IA64_MUX1_ALT); - ia64_mux1 (code, 1, 2, IA64_MUX1_REV); - - ia64_mux2 (code, 1, 2, 0x8d); - - ia64_pshr2 (code, 1, 2, 3); - ia64_pshr4 (code, 1, 2, 3); - ia64_shr (code, 1, 2, 3); - ia64_pshr2_u (code, 1, 2, 3); - ia64_pshr4_u (code, 1, 2, 3); - ia64_shr_u (code, 1, 2, 3); - - ia64_pshr2_imm (code, 1, 2, 20); - ia64_pshr4_imm (code, 1, 2, 20); - ia64_pshr2_u_imm (code, 1, 2, 20); - ia64_pshr4_u_imm (code, 1, 2, 20); - - ia64_pshl2 (code, 1, 2, 3); - ia64_pshl4 (code, 1, 2, 3); - ia64_shl (code, 1, 2, 3); - - ia64_pshl2_imm (code, 1, 2, 20); - ia64_pshl4_imm (code, 1, 2, 20); - - ia64_popcnt (code, 1, 2); - - ia64_shrp (code, 1, 2, 3, 62); - - ia64_extr_u (code, 1, 2, 62, 61); - ia64_extr (code, 1, 2, 62, 61); - - ia64_dep_z (code, 1, 2, 62, 61); - - ia64_dep_z_imm (code, 1, 127, 62, 61); - ia64_dep_z_imm (code, 1, -128, 62, 61); - ia64_dep_imm (code, 1, 0, 2, 62, 61); - ia64_dep_imm (code, 1, -1, 2, 62, 61); - ia64_dep (code, 1, 2, 3, 10, 15); - - ia64_tbit_z (code, 1, 2, 3, 0); - - ia64_tbit_z (code, 1, 2, 3, 63); - ia64_tbit_z_unc (code, 1, 2, 3, 63); - ia64_tbit_z_and (code, 1, 2, 3, 63); - ia64_tbit_nz_and (code, 1, 2, 3, 63); - ia64_tbit_z_or (code, 1, 2, 3, 63); - ia64_tbit_nz_or (code, 1, 2, 3, 63); - ia64_tbit_z_or_andcm (code, 1, 2, 3, 63); - ia64_tbit_nz_or_andcm (code, 1, 2, 3, 63); - - ia64_tnat_z (code, 1, 2, 3); - ia64_tnat_z_unc (code, 1, 2, 3); - ia64_tnat_z_and (code, 1, 2, 3); - ia64_tnat_nz_and (code, 1, 2, 3); - ia64_tnat_z_or (code, 1, 2, 3); - ia64_tnat_nz_or (code, 1, 2, 3); - ia64_tnat_z_or_andcm (code, 1, 2, 3); - ia64_tnat_nz_or_andcm (code, 1, 2, 3); - - ia64_nop_i (code, 0x1234); - ia64_hint_i (code, 0x1234); - - ia64_break_i (code, 0x1234); - - ia64_chk_s_i (code, 1, 0); - ia64_chk_s_i (code, 1, -1); - ia64_chk_s_i (code, 1, 1); - - ia64_mov_to_br_hint (code, 1, 1, -1, IA64_MOV_TO_BR_WH_NONE, 0); - ia64_mov_to_br_hint (code, 1, 1, -1, IA64_MOV_TO_BR_WH_SPTK, 0); - ia64_mov_to_br_hint (code, 1, 1, -1, IA64_MOV_TO_BR_WH_DPTK, 0); - ia64_mov_to_br_hint (code, 1, 1, -1, IA64_MOV_TO_BR_WH_DPTK, IA64_BR_IH_IMP); - ia64_mov_ret_to_br_hint (code, 1, 1, -1, IA64_MOV_TO_BR_WH_NONE, 0); - - ia64_mov_from_br (code, 1, 1); - - ia64_mov_to_pred (code, 1, 0xfe); - - ia64_mov_to_pred_rot_imm (code, 0xff0000); - - ia64_mov_from_ip (code, 1); - ia64_mov_from_pred (code, 1); - - ia64_mov_to_ar_i (code, 1, 1); - - ia64_mov_to_ar_imm_i (code, 1, 127); - - ia64_mov_from_ar_i (code, 1, 1); - - ia64_zxt1 (code, 1, 2); - ia64_zxt2 (code, 1, 2); - ia64_zxt4 (code, 1, 2); - ia64_sxt1 (code, 1, 2); - ia64_sxt2 (code, 1, 2); - ia64_sxt4 (code, 1, 2); - - ia64_czx1_l (code, 1, 2); - ia64_czx2_l (code, 1, 2); - ia64_czx1_r (code, 1, 2); - ia64_czx2_r (code, 1, 2); - - ia64_ld1_hint (code, 1, 2, IA64_LD_HINT_NONE); - ia64_ld1_hint (code, 1, 2, IA64_LD_HINT_NT1); - ia64_ld1_hint (code, 1, 2, IA64_LD_HINT_NTA); - - ia64_ld1_hint (code, 1, 2, 0); - ia64_ld2_hint (code, 1, 2, 0); - ia64_ld4_hint (code, 1, 2, 0); - ia64_ld8_hint (code, 1, 2, 0); - - ia64_ld1_s_hint (code, 1, 2, 0); - ia64_ld2_s_hint (code, 1, 2, 0); - ia64_ld4_s_hint (code, 1, 2, 0); - ia64_ld8_s_hint (code, 1, 2, 0); - - ia64_ld1_a_hint (code, 1, 2, 0); - ia64_ld2_a_hint (code, 1, 2, 0); - ia64_ld4_a_hint (code, 1, 2, 0); - ia64_ld8_a_hint (code, 1, 2, 0); - - ia64_ld1_sa_hint (code, 1, 2, 0); - ia64_ld2_sa_hint (code, 1, 2, 0); - ia64_ld4_sa_hint (code, 1, 2, 0); - ia64_ld8_sa_hint (code, 1, 2, 0); - - ia64_ld1_bias_hint (code, 1, 2, 0); - ia64_ld2_bias_hint (code, 1, 2, 0); - ia64_ld4_bias_hint (code, 1, 2, 0); - ia64_ld8_bias_hint (code, 1, 2, 0); - - ia64_ld1_inc_hint (code, 1, 2, 3, IA64_LD_HINT_NONE); - - ia64_ld1_inc_imm_hint (code, 1, 2, 255, IA64_LD_HINT_NONE); - ia64_ld1_inc_imm_hint (code, 1, 2, -256, IA64_LD_HINT_NONE); - - ia64_st1_hint (code, 1, 2, IA64_ST_HINT_NTA); - - ia64_st1_hint (code, 1, 2, IA64_ST_HINT_NONE); - ia64_st2_hint (code, 1, 2, IA64_ST_HINT_NONE); - ia64_st4_hint (code, 1, 2, IA64_ST_HINT_NONE); - ia64_st8_hint (code, 1, 2, IA64_ST_HINT_NONE); - - ia64_st1_rel_hint (code, 1, 2, IA64_ST_HINT_NONE); - ia64_st2_rel_hint (code, 1, 2, IA64_ST_HINT_NONE); - ia64_st4_rel_hint (code, 1, 2, IA64_ST_HINT_NONE); - ia64_st8_rel_hint (code, 1, 2, IA64_ST_HINT_NONE); - - ia64_st8_spill_hint (code, 1, 2, IA64_ST_HINT_NONE); - - ia64_st16_hint (code, 1, 2, IA64_ST_HINT_NONE); - ia64_st16_rel_hint (code, 1, 2, IA64_ST_HINT_NONE); - - ia64_st1_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - ia64_st2_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - ia64_st4_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - ia64_st8_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - - ia64_st1_rel_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - ia64_st2_rel_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - ia64_st4_rel_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - ia64_st8_rel_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - - ia64_st8_spill_inc_imm_hint (code, 1, 2, 255, IA64_ST_HINT_NONE); - - ia64_ldfs_hint (code, 1, 2, 0); - ia64_ldfd_hint (code, 1, 2, 0); - ia64_ldf8_hint (code, 1, 2, 0); - ia64_ldfe_hint (code, 1, 2, 0); - - ia64_ldfs_s_hint (code, 1, 2, 0); - ia64_ldfd_s_hint (code, 1, 2, 0); - ia64_ldf8_s_hint (code, 1, 2, 0); - ia64_ldfe_s_hint (code, 1, 2, 0); - - ia64_ldfs_a_hint (code, 1, 2, 0); - ia64_ldfd_a_hint (code, 1, 2, 0); - ia64_ldf8_a_hint (code, 1, 2, 0); - ia64_ldfe_a_hint (code, 1, 2, 0); - - ia64_ldfs_sa_hint (code, 1, 2, 0); - ia64_ldfd_sa_hint (code, 1, 2, 0); - ia64_ldf8_sa_hint (code, 1, 2, 0); - ia64_ldfe_sa_hint (code, 1, 2, 0); - - ia64_ldfs_c_clr_hint (code, 1, 2, 0); - ia64_ldfd_c_clr_hint (code, 1, 2, 0); - ia64_ldf8_c_clr_hint (code, 1, 2, 0); - ia64_ldfe_c_clr_hint (code, 1, 2, 0); - - ia64_ldfs_c_nc_hint (code, 1, 2, 0); - ia64_ldfd_c_nc_hint (code, 1, 2, 0); - ia64_ldf8_c_nc_hint (code, 1, 2, 0); - ia64_ldfe_c_nc_hint (code, 1, 2, 0); - - ia64_ldf_fill_hint (code, 1, 2, 0); - - ia64_ldfs_inc_hint (code, 1, 2, 3, 0); - ia64_ldfd_inc_hint (code, 1, 2, 3, 0); - ia64_ldf8_inc_hint (code, 1, 2, 3, 0); - ia64_ldfe_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfs_s_inc_hint (code, 1, 2, 3, 0); - ia64_ldfd_s_inc_hint (code, 1, 2, 3, 0); - ia64_ldf8_s_inc_hint (code, 1, 2, 3, 0); - ia64_ldfe_s_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfs_a_inc_hint (code, 1, 2, 3, 0); - ia64_ldfd_a_inc_hint (code, 1, 2, 3, 0); - ia64_ldf8_a_inc_hint (code, 1, 2, 3, 0); - ia64_ldfe_a_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfs_sa_inc_hint (code, 1, 2, 3, 0); - ia64_ldfd_sa_inc_hint (code, 1, 2, 3, 0); - ia64_ldf8_sa_inc_hint (code, 1, 2, 3, 0); - ia64_ldfe_sa_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfs_c_clr_inc_hint (code, 1, 2, 3, 0); - ia64_ldfd_c_clr_inc_hint (code, 1, 2, 3, 0); - ia64_ldf8_c_clr_inc_hint (code, 1, 2, 3, 0); - ia64_ldfe_c_clr_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfs_c_nc_inc_hint (code, 1, 2, 3, 0); - ia64_ldfd_c_nc_inc_hint (code, 1, 2, 3, 0); - ia64_ldf8_c_nc_inc_hint (code, 1, 2, 3, 0); - ia64_ldfe_c_nc_inc_hint (code, 1, 2, 3, 0); - - ia64_ldf_fill_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfs_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfd_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldf8_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfe_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_ldfs_s_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfd_s_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldf8_s_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfe_s_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_ldfs_a_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfd_a_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldf8_a_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfe_a_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_ldfs_sa_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfd_sa_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldf8_sa_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfe_sa_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_ldfs_c_clr_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfd_c_clr_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldf8_c_clr_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfe_c_clr_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_ldfs_c_nc_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfd_c_nc_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldf8_c_nc_inc_imm_hint (code, 1, 2, 255, 0); - ia64_ldfe_c_nc_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_ldf_fill_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_stfs_hint (code, 1, 2, 0); - ia64_stfd_hint (code, 1, 2, 0); - ia64_stf8_hint (code, 1, 2, 0); - ia64_stfe_hint (code, 1, 2, 0); - - ia64_stf_spill_hint (code, 1, 2, 0); - - ia64_stfs_inc_imm_hint (code, 1, 2, 255, 0); - ia64_stfd_inc_imm_hint (code, 1, 2, 255, 0); - ia64_stf8_inc_imm_hint (code, 1, 2, 255, 0); - ia64_stfe_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_stf_spill_inc_imm_hint (code, 1, 2, 255, 0); - - ia64_ldfps_hint (code, 1, 2, 3, 0); - ia64_ldfpd_hint (code, 1, 2, 3, 0); - ia64_ldfp8_hint (code, 1, 2, 3, 0); - - ia64_ldfps_s_hint (code, 1, 2, 3, 0); - ia64_ldfpd_s_hint (code, 1, 2, 3, 0); - ia64_ldfp8_s_hint (code, 1, 2, 3, 0); - - ia64_ldfps_a_hint (code, 1, 2, 3, 0); - ia64_ldfpd_a_hint (code, 1, 2, 3, 0); - ia64_ldfp8_a_hint (code, 1, 2, 3, 0); - - ia64_ldfps_sa_hint (code, 1, 2, 3, 0); - ia64_ldfpd_sa_hint (code, 1, 2, 3, 0); - ia64_ldfp8_sa_hint (code, 1, 2, 3, 0); - - ia64_ldfps_c_clr_hint (code, 1, 2, 3, 0); - ia64_ldfpd_c_clr_hint (code, 1, 2, 3, 0); - ia64_ldfp8_c_clr_hint (code, 1, 2, 3, 0); - - ia64_ldfps_c_nc_hint (code, 1, 2, 3, 0); - ia64_ldfpd_c_nc_hint (code, 1, 2, 3, 0); - ia64_ldfp8_c_nc_hint (code, 1, 2, 3, 0); - - ia64_ldfps_inc_hint (code, 1, 2, 3, 0); - ia64_ldfpd_inc_hint (code, 1, 2, 3, 0); - ia64_ldfp8_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfps_s_inc_hint (code, 1, 2, 3, 0); - ia64_ldfpd_s_inc_hint (code, 1, 2, 3, 0); - ia64_ldfp8_s_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfps_a_inc_hint (code, 1, 2, 3, 0); - ia64_ldfpd_a_inc_hint (code, 1, 2, 3, 0); - ia64_ldfp8_a_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfps_sa_inc_hint (code, 1, 2, 3, 0); - ia64_ldfpd_sa_inc_hint (code, 1, 2, 3, 0); - ia64_ldfp8_sa_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfps_c_clr_inc_hint (code, 1, 2, 3, 0); - ia64_ldfpd_c_clr_inc_hint (code, 1, 2, 3, 0); - ia64_ldfp8_c_clr_inc_hint (code, 1, 2, 3, 0); - - ia64_ldfps_c_nc_inc_hint (code, 1, 2, 3, 0); - ia64_ldfpd_c_nc_inc_hint (code, 1, 2, 3, 0); - ia64_ldfp8_c_nc_inc_hint (code, 1, 2, 3, 0); - - ia64_lfetch_hint (code, 1, 0); - ia64_lfetch_excl_hint (code, 1, 0); - ia64_lfetch_fault_hint (code, 1, 0); - ia64_lfetch_fault_excl_hint (code, 1, 0); - - ia64_lfetch_hint (code, 1, IA64_LFHINT_NT1); - ia64_lfetch_hint (code, 1, IA64_LFHINT_NT2); - ia64_lfetch_hint (code, 1, IA64_LFHINT_NTA); - - ia64_lfetch_inc_hint (code, 1, 2, 0); - ia64_lfetch_excl_inc_hint (code, 1, 2, 0); - ia64_lfetch_fault_inc_hint (code, 1, 2, 0); - ia64_lfetch_fault_excl_inc_hint (code, 1, 2, 0); - - ia64_lfetch_inc_imm_hint (code, 1, 255, 0); - ia64_lfetch_excl_inc_imm_hint (code, 1, 255, 0); - ia64_lfetch_fault_inc_imm_hint (code, 1, 255, 0); - ia64_lfetch_fault_excl_inc_imm_hint (code, 1, 255, 0); - - ia64_cmpxchg1_acq_hint (code, 1, 2, 3, 0); - ia64_cmpxchg2_acq_hint (code, 1, 2, 3, 0); - ia64_cmpxchg4_acq_hint (code, 1, 2, 3, 0); - ia64_cmpxchg8_acq_hint (code, 1, 2, 3, 0); - ia64_cmpxchg1_rel_hint (code, 1, 2, 3, 0); - ia64_cmpxchg2_rel_hint (code, 1, 2, 3, 0); - ia64_cmpxchg4_rel_hint (code, 1, 2, 3, 0); - ia64_cmpxchg8_rel_hint (code, 1, 2, 3, 0); - ia64_cmpxchg16_acq_hint (code, 1, 2, 3, 0); - ia64_cmpxchg16_rel_hint (code, 1, 2, 3, 0); - ia64_xchg1_hint (code, 1, 2, 3, 0); - ia64_xchg2_hint (code, 1, 2, 3, 0); - ia64_xchg4_hint (code, 1, 2, 3, 0); - ia64_xchg8_hint (code, 1, 2, 3, 0); - - ia64_fetchadd4_acq_hint (code, 1, 2, -16, 0); - ia64_fetchadd4_acq_hint (code, 1, 2, -8, 0); - ia64_fetchadd4_acq_hint (code, 1, 2, -4, 0); - ia64_fetchadd4_acq_hint (code, 1, 2, -1, 0); - ia64_fetchadd4_acq_hint (code, 1, 2, 1, 0); - ia64_fetchadd4_acq_hint (code, 1, 2, 4, 0); - ia64_fetchadd4_acq_hint (code, 1, 2, 8, 0); - ia64_fetchadd4_acq_hint (code, 1, 2, 16, 0); - - ia64_fetchadd4_acq_hint (code, 1, 2, 16, 0); - ia64_fetchadd8_acq_hint (code, 1, 2, 16, 0); - ia64_fetchadd4_rel_hint (code, 1, 2, 16, 0); - ia64_fetchadd8_rel_hint (code, 1, 2, 16, 0); - - ia64_setf_sig (code, 1, 2); - ia64_setf_exp (code, 1, 2); - ia64_setf_s (code, 1, 2); - ia64_setf_d (code, 1, 2); - - ia64_getf_sig (code, 1, 2); - ia64_getf_exp (code, 1, 2); - ia64_getf_s (code, 1, 2); - ia64_getf_d (code, 1, 2); - - ia64_chk_s_m (code, 1, 0); - ia64_chk_s_m (code, 1, 1); - ia64_chk_s_m (code, 1, -1); - - ia64_chk_s_float_m (code, 1, 0); - - ia64_chk_a_nc (code, 1, 0); - ia64_chk_a_nc (code, 1, 1); - ia64_chk_a_nc (code, 1, -1); - - ia64_chk_a_nc (code, 1, 0); - ia64_chk_a_clr (code, 1, 0); - - ia64_chk_a_nc_float (code, 1, 0); - ia64_chk_a_clr_float (code, 1, 0); - - ia64_invala (code); - ia64_fwb (code); - ia64_mf (code); - ia64_mf_a (code); - ia64_srlz_d (code); - ia64_stlz_i (code); - ia64_sync_i (code); - - ia64_flushrs (code); - ia64_loadrs (code); - - ia64_invala_e (code, 1); - ia64_invala_e_float (code, 1); - - ia64_fc (code, 1); - ia64_fc_i (code, 1); - - ia64_mov_to_ar_m (code, 1, 1); - - ia64_mov_to_ar_imm_m (code, 1, 127); - - ia64_mov_from_ar_m (code, 1, 1); - - ia64_mov_to_cr (code, 1, 2); - - ia64_mov_from_cr (code, 1, 2); - - ia64_alloc (code, 1, 3, 4, 5, 0); - ia64_alloc (code, 1, 3, 4, 5, 8); - - ia64_mov_to_psr_l (code, 1); - ia64_mov_to_psr_um (code, 1); - - ia64_mov_from_psr (code, 1); - ia64_mov_from_psr_um (code, 1); - - ia64_break_m (code, 0x1234); - ia64_nop_m (code, 0x1234); - ia64_hint_m (code, 0x1234); - - ia64_br_cond_hint (code, 0, 0, 0, 0); - ia64_br_wexit_hint (code, 0, 0, 0, 0); - ia64_br_wtop_hint (code, 0, 0, 0, 0); - - ia64_br_cloop_hint (code, 0, 0, 0, 0); - ia64_br_cexit_hint (code, 0, 0, 0, 0); - ia64_br_ctop_hint (code, 0, 0, 0, 0); - - ia64_br_call_hint (code, 1, 0, 0, 0, 0); - - ia64_br_cond_reg_hint (code, 1, 0, 0, 0); - ia64_br_ia_reg_hint (code, 1, 0, 0, 0); - ia64_br_ret_reg_hint (code, 1, 0, 0, 0); - - ia64_br_call_reg_hint (code, 1, 2, 0, 0, 0); - - ia64_cover (code); - ia64_clrrrb (code); - ia64_clrrrb_pr (code); - ia64_rfi (code); - ia64_bsw_0 (code); - ia64_bsw_1 (code); - ia64_epc (code); - - ia64_break_b (code, 0x1234); - ia64_nop_b (code, 0x1234); - ia64_hint_b (code, 0x1234); - - ia64_break_x (code, 0x2123456789ABCDEFULL); - - ia64_movl (code, 1, 0x123456789ABCDEF0LL); - - ia64_brl_cond_hint (code, 0, 0, 0, 0); - ia64_brl_cond_hint (code, -1, 0, 0, 0); - - ia64_brl_call_hint (code, 1, 0, 0, 0, 0); - ia64_brl_call_hint (code, 1, -1, 0, 0, 0); - - ia64_nop_x (code, 0x2123456789ABCDEFULL); - ia64_hint_x (code, 0x2123456789ABCDEFULL); - - ia64_movl_pred (code, 1, 1, 0x123456789ABCDEF0LL); - - /* FLOATING-POINT */ - ia64_fma_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fma_s_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fma_d_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fpma_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fms_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fms_s_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fms_d_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fpms_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fnma_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fnma_s_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fnma_d_sf_pred (code, 1, 1, 2, 3, 4, 2); - ia64_fpnma_sf_pred (code, 1, 1, 2, 3, 4, 2); - - ia64_xma_l_pred (code, 1, 1, 2, 3, 4); - ia64_xma_h_pred (code, 1, 1, 2, 3, 4); - ia64_xma_hu_pred (code, 1, 1, 2, 3, 4); - - ia64_fselect_pred (code, 1, 1, 2, 3, 4); - - ia64_fcmp_eq_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fcmp_lt_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fcmp_le_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fcmp_unord_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fcmp_eq_unc_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fcmp_lt_unc_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fcmp_le_unc_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fcmp_unord_unc_sf_pred (code, 1, 1, 2, 3, 4, 0); - - ia64_fclass_m_pred (code, 1, 1, 2, 3, 0x1ff); - ia64_fclass_m_unc_pred (code, 1, 1, 2, 3, 0x1ff); - - ia64_frcpa_sf_pred (code, 1, 1, 2, 3, 4, 0); - ia64_fprcpa_sf_pred (code, 1, 1, 2, 3, 4, 0); - - ia64_frsqrta_sf_pred (code, 1, 1, 2, 4, 0); - ia64_fprsqrta_sf_pred (code, 1, 1, 2, 4, 0); - - ia64_fmin_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fman_sf_pred (code, 1, 2, 3, 4, 0); - ia64_famin_sf_pred (code, 1, 2, 3, 4, 0); - ia64_famax_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpmin_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpman_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpamin_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpamax_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_eq_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_lt_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_le_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_unord_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_neq_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_nlt_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_nle_sf_pred (code, 1, 2, 3, 4, 0); - ia64_fpcmp_ord_sf_pred (code, 1, 2, 3, 4, 0); - - ia64_fmerge_s_pred (code, 1, 2, 3, 4); - ia64_fmerge_ns_pred (code, 1, 2, 3, 4); - ia64_fmerge_se_pred (code, 1, 2, 3, 4); - ia64_fmix_lr_pred (code, 1, 2, 3, 4); - ia64_fmix_r_pred (code, 1, 2, 3, 4); - ia64_fmix_l_pred (code, 1, 2, 3, 4); - ia64_fsxt_r_pred (code, 1, 2, 3, 4); - ia64_fsxt_l_pred (code, 1, 2, 3, 4); - ia64_fpack_pred (code, 1, 2, 3, 4); - ia64_fswap_pred (code, 1, 2, 3, 4); - ia64_fswap_nl_pred (code, 1, 2, 3, 4); - ia64_fswap_nr_pred (code, 1, 2, 3, 4); - ia64_fand_pred (code, 1, 2, 3, 4); - ia64_fandcm_pred (code, 1, 2, 3, 4); - ia64_for_pred (code, 1, 2, 3, 4); - ia64_fxor_pred (code, 1, 2, 3, 4); - ia64_fpmerge_s_pred (code, 1, 2, 3, 4); - ia64_fpmerge_ns_pred (code, 1, 2, 3, 4); - ia64_fpmerge_se_pred (code, 1, 2, 3, 4); - - ia64_fcvt_fx_sf_pred ((code), 1, 2, 3, 0); - ia64_fcvt_fxu_sf_pred ((code), 1, 2, 3, 0); - ia64_fcvt_fx_trunc_sf_pred ((code), 1, 2, 3, 0); - ia64_fcvt_fxu_trunc_sf_pred ((code), 1, 2, 3, 0); - ia64_fpcvt_fx_sf_pred ((code), 1, 2, 3, 0); - ia64_fpcvt_fxu_sf_pred ((code), 1, 2, 3, 0); - ia64_fpcvt_fx_trunc_sf_pred ((code), 1, 2, 3, 0); - ia64_fpcvt_fxu_trunc_sf_pred ((code), 1, 2, 3, 0); - - ia64_fcvt_xf_pred ((code), 1, 2, 3); - - ia64_fsetc_sf_pred ((code), 1, 0x33, 0x33, 3); - - ia64_fclrf_sf_pred ((code), 1, 3); - - ia64_fchkf_sf_pred ((code), 1, -1, 3); - - ia64_break_f_pred ((code), 1, 0x1234); - - ia64_movl (code, 31, -123456); - - ia64_codegen_close (code); - -#if 0 - /* disassembly */ - { - guint8 *buf = code.buf; - int template; - guint64 dw1, dw2; - guint64 ins1, ins2, ins3; - - ia64_break_i (code, 0x1234); - - ia64_codegen_close (code); - - dw1 = ((guint64*)buf) [0]; - dw2 = ((guint64*)buf) [1]; - - template = ia64_bundle_template (buf); - ins1 = ia64_bundle_ins1 (buf); - ins2 = ia64_bundle_ins2 (buf); - ins3 = ia64_bundle_ins3 (buf); - - code.buf = buf; - ia64_emit_bundle_template (&code, template, ins1, ins2, ins3); - - g_assert (dw1 == ((guint64*)buf) [0]); - g_assert (dw2 == ((guint64*)buf) [1]); - } -#endif - - mono_disassemble_code (buf, 40960, "code"); - - return 0; -} diff --git a/FFTS/Sources/FFTS/src/arch/ia64/ia64-codegen.h b/FFTS/Sources/FFTS/src/arch/ia64/ia64-codegen.h deleted file mode 100644 index 1793580..0000000 --- a/FFTS/Sources/FFTS/src/arch/ia64/ia64-codegen.h +++ /dev/null @@ -1,3183 +0,0 @@ -/* - * ia64-codegen.h: Macros for generating ia64 code - * - * Authors: - * Zoltan Varga (vargaz@gmail.com) - * - * (C) 2005 Novell, Inc. - */ - -#ifndef _IA64_CODEGEN_H_ -#define _IA64_CODEGEN_H_ - -#include -#include - -#define UNW_LOCAL_ONLY -#include - -typedef enum { - IA64_INS_TYPE_A, - IA64_INS_TYPE_I, - IA64_INS_TYPE_M, - IA64_INS_TYPE_F, - IA64_INS_TYPE_B, - IA64_INS_TYPE_LX -} Ia64InsType; - -typedef enum { - IA64_TEMPLATE_MII = 0x00, - IA64_TEMPLATE_MIIS = 0x01, - IA64_TEMPLATE_MISI = 0x02, - IA64_TEMPLATE_MISIS = 0x03, - IA64_TEMPLATE_MLX = 0x04, - IA64_TEMPLATE_MLXS = 0x05, - IA64_TEMPLATE_UNUS1 = 0x06, - IA64_TEMPLATE_UNUS2 = 0x07, - IA64_TEMPLATE_MMI = 0x08, - IA64_TEMPLATE_MMIS = 0x09, - IA64_TEMPLATE_MSMI = 0x0A, - IA64_TEMPLATE_MSMIS = 0x0B, - IA64_TEMPLATE_MFI = 0x0C, - IA64_TEMPLATE_MFIS = 0x0D, - IA64_TEMPLATE_MMF = 0x0E, - IA64_TEMPLATE_MMFS = 0x0F, - IA64_TEMPLATE_MIB = 0x10, - IA64_TEMPLATE_MIBS = 0x11, - IA64_TEMPLATE_MBB = 0x12, - IA64_TEMPLATE_MBBS = 0x13, - IA64_TEMPLATE_UNUS3 = 0x14, - IA64_TEMPLATE_UNUS4 = 0x15, - IA64_TEMPLATE_BBB = 0x16, - IA64_TEMPLATE_BBBS = 0x17, - IA64_TEMPLATE_MMB = 0x18, - IA64_TEMPLATE_MMBS = 0x19, - IA64_TEMPLATE_UNUS5 = 0x1A, - IA64_TEMPLATE_UNUS6 = 0x1B, - IA64_TEMPLATE_MFB = 0x1C, - IA64_TEMPLATE_MFBS = 0x1D, - IA64_TEMPLATE_UNUS7 = 0x1E, - IA64_TEMPLATE_UNUS8 = 0x1F, -} Ia64BundleTemplate; - -typedef enum { - IA64_R0 = 0, - IA64_R1 = 1, - IA64_R2 = 2, - IA64_R3 = 3, - IA64_R4 = 4, - IA64_R5 = 5, - IA64_R6 = 6, - IA64_R7 = 7, - IA64_R8 = 8, - IA64_R9 = 9, - IA64_R10 = 10, - IA64_R11 = 11, - IA64_R12 = 12, - IA64_R13 = 13, - IA64_R14 = 14, - IA64_R15 = 15, - IA64_R16 = 16, - IA64_R17 = 17, - IA64_R18 = 18, - IA64_R19 = 19, - IA64_R20 = 20, - IA64_R21 = 21, - IA64_R22 = 22, - IA64_R23 = 23, - IA64_R24 = 24, - IA64_R25 = 25, - IA64_R26 = 26, - IA64_R27 = 27, - IA64_R28 = 28, - IA64_R29 = 29, - IA64_R30 = 30, - IA64_R31 = 31, - - /* Aliases */ - IA64_GP = IA64_R1, - IA64_SP = IA64_R12, - IA64_TP = IA64_R13 -} Ia64GeneralRegister; - -typedef enum { - IA64_B0 = 0, - IA64_B1 = 1, - IA64_B2 = 2, - IA64_B3 = 3, - IA64_B4 = 4, - IA64_B5 = 5, - IA64_B6 = 6, - IA64_B7 = 7, - - /* Aliases */ - IA64_RP = IA64_B0 -} Ia64BranchRegister; - -typedef enum { - IA64_CCV = 32, - IA64_PFS = 64 -} Ia64ApplicationRegister; - -/* disassembly */ -#define ia64_bundle_template(code) ((*(guint64*)(gpointer)code) & 0x1f) -#define ia64_bundle_ins1(code) (((*(guint64*)(gpointer)code) >> 5) & 0x1ffffffffff) -#define ia64_bundle_ins2(code) (((*(guint64*)(gpointer)code) >> 46) | ((((guint64*)(gpointer)code)[1] & 0x7fffff) << 18)) -#define ia64_bundle_ins3(code) ((((guint64*)(gpointer)code)[1]) >> 23) - -#define ia64_ins_opcode(ins) (((guint64)(ins)) >> 37) -#define ia64_ins_qp(ins) (((guint64)(ins)) & 0x3f) -#define ia64_ins_r1(ins) ((((guint64)(ins)) >> 6) & 0x7f) -#define ia64_ins_r2(ins) ((((guint64)(ins)) >> 13) & 0x7f) -#define ia64_ins_r3(ins) ((((guint64)(ins)) >> 20) & 0x7f) - -#define ia64_ins_b1(ins) ((((guint64)(ins)) >> 6) & 0x7) -#define ia64_ins_b2(ins) ((((guint64)(ins)) >> 13) & 0x7) -#define ia64_ins_btype(ins) ((((guint64)(ins)) >> 6) & 0x7) -#define ia64_ins_x(ins) ((((guint64)(ins)) >> 22) & 0x1) -#define ia64_ins_x2a(ins) ((((guint64)(ins)) >> 34) & 0x3) -#define ia64_ins_x2b(ins) ((((guint64)(ins)) >> 27) & 0x3) -#define ia64_ins_x3(ins) ((((guint64)(ins)) >> 33) & 0x7) -#define ia64_ins_x4(ins) ((((guint64)(ins)) >> 29) & 0xf) -#define ia64_ins_x6(ins) ((((guint64)(ins)) >> 27) & 0x3f) -#define ia64_ins_y(ins) ((((guint64)(ins)) >> 26) & 0x1) -#define ia64_ins_vc(ins) ((((guint64)(ins)) >> 20) & 0x1) -#define ia64_ins_ve(ins) ((((guint64)(ins)) >> 33) & 0x1) - -#define IA64_NOP_I ((0x01 << 27)) -#define IA64_NOP_M ((0x01 << 27)) -#define IA64_NOP_B (((long)0x02 << 37)) -#define IA64_NOP_F ((0x01 << 27)) -#define IA64_NOP_X ((0x01 << 27)) - -/* - * READ_PR_BRANCH and WRITE_PR_FLOAT are used to be able to place comparisons - * + branches in the same instruction group. - */ -typedef enum { - IA64_READ_GR, - IA64_WRITE_GR, - IA64_READ_PR, - IA64_WRITE_PR, - IA64_READ_PR_BRANCH, - IA64_WRITE_PR_FLOAT, - IA64_READ_BR, - IA64_WRITE_BR, - IA64_READ_BR_BRANCH, - IA64_READ_FR, - IA64_WRITE_FR, - IA64_READ_AR, - IA64_WRITE_AR, - IA64_NO_STOP, - IA64_END_OF_INS, - IA64_NONE -} Ia64Dependency; - -/* - * IA64 code cannot be emitted in the same way as code on other processors, - * since 3 instructions are combined into a bundle. This structure keeps track - * of already emitted instructions. - * - */ - -#define IA64_INS_BUFFER_SIZE 4 -#define MAX_UNW_OPS 8 - -typedef struct { - guint8 *buf; - guint one_ins_per_bundle : 1; - int nins, template, dep_info_pos, unw_op_pos, unw_op_count; - guint64 instructions [IA64_INS_BUFFER_SIZE]; - int itypes [IA64_INS_BUFFER_SIZE]; - guint8 *region_start; - guint8 dep_info [128]; - unw_dyn_op_t unw_ops [MAX_UNW_OPS]; - /* The index of the instruction to which the given unw op belongs */ - guint8 unw_ops_pos [MAX_UNW_OPS]; -} Ia64CodegenState; - -#ifdef IA64_SIMPLE_EMIT_BUNDLE -G_GNUC_UNUSED static void ia64_emit_bundle (Ia64CodegenState *code, gboolean flush); -#else -void ia64_emit_bundle (Ia64CodegenState *code, gboolean flush); -#endif - -#define ia64_codegen_init(code, codegen_buf) do { \ - code.buf = codegen_buf; \ - code.region_start = code.buf; \ - code.nins = 0; \ - code.one_ins_per_bundle = 0; \ - code.dep_info_pos = 0; \ - code.unw_op_count = 0; \ - code.unw_op_pos = 0; \ -} while (0) - -#define ia64_codegen_close(code) do { \ - ia64_emit_bundle (&code, TRUE); \ -} while (0) - -#define ia64_begin_bundle(code) do { \ - ia64_emit_bundle (&code, TRUE); \ -} while (0) - -#define ia64_codegen_set_one_ins_per_bundle(code, is_one) do { \ - ia64_begin_bundle (code); \ - code.one_ins_per_bundle = (is_one); \ -} while (0) - -#define ia64_begin_bundle_template(code, bundle_template) do { \ - ia64_emit_bundle (&code, TRUE); \ - code.template = (bundle_template); \ -} while (0) - -#define ia64_unw_save_reg(code, reg, dreg) do { \ - g_assert (code.unw_op_count <= MAX_UNW_OPS); \ - code.unw_ops_pos [code.unw_op_count] = code.nins; \ - _U_dyn_op_save_reg (&(code.unw_ops [code.unw_op_count ++]), _U_QP_TRUE, -1, reg, dreg); \ -} while (0) - -#define ia64_unw_add(code, reg, val) do { \ - g_assert (code.unw_op_count <= MAX_UNW_OPS); \ - code.unw_ops_pos [code.unw_op_count] = code.nins; \ - _U_dyn_op_add (&(code.unw_ops [code.unw_op_count ++]), _U_QP_TRUE, code.nins, reg, val); \ -} while (0) - -#define ia64_unw_pop_frames(code, nframes) do { \ - g_assert (code.unw_op_count <= MAX_UNW_OPS); \ - code.unw_ops_pos [code.unw_op_count] = code.nins; \ - _U_dyn_op_pop_frames (&(code.unw_ops [code.unw_op_count ++]), _U_QP_TRUE, code.nins, (nframes)); \ -} while (0) - -#define ia64_unw_label_state(code, id) do { \ - g_assert (code.unw_op_count <= MAX_UNW_OPS); \ - code.unw_ops_pos [code.unw_op_count] = code.nins; \ - _U_dyn_op_label_state (&(code.unw_ops [code.unw_op_count ++]), (id)); \ -} while (0) - - -#define ia64_unw_copy_state(code, id) do { \ - g_assert (code.unw_op_count <= MAX_UNW_OPS); \ - code.unw_ops_pos [code.unw_op_count] = code.nins; \ - _U_dyn_op_copy_state (&(code.unw_ops [code.unw_op_count ++]), (id)); \ -} while (0) - -#if 0 -/* To ease debugging, emit instructions immediately */ -#define EMIT_BUNDLE(itype, code) ((itype != IA64_INS_TYPE_LX) || (code.nins == 2)) ia64_emit_bundle (&code, FALSE); -#else -#define EMIT_BUNDLE(itype, code) if ((itype == IA64_INS_TYPE_LX) && (code.nins == 2)) ia64_emit_bundle (&code, FALSE); -#endif - -#define ia64_emit_ins(code, itype, ins) do { \ - code.instructions [code.nins] = ins; \ - code.itypes [code.nins] = itype; \ - code.nins ++; \ - code.dep_info [code.dep_info_pos ++] = IA64_END_OF_INS; \ - code.dep_info [code.dep_info_pos ++] = 0; \ - EMIT_BUNDLE (itype, code); \ - if (code.nins == IA64_INS_BUFFER_SIZE) \ - ia64_emit_bundle (&code, FALSE); \ -} while (0) - -#define ia64_no_stop(code) do { \ - code.dep_info [code.dep_info_pos ++] = IA64_NO_STOP; \ - code.dep_info [code.dep_info_pos ++] = 0; \ -} while (0) - -#if G_BYTE_ORDER != G_LITTLE_ENDIAN -#error "FIXME" -#endif - -#define ia64_emit_bundle_template(code, template, i1, i2, i3) do { \ - guint64 *buf64 = (guint64*)(gpointer)(code)->buf; \ - guint64 dw1, dw2; \ - dw1 = (((guint64)(template)) & 0x1f) | ((guint64)(i1) << 5) | ((((guint64)(i2)) & 0x3ffff) << 46); \ - dw2 = (((guint64)(i2)) >> 18) | (((guint64)(i3)) << 23); \ - buf64[0] = dw1; \ - buf64[1] = dw2; \ - (code)->buf += 16; \ -} while (0) - -#ifdef IA64_SIMPLE_EMIT_BUNDLE - -G_GNUC_UNUSED static void -ia64_emit_bundle (Ia64CodegenState *code, gboolean flush) -{ - int i; - - for (i = 0; i < code->nins; ++i) { - switch (code->itypes [i]) { - case IA64_INS_TYPE_A: - ia64_emit_bundle_template (code, IA64_TEMPLATE_MIIS, code->instructions [i], IA64_NOP_I, IA64_NOP_I); - break; - case IA64_INS_TYPE_I: - ia64_emit_bundle_template (code, IA64_TEMPLATE_MIIS, IA64_NOP_M, code->instructions [i], IA64_NOP_I); - break; - case IA64_INS_TYPE_M: - ia64_emit_bundle_template (code, IA64_TEMPLATE_MIIS, code->instructions [i], IA64_NOP_I, IA64_NOP_I); - break; - case IA64_INS_TYPE_B: - ia64_emit_bundle_template (code, IA64_TEMPLATE_MIBS, IA64_NOP_M, IA64_NOP_I, code->instructions [i]); - break; - case IA64_INS_TYPE_F: - ia64_emit_bundle_template (code, IA64_TEMPLATE_MFIS, IA64_NOP_M, code->instructions [i], IA64_NOP_I); - break; - case IA64_INS_TYPE_LX: - ia64_emit_bundle_template (code, IA64_TEMPLATE_MLXS, IA64_NOP_M, code->instructions [i], code->instructions [i + 1]); - i ++; - break; - default: - g_assert_not_reached (); - } - } - - code->nins = 0; - code->dep_info_pos = 0; -} - -#endif /* IA64_SIMPLE_EMIT_BUNDLE */ - -#define ia64_is_imm8(imm) (((gint64)(imm) >= -128) && ((gint64)(imm) <= 127)) -#define ia64_is_imm14(imm) (((gint64)(imm) >= -8192) && ((gint64)(imm) <= 8191)) -#define ia64_is_imm21(imm) (((gint64)(imm) >= -0x100000) && ((gint64)(imm) <= (0x100000 - 1))) - -#define ia64_is_adds_imm(imm) ia64_is_imm14((imm)) - -#if 1 - -#define check_assert(cond) g_assert((cond)) - -#else - -#define check_assert(cond) - -#endif - -#define check_greg(gr) check_assert ((guint64)(gr) < 128) - -#define check_freg(fr) check_assert ((guint64)(fr) < 128) - -#define check_fr(fr) check_assert ((guint64)(fr) < 128) - -#define check_preg(pr) check_assert ((guint64)(pr) < 64) - -#define check_breg(pr) check_assert ((guint64)(pr) < 8) - -#define check_count2(count) check_assert (((count) >= 1) && ((count) <= 4)) - -#define check_count5(count) check_assert (((count) >= 0) && ((count) < 32)) - -#define check_count6(count) check_assert (((count) >= 0) && ((count) < 64)) - -#define check_imm1(imm) check_assert (((gint64)(imm) >= -1) && ((gint64)(imm) <= 0)) -#define check_imm3(imm) check_assert (((gint64)(imm) >= -4) && ((gint64)(imm) <= 3)) -#define check_imm8(imm) check_assert (((gint64)(imm) >= -128) && ((gint64)(imm) <= 127)) -#define check_imm9(imm) check_assert (((gint64)(imm) >= -256) && ((gint64)(imm) <= 255)) -#define check_imm14(imm) check_assert (((gint64)(imm) >= -8192) && ((gint64)(imm) <= 8191)) -#define check_imm21(imm) check_assert (((gint64)(imm) >= -0x100000) && ((gint64)(imm) <= (0x100000 - 1))) -#define check_imm22(imm) check_assert (((gint64)(imm) >= -0x200000) && ((gint64)(imm) <= (0x200000 - 1))) -#define check_imm62(imm) check_assert (((gint64)(imm) >= -0x2fffffffffffffffLL) && ((gint64)(imm) <= (0x2fffffffffffffffLL - 1))) - -#define check_len4(len) check_assert (((gint64)(len) >= 1) && ((gint64)(len) <= 16)) - -#define check_bwh(bwh) check_assert ((bwh) >= 0 && (bwh) <= IA64_BWH_DPNT) - -#define check_ph(ph) check_assert ((ph) >= 0 && (ph) <= IA64_PH_MANY) - -#define check_dh(dh) check_assert ((dh) >= 0 && (dh) <= IA64_DH_CLR) - -#define check_sf(sf) check_assert ((sf) >= 0 && (sf) <= 3) - -#define sign_bit(imm) ((gint64)(imm) < 0 ? 1 : 0) - -/* Dependency info */ -#define read_gr(code, gr) do { \ - check_greg ((gr)); \ - code.dep_info [code.dep_info_pos ++] = IA64_READ_GR; \ - code.dep_info [code.dep_info_pos ++] = gr; \ -} while (0) - -#define write_gr(code, gr) do { \ - check_greg ((gr)); \ - code.dep_info [code.dep_info_pos ++] = IA64_WRITE_GR; \ - code.dep_info [code.dep_info_pos ++] = gr; \ -} while (0) - -#define read_pr(code,pr) do { \ - if ((pr) != 0) { \ - check_preg ((pr)); \ - code.dep_info [code.dep_info_pos ++] = IA64_READ_PR; \ - code.dep_info [code.dep_info_pos ++] = (pr); \ - } \ -} while (0) - -#define write_pr(code,pr) do { \ - if ((pr) != 0) { \ - check_preg ((pr)); \ - code.dep_info [code.dep_info_pos ++] = IA64_WRITE_PR; \ - code.dep_info [code.dep_info_pos ++] = (pr); \ - } \ -} while (0) - -#define read_pr_branch(code,reg) do { \ - check_preg ((reg)); \ - code.dep_info [code.dep_info_pos ++] = IA64_READ_PR_BRANCH; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define write_pr_fp(code,reg) do { \ - check_preg ((reg)); \ - code.dep_info [code.dep_info_pos ++] = IA64_WRITE_PR_FLOAT; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define read_br(code,reg) do { \ - check_breg ((reg)); \ - code.dep_info [code.dep_info_pos ++] = IA64_READ_BR; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define write_br(code,reg) do { \ - check_breg ((reg)); \ - code.dep_info [code.dep_info_pos ++] = IA64_WRITE_BR; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define read_br_branch(code,reg) do { \ - check_breg ((reg)); \ - code.dep_info [code.dep_info_pos ++] = IA64_READ_BR_BRANCH; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define read_fr(code,reg) do { \ - check_freg ((reg)); \ - code.dep_info [code.dep_info_pos ++] = IA64_READ_FR; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define write_fr(code,reg) do { \ - check_freg ((reg)); \ - code.dep_info [code.dep_info_pos ++] = IA64_WRITE_FR; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define read_ar(code,reg) do { \ - code.dep_info [code.dep_info_pos ++] = IA64_READ_AR; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define write_ar(code,reg) do { \ - code.dep_info [code.dep_info_pos ++] = IA64_WRITE_AR; \ - code.dep_info [code.dep_info_pos ++] = (reg); \ -} while (0) - -#define ia64_emit_ins_1(code,itype,f1,o1) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)))) - -#define ia64_emit_ins_3(code,itype,f1,o1,f2,o2,f3,o3) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)))) - -#define ia64_emit_ins_5(code,itype,f1,o1,f2,o2,f3,o3,f4,o4,f5,o5) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)) | ((guint64)(f4) << (o4)) | ((guint64)(f5) << (o5)))) - -#define ia64_emit_ins_6(code,itype,f1,o1,f2,o2,f3,o3,f4,o4,f5,o5,f6,o6) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)) | ((guint64)(f4) << (o4)) | ((guint64)(f5) << (o5)) | ((guint64)(f6) << (o6)))) - -#define ia64_emit_ins_7(code,itype,f1,o1,f2,o2,f3,o3,f4,o4,f5,o5,f6,o6,f7,o7) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)) | ((guint64)(f4) << (o4)) | ((guint64)(f5) << (o5)) | ((guint64)(f6) << (o6)) | ((guint64)(f7) << (o7)))) - -#define ia64_emit_ins_8(code,itype,f1,o1,f2,o2,f3,o3,f4,o4,f5,o5,f6,o6,f7,o7,f8,o8) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)) | ((guint64)(f4) << (o4)) | ((guint64)(f5) << (o5)) | ((guint64)(f6) << (o6)) | ((guint64)(f7) << (o7)) | ((guint64)(f8) << (o8)))) - -#define ia64_emit_ins_9(code,itype,f1,o1,f2,o2,f3,o3,f4,o4,f5,o5,f6,o6,f7,o7,f8,o8,f9,o9) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)) | ((guint64)(f4) << (o4)) | ((guint64)(f5) << (o5)) | ((guint64)(f6) << (o6)) | ((guint64)(f7) << (o7)) | ((guint64)(f8) << (o8)) | ((guint64)(f9) << (o9)))) - -#define ia64_emit_ins_10(code,itype,f1,o1,f2,o2,f3,o3,f4,o4,f5,o5,f6,o6,f7,o7,f8,o8,f9,o9,f10,o10) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)) | ((guint64)(f4) << (o4)) | ((guint64)(f5) << (o5)) | ((guint64)(f6) << (o6)) | ((guint64)(f7) << (o7)) | ((guint64)(f8) << (o8)) | ((guint64)(f9) << (o9)) | ((guint64)(f10) << (o10)))) - -#define ia64_emit_ins_11(code,itype,f1,o1,f2,o2,f3,o3,f4,o4,f5,o5,f6,o6,f7,o7,f8,o8,f9,o9,f10,o10,f11,o11) ia64_emit_ins ((code), (itype), (((guint64)(f1) << (o1)) | ((guint64)(f2) << (o2)) | ((guint64)(f3) << (o3)) | ((guint64)(f4) << (o4)) | ((guint64)(f5) << (o5)) | ((guint64)(f6) << (o6)) | ((guint64)(f7) << (o7)) | ((guint64)(f8) << (o8)) | ((guint64)(f9) << (o9)) | ((guint64)(f10) << (o10)) | ((guint64)(f11) << (o11)))) - -/* - * A-Unit instructions - */ - -#define ia64_a1(code, qp, r1, r2, r3, x2a, ve, x4, x2b) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_A, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x2b), 27, (x4), 29, (ve), 33, (x2a), 34, (8), 37); } while (0) - -#define ia64_add_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 0, 0) -#define ia64_add1_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 0, 1) -#define ia64_sub_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 1, 1) -#define ia64_sub1_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 1, 0) -#define ia64_addp4_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 2, 0) -#define ia64_and_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 3, 0) -#define ia64_andcm_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 3, 1) -#define ia64_or_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 3, 2) -#define ia64_xor_pred(code, qp, r1, r2, r3) ia64_a1 ((code), (qp), r1, r2, r3, 0, 0, 3, 3) - -#define ia64_a2(code, qp, r1, r2, r3, x2a, ve, x4, ct2d) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); check_count2 (ct2d); ia64_emit_ins_9 ((code), IA64_INS_TYPE_A, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (ct2d - 1), 27, (x4), 29, (ve), 33, (x2a), 34, (8), 37); } while (0) - -#define ia64_shladd_pred(code, qp, r1, r2, r3,count) ia64_a2 ((code), (qp), r1, r2, r3, 0, 0, 4, (count)) -#define ia64_shladdp4_pred(code, qp, r1, r2, r3,count) ia64_a2 ((code), (qp), r1, r2, r3, 0, 0, 6, (count)) - -#define ia64_a3(code, qp, r1, imm8, r3, x2a, ve, x4, x2b) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); check_imm8 ((imm8)); ia64_emit_ins_10 ((code), IA64_INS_TYPE_A, (qp), 0, (r1), 6, (imm8) & 0x7f, 13, (r3), 20, (x2b), 27, (x4), 29, (ve), 33, (x2a), 34, sign_bit((imm8)), 36, (8), 37); } while (0) - -#define ia64_sub_imm_pred(code, qp,r1,imm8,r3) ia64_a3 ((code), (qp), (r1), (imm8), (r3), 0, 0, 9, 1) -#define ia64_and_imm_pred(code, qp,r1,imm8,r3) ia64_a3 ((code), (qp), (r1), (imm8), (r3), 0, 0, 0xb, 0) -#define ia64_andcm_imm_pred(code, qp,r1,imm8,r3) ia64_a3 ((code), (qp), (r1), (imm8), (r3), 0, 0, 0xb, 1) -#define ia64_or_imm_pred(code, qp,r1,imm8,r3) ia64_a3 ((code), (qp), (r1), (imm8), (r3), 0, 0, 0xb, 2) -#define ia64_xor_imm_pred(code, qp,r1,imm8,r3) ia64_a3 ((code), (qp), (r1), (imm8), (r3), 0, 0, 0xb, 3) - -#define ia64_a4(code, qp, r1, imm14, r3, x2a, ve) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); check_imm14 ((imm14)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_A, (qp), 0, (r1), 6, ((imm14) & 0x7f), 13, (r3), 20, (((guint64)(imm14) >> 7) & 0x3f), 27, (ve), 33, (x2a), 34, sign_bit ((imm14)), 36, (8), 37); } while (0) - -#define ia64_adds_imm_pred(code, qp,r1,imm14,r3) ia64_a4 ((code), (qp), (r1), (imm14), (r3), 2, 0) -#define ia64_addp4_imm_pred(code, qp,r1,imm14,r3) ia64_a4 ((code), (qp), (r1), (imm14), (r3), 3, 0) - -#define ia64_a5(code, qp, r1, imm, r3) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); check_assert ((r3) < 4); check_imm22 ((imm)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_A, (qp), 0, (r1), 6, ((guint64)(imm) & 0x7f), 13, (r3), 20, (((guint64)(imm) >> 12) & 0x1f), 22, (((guint64)(imm) >> 7) & 0x1ff), 27, sign_bit ((imm)), 36, (9), 37); } while (0) - -#define ia64_addl_imm_pred(code, qp, r1, imm22, r3) ia64_a5 ((code), (qp), (r1), (imm22), (r3)) - -#define ia64_a6(code, qp, p1, p2, r2, r3, opcode, x2, tb, ta, c) do { read_pr ((code), (qp)); write_pr ((code), (p1)); write_pr ((code), (p2)); read_gr ((code), (r2)); read_gr ((code), (r3)); ia64_emit_ins_10 ((code), IA64_INS_TYPE_A, (qp), 0, (p1), 6, (c), 12, (r2), 13, (r3), 20, (p2), 27, (ta), 33, (x2), 34, (tb), 36, (opcode), 37); } while (0) - -#define ia64_cmp_lt_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 0, 0, 0) -#define ia64_cmp_ltu_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 0, 0, 0) -#define ia64_cmp_eq_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 0, 0, 0) -#define ia64_cmp_lt_unc_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 0, 0, 1) -#define ia64_cmp_ltu_unc_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 0, 0, 1) -#define ia64_cmp_eq_unc_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 0, 0, 1) -#define ia64_cmp_eq_and_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 0, 1, 0) -#define ia64_cmp_eq_or_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 0, 1, 0) -#define ia64_cmp_eq_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 0, 1, 0) -#define ia64_cmp_ne_and_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 0, 1, 1) -#define ia64_cmp_ne_or_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 0, 1, 1) -#define ia64_cmp_ne_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 0, 1, 1) - -#define ia64_cmp4_lt_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 0, 0, 0) -#define ia64_cmp4_ltu_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 0, 0, 0) -#define ia64_cmp4_eq_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 0, 0, 0) -#define ia64_cmp4_lt_unc_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 0, 0, 1) -#define ia64_cmp4_ltu_unc_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 0, 0, 1) -#define ia64_cmp4_eq_unc_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 0, 0, 1) -#define ia64_cmp4_eq_and_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 0, 1, 0) -#define ia64_cmp4_eq_or_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 0, 1, 0) -#define ia64_cmp4_eq_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 0, 1, 0) -#define ia64_cmp4_ne_and_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 0, 1, 1) -#define ia64_cmp4_ne_or_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 0, 1, 1) -#define ia64_cmp4_ne_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a6 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 0, 1, 1) - -/* Pseudo ops */ -#define ia64_cmp_ne_pred(code, qp, p1, p2, r2, r3) ia64_cmp_eq_pred ((code), (qp), (p2), (p1), (r2), (r3)) -#define ia64_cmp_le_pred(code, qp, p1, p2, r2, r3) ia64_cmp_lt_pred ((code), (qp), (p2), (p1), (r3), (r2)) -#define ia64_cmp_gt_pred(code, qp, p1, p2, r2, r3) ia64_cmp_lt_pred ((code), (qp), (p1), (p2), (r3), (r2)) -#define ia64_cmp_ge_pred(code, qp, p1, p2, r2, r3) ia64_cmp_lt_pred ((code), (qp), (p2), (p1), (r2), (r3)) -#define ia64_cmp_leu_pred(code, qp, p1, p2, r2, r3) ia64_cmp_ltu_pred ((code), (qp), (p2), (p1), (r3), (r2)) -#define ia64_cmp_gtu_pred(code, qp, p1, p2, r2, r3) ia64_cmp_ltu_pred ((code), (qp), (p1), (p2), (r3), (r2)) -#define ia64_cmp_geu_pred(code, qp, p1, p2, r2, r3) ia64_cmp_ltu_pred ((code), (qp), (p2), (p1), (r2), (r3)) - -#define ia64_cmp4_ne_pred(code, qp, p1, p2, r2, r3) ia64_cmp4_eq_pred ((code), (qp), (p2), (p1), (r2), (r3)) -#define ia64_cmp4_le_pred(code, qp, p1, p2, r2, r3) ia64_cmp4_lt_pred ((code), (qp), (p2), (p1), (r3), (r2)) -#define ia64_cmp4_gt_pred(code, qp, p1, p2, r2, r3) ia64_cmp4_lt_pred ((code), (qp), (p1), (p2), (r3), (r2)) -#define ia64_cmp4_ge_pred(code, qp, p1, p2, r2, r3) ia64_cmp4_lt_pred ((code), (qp), (p2), (p1), (r2), (r3)) -#define ia64_cmp4_leu_pred(code, qp, p1, p2, r2, r3) ia64_cmp4_ltu_pred ((code), (qp), (p2), (p1), (r3), (r2)) -#define ia64_cmp4_gtu_pred(code, qp, p1, p2, r2, r3) ia64_cmp4_ltu_pred ((code), (qp), (p1), (p2), (r3), (r2)) -#define ia64_cmp4_geu_pred(code, qp, p1, p2, r2, r3) ia64_cmp4_ltu_pred ((code), (qp), (p2), (p1), (r2), (r3)) - -#define ia64_a7(code, qp, p1, p2, r2, r3, opcode, x2, tb, ta, c) do { read_pr ((code), (qp)); write_pr ((code), (p1)); write_pr ((code), (p2)); read_gr ((code), (r2)); read_gr ((code), (r3)); check_assert ((r2) == 0); ia64_emit_ins_10 ((code), IA64_INS_TYPE_A, (qp), 0, (p1), 6, (c), 12, (r2), 13, (r3), 20, (p2), 27, (ta), 33, (x2), 34, (tb), 36, (opcode), 37); } while (0) - -#define ia64_cmp_gt_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 1, 0, 0) -#define ia64_cmp_gt_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 1, 0, 0) -#define ia64_cmp_gt_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 1, 0, 0) -#define ia64_cmp_le_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 1, 0, 1) -#define ia64_cmp_le_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 1, 0, 1) -#define ia64_cmp_le_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 1, 0, 1) -#define ia64_cmp_ge_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 1, 1, 0) -#define ia64_cmp_ge_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 1, 1, 0) -#define ia64_cmp_ge_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 1, 1, 0) -#define ia64_cmp_lt_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 0, 1, 1, 1) -#define ia64_cmp_lt_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 0, 1, 1, 1) -#define ia64_cmp_lt_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 0, 1, 1, 1) - -#define ia64_cmp4_gt_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 1, 0, 0) -#define ia64_cmp4_gt_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 1, 0, 0) -#define ia64_cmp4_gt_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 1, 0, 0) -#define ia64_cmp4_le_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 1, 0, 1) -#define ia64_cmp4_le_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 1, 0, 1) -#define ia64_cmp4_le_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 1, 0, 1) -#define ia64_cmp4_ge_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 1, 1, 0) -#define ia64_cmp4_ge_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 1, 1, 0) -#define ia64_cmp4_ge_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 1, 1, 0) -#define ia64_cmp4_lt_and_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xc, 1, 1, 1, 1) -#define ia64_cmp4_lt_or_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xd, 1, 1, 1, 1) -#define ia64_cmp4_lt_or_andcm_pred(code, qp, p1, p2, r2, r3) ia64_a7 ((code), (qp), (p1), (p2), (r2), (r3), 0xe, 1, 1, 1, 1) - -#define ia64_a8(code, qp, p1, p2, imm, r3, opcode, x2, ta, c) do { read_pr ((code), (qp)); write_pr ((code), (p1)); write_pr ((code), (p2)); read_gr ((code), (r3)); check_imm8 ((imm)); ia64_emit_ins_10 ((code), IA64_INS_TYPE_A, (qp), 0, (p1), 6, (c), 12, ((guint64)(imm) & 0x7f), 13, (r3), 20, (p2), 27, (ta), 33, (x2), 34, sign_bit ((imm)), 36, (opcode), 37); } while (0) - -#define ia64_cmp_lt_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 2, 0, 0) -#define ia64_cmp_ltu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 2, 0, 0) -#define ia64_cmp_eq_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 2, 0, 0) -#define ia64_cmp_lt_unc_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 2, 0, 1) -#define ia64_cmp_ltu_unc_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 2, 0, 1) -#define ia64_cmp_eq_unc_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 2, 0, 1) -#define ia64_cmp_eq_and_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 2, 1, 0) -#define ia64_cmp_eq_or_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 2, 1, 0) -#define ia64_cmp_eq_or_andcm_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 2, 1, 0) -#define ia64_cmp_ne_and_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 2, 1, 1) -#define ia64_cmp_ne_or_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 2, 1, 1) -#define ia64_cmp_ne_or_andcm_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 2, 1, 1) - -#define ia64_cmp4_lt_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 3, 0, 0) -#define ia64_cmp4_ltu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 3, 0, 0) -#define ia64_cmp4_eq_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 3, 0, 0) -#define ia64_cmp4_lt_unc_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 3, 0, 1) -#define ia64_cmp4_ltu_unc_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 3, 0, 1) -#define ia64_cmp4_eq_unc_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 3, 0, 1) -#define ia64_cmp4_eq_and_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 3, 1, 0) -#define ia64_cmp4_eq_or_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 3, 1, 0) -#define ia64_cmp4_eq_or_andcm_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 3, 1, 0) -#define ia64_cmp4_ne_and_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xc, 3, 1, 1) -#define ia64_cmp4_ne_or_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xd, 3, 1, 1) -#define ia64_cmp4_ne_or_andcm_imm_pred(code, qp, p1, p2, imm8, r3) ia64_a8 ((code), (qp), (p1), (p2), (imm8), (r3), 0xe, 3, 1, 1) - -/* Pseudo ops */ -#define ia64_cmp_ne_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp_eq_imm_pred ((code), (qp), (p2), (p1), (imm8), (r3)) -#define ia64_cmp_le_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp_lt_imm_pred ((code), (qp), (p1), (p2), (imm8) - 1, (r3)) -#define ia64_cmp_gt_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp_lt_imm_pred ((code), (qp), (p2), (p1), (imm8) - 1, (r3)) -#define ia64_cmp_ge_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp_lt_imm_pred ((code), (qp), (p2), (p1), (imm8), (r3)) -#define ia64_cmp_leu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp_ltu_imm_pred ((code), (qp), (p1), (p2), (imm8) - 1, (r3)) -#define ia64_cmp_gtu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp_ltu_imm_pred ((code), (qp), (p2), (p1), (imm8) - 1, (r3)) -#define ia64_cmp_geu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp_ltu_imm_pred ((code), (qp), (p2), (p1), (imm8), (r3)) - -#define ia64_cmp4_ne_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp4_eq_imm_pred ((code), (qp), (p2), (p1), (imm8), (r3)) -#define ia64_cmp4_le_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp4_lt_imm_pred ((code), (qp), (p1), (p2), (imm8) - 1, (r3)) -#define ia64_cmp4_gt_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp4_lt_imm_pred ((code), (qp), (p2), (p1), (imm8) - 1, (r3)) -#define ia64_cmp4_ge_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp4_lt_imm_pred ((code), (qp), (p2), (p1), (imm8), (r3)) -#define ia64_cmp4_leu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp4_ltu_imm_pred ((code), (qp), (p1), (p2), (imm8) - 1, (r3)) -#define ia64_cmp4_gtu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp4_ltu_imm_pred ((code), (qp), (p2), (p1), (imm8) - 1, (r3)) -#define ia64_cmp4_geu_imm_pred(code, qp, p1, p2, imm8, r3) ia64_cmp4_ltu_imm_pred ((code), (qp), (p2), (p1), (imm8), (r3)) - -#define ia64_a9(code, qp, r1, r2, r3, x2a, za, zb, x4, x2b) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); ia64_emit_ins_10 ((code), IA64_INS_TYPE_A, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x2b), 27, (x4), 29, (zb), 33, (x2a), 34, (za), 36, (8), 37); } while (0) - -#define ia64_padd1_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 0, 0) -#define ia64_padd2_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 0, 0) -#define ia64_padd4_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 1, 0, 0, 0) -#define ia64_padd1_sss_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 0, 1) -#define ia64_padd2_sss_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 0, 1) -#define ia64_padd1_uuu_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 0, 2) -#define ia64_padd2_uuu_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 0, 2) -#define ia64_padd1_uus_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 0, 3) -#define ia64_padd2_uus_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 0, 3) - -#define ia64_psub1_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 1, 0) -#define ia64_psub2_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 1, 0) -#define ia64_psub4_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 1, 0, 1, 0) -#define ia64_psub1_sss_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 1, 1) -#define ia64_psub2_sss_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 1, 1) -#define ia64_psub1_uuu_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 1, 2) -#define ia64_psub2_uuu_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 1, 2) -#define ia64_psub1_uus_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 1, 3) -#define ia64_psub2_uus_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 1, 3) - -#define ia64_pavg1_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 2, 2) -#define ia64_pavg2_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 2, 2) -#define ia64_pavg1_raz_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 2, 3) -#define ia64_pavg2_raz_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 2, 3) -#define ia64_pavgsub1_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 3, 2) -#define ia64_pavgsub2_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 3, 2) -#define ia64_pcmp1_eq_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 9, 0) -#define ia64_pcmp2_eq_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 9, 0) -#define ia64_pcmp4_eq_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 1, 0, 9, 0) -#define ia64_pcmp1_gt_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 9, 1) -#define ia64_pcmp2_gt_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 9, 1) -#define ia64_pcmp4_gt_pred(code, qp,r1,r2,r3) ia64_a9 ((code), (qp), (r1), (r2), (r3), 1, 1, 0, 9, 1) - -#define ia64_a10(code, qp, r1, r2, r3, x2a, za, zb, x4, ct2d) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); check_count2 ((ct2d)); ia64_emit_ins_10 ((code), IA64_INS_TYPE_A, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (ct2d) - 1, 27, (x4), 29, (zb), 33, (x2a), 34, (za), 36, (8), 37); } while (0) - -#define ia64_pshladd2_pred(code, qp, r1, r2, r3, count) ia64_a10 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 4, count); -#define ia64_pshradd2_pred(code, qp, r1, r2, r3, count) ia64_a10 ((code), (qp), (r1), (r2), (r3), 1, 0, 1, 6, count); - -#define encode_pmpyshr_count(count) (((count) == 0) ? 0 : (((count) == 7) ? 1 : (((count) == 15) ? 2 : 3))) - -/* - * I-Unit Instructions - */ - -#define ia64_i1(code, qp, r1, r2, r3, za, zb, ve, x2a, x2b, ct2d) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); check_assert (((ct2d) == 0) | ((ct2d) == 7) | ((ct2d) == 15) | ((ct2d) == 16)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x2b), 28, encode_pmpyshr_count((ct2d)), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (7), 37); } while (0) - -#define ia64_pmpyshr2_pred(code, qp, r1, r2, r3, count) ia64_i1 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 0, 3, (count)); - -#define ia64_pmpyshr2_u_pred(code, qp, r1, r2, r3, count) ia64_i1 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 0, 1, (count)); - -#define ia64_i2(code, qp, r1, r2, r3, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (7), 37); } while (0) - -#define ia64_pmpy2_r_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 1, 3) -#define ia64_pmpy2_l_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 3, 3) -#define ia64_mix1_r_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 0, 0, 2, 0, 2) -#define ia64_mix2_r_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 0, 2) -#define ia64_mix4_r_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 2, 0, 2) -#define ia64_mix1_l_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 0, 0, 2, 2, 2) -#define ia64_mix2_l_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 0, 2) -#define ia64_mix4_l_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 2, 0, 2) -#define ia64_pack2_uss_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 0, 0) -#define ia64_pack2_sss_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 2, 0) -#define ia64_pack4_sss_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 2, 2, 0) -#define ia64_unpack1_h_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 0, 0, 2, 0, 1) -#define ia64_unpack2_h_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 0, 1) -#define ia64_unpack4_h_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 2, 0, 1) -#define ia64_unpack1_l_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 0, 0, 2, 2, 1) -#define ia64_unpack2_l_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 2, 1) -#define ia64_unpack4_l_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 2, 2, 1) -#define ia64_pmin1_u_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 0, 0, 2, 1, 0) -#define ia64_pmax1_u_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 0, 0, 2, 1, 1) -#define ia64_pmin2_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 3, 0) -#define ia64_pmax2_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 2, 3, 1) -#define ia64_psad1_pred(code, qp, r1, r2, r3) ia64_i2 ((code), (qp), (r1), (r2), (r3), 0, 0, 0, 2, 3, 2) - -typedef enum { - IA64_MUX1_BRCST = 0x0, - IA64_MUX1_MIX = 0x8, - IA64_MUX1_SHUF = 0x9, - IA64_MUX1_ALT = 0xa, - IA64_MUX1_REV = 0xb -} Ia64Mux1Permutation; - -#define ia64_i3(code, qp, r1, r2, mbtype, opcode, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (mbtype), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (opcode), 37); } while (0) - -#define ia64_mux1_pred(code, qp, r1, r2, mbtype) ia64_i3 ((code), (qp), (r1), (r2), (mbtype), 7, 0, 0, 0, 3, 2, 2) - -#define ia64_i4(code, qp, r1, r2, mhtype, opcode, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (mhtype), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (opcode), 37); } while (0) - -#define ia64_mux2_pred(code, qp, r1, r2, mhtype) ia64_i4 ((code), (qp), (r1), (r2), (mhtype), 7, 0, 1, 0, 3, 2, 2) - -#define ia64_i5(code, qp, r1, r2, r3, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (7), 37); } while (0) - -#define ia64_pshr2_pred(code, qp, r1, r3, r2) ia64_i5 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 0, 2, 0) -#define ia64_pshr4_pred(code, qp, r1, r3, r2) ia64_i5 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 0, 2, 0) -#define ia64_shr_pred(code, qp, r1, r3, r2) ia64_i5 ((code), (qp), (r1), (r2), (r3), 1, 1, 0, 0, 2, 0) -#define ia64_pshr2_u_pred(code, qp, r1, r3, r2) ia64_i5 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 0, 0, 0) -#define ia64_pshr4_u_pred(code, qp, r1, r3, r2) ia64_i5 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 0, 0, 0) -#define ia64_shr_u_pred(code, qp, r1, r3, r2) ia64_i5 ((code), (qp), (r1), (r2), (r3), 1, 1, 0, 0, 0, 0) - -#define ia64_i6(code, qp, r1, count, r3, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); check_count5 ((count)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (count), 14, (r3), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (7), 37); } while (0) - -#define ia64_pshr2_imm_pred(code, qp, r1, r3, count) ia64_i6 ((code), (qp), (r1), (count), (r3), 0, 1, 0, 1, 3, 0) -#define ia64_pshr4_imm_pred(code, qp, r1, r3, count) ia64_i6 ((code), (qp), (r1), (count), (r3), 1, 0, 0, 1, 3, 0) -#define ia64_pshr2_u_imm_pred(code, qp, r1, r3, count) ia64_i6 ((code), (qp), (r1), (count), (r3), 0, 1, 0, 1, 1, 0) -#define ia64_pshr4_u_imm_pred(code, qp, r1, r3, count) ia64_i6 ((code), (qp), (r1), (count), (r3), 1, 0, 0, 1, 1, 0) - -#define ia64_i7(code, qp, r1, r2, r3, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (7), 37); } while (0) - -#define ia64_pshl2_pred(code, qp, r1, r2, r3) ia64_i7 ((code), (qp), (r1), (r2), (r3), 0, 1, 0, 0, 0, 1) -#define ia64_pshl4_pred(code, qp, r1, r2, r3) ia64_i7 ((code), (qp), (r1), (r2), (r3), 1, 0, 0, 0, 0, 1) -#define ia64_shl_pred(code, qp, r1, r2, r3) ia64_i7 ((code), (qp), (r1), (r2), (r3), 1, 1, 0, 0, 0, 1) - -#define ia64_i8(code, qp, r1, r2, count, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); check_count5 ((count)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, 31 - (count), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (7), 37); } while (0) - -#define ia64_pshl2_imm_pred(code, qp, r1, r2, count) ia64_i8 ((code), (qp), (r1), (r2), (count), 0, 1, 0, 3, 1, 1) -#define ia64_pshl4_imm_pred(code, qp, r1, r2, count) ia64_i8 ((code), (qp), (r1), (r2), (count), 1, 0, 0, 3, 1, 1) - -#define ia64_i9(code, qp, r1, r3, za, zb, ve, x2a, x2b, x2c) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, 0, 13, (r3), 20, (x2b), 28, (x2c), 30, (ve), 32, (zb), 33, (x2a), 34, (za), 36, (7), 37); } while (0) - -#define ia64_popcnt_pred(code, qp, r1, r3) ia64_i9 ((code), (qp), (r1), (r3), 0, 1, 0, 1, 1, 2) - -#define ia64_i10(code, qp, r1, r2, r3, count, opcode, x2, x) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); check_count6 ((count)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (count), 27, (x), 33, (x2), 34, (opcode), 37); } while (0) - -#define ia64_shrp_pred(code, qp, r1, r2, r3, count) ia64_i10 ((code), (qp), (r1), (r2), ( r3), (count), 5, 3, 0) - -#define ia64_i11(code, qp, r1, r3, pos, len, x2, x, y) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, ((pos) << 1) | (y), 13, (r3), 20, (len) - 1, 27, (x), 33, (x2), 34, (5), 37); } while (0) - -#define ia64_extr_u_pred(code, qp, r1, r3, pos, len) ia64_i11 ((code), (qp), (r1), (r3), (pos), (len), 1, 0, 0) -#define ia64_extr_pred(code, qp, r1, r3, pos, len) ia64_i11 ((code), (qp), (r1), (r3), (pos), (len), 1, 0, 1) - -#define ia64_i12(code, qp, r1, r2, pos, len, x2, x, y) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (63 - (pos)) | ((y) << 6), 20, (len) - 1, 27, (x), 33, (x2), 34, (5), 37); } while (0) - -#define ia64_dep_z_pred(code, qp, r1, r2, pos, len) ia64_i12 ((code), (qp), (r1), (r2), (pos), (len), 1, 1, 0) - -#define ia64_i13(code, qp, r1, imm, pos, len, x2, x, y) do { read_pr ((code), (qp)); write_gr ((code), (r1)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, ((guint64)(imm) & 0x7f), 13, (63 - (pos)) | ((y) << 6), 20, (len) - 1, 27, (x), 33, (x2), 34, sign_bit ((imm)), 36, (5), 37); } while (0) - -#define ia64_dep_z_imm_pred(code, qp, r1, imm, pos, len) ia64_i13 ((code), (qp), (r1), (imm), (pos), (len), 1, 1, 1) - -#define ia64_i14(code, qp, r1, imm, r3, pos, len, x2, x) do { read_pr ((code), (qp)); write_gr ((code), (r1)); check_imm1 (imm); ia64_emit_ins_9 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (63 - (pos)) << 1, 13, (r3), 20, (len), 27, (x), 33, (x2), 34, sign_bit ((imm)), 36, (5), 37); } while (0) - -#define ia64_dep_imm_pred(code, qp, r1, imm, r3, pos, len) ia64_i14 ((code), (qp), (r1), (imm), (r3), (pos), (len), 3, 1) - -#define ia64_i15(code, qp, r1, r2, r3, pos, len) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r2)); read_gr ((code), (r3)); check_len4 ((len)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (len) - 1, 27, (63 - (pos)), 31, (4), 37); } while (0) - -#define ia64_dep_pred(code, qp, r1, r2, r3, pos, len) ia64_i15 ((code), (qp), (r1), (r2), (r3), (pos), (len)) - -#define ia64_i16(code, qp, p1, p2, r3, pos, x2, ta, tb, y, c) do { read_pr ((code), (qp)); write_pr ((code), (p1)); write_pr ((code), (p2)); ia64_emit_ins_11 ((code), IA64_INS_TYPE_I, (qp), 0, (p1), 6, (c), 12, (y), 13, (pos), 14, (r3), 20, (p2), 27, (ta), 33, (x2), 34, (tb), 36, (5), 37); } while (0) - -#define ia64_tbit_z_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 0, 0, 0, 0) -#define ia64_tbit_z_unc_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 0, 0, 0, 1) -#define ia64_tbit_z_and_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 0, 1, 0, 0) -#define ia64_tbit_nz_and_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 0, 1, 0, 1) -#define ia64_tbit_z_or_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 1, 0, 0, 0) -#define ia64_tbit_nz_or_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 1, 0, 0, 1) -#define ia64_tbit_z_or_andcm_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 1, 1, 0, 0) -#define ia64_tbit_nz_or_andcm_pred(code, qp, p1, p2, r3, pos) ia64_i16 ((code), (qp), (p1), (p2), (r3), (pos), 0, 1, 1, 0, 1) - -#define ia64_i17(code, qp, p1, p2, r3, x2, ta, tb, y, c) do { read_pr ((code), (qp)); write_pr ((code), (p1)); write_pr ((code), (p2)); ia64_emit_ins_10 ((code), IA64_INS_TYPE_I, (qp), 0, (p1), 6, (c), 12, (y), 13, (r3), 20, (p2), 27, (ta), 33, (x2), 34, (tb), 36, (5), 37); } while (0) - -#define ia64_tnat_z_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 0, 0, 1, 0) -#define ia64_tnat_z_unc_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 0, 0, 1, 1) -#define ia64_tnat_z_and_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 0, 1, 1, 0) -#define ia64_tnat_nz_and_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 0, 1, 1, 1) -#define ia64_tnat_z_or_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 1, 0, 1, 0) -#define ia64_tnat_nz_or_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 1, 0, 1, 1) -#define ia64_tnat_z_or_andcm_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 1, 1, 1, 0) -#define ia64_tnat_nz_or_andcm_pred(code, qp, p1, p2, r3) ia64_i17 ((code), (qp), (p1), (p2), (r3), 0, 1, 1, 1, 1) - -#define ia64_i18(code, qp, imm, x3, x6, y) do { read_pr ((code), (qp)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_I, (qp), 0, (imm) & 0xfffff, 6, (y), 26, (x6), 27, (x3), 33, ((imm) >> 20) & 0x1, 36, (0), 37); } while (0) - -#define ia64_nop_i_pred(code, qp, imm) ia64_i18 ((code), (qp), (imm), 0, 1, 0) -#define ia64_hint_i_pred(code, qp, imm) ia64_i18 ((code), (qp), (imm), 0, 1, 1) - -#define ia64_i19(code, qp, imm, x3, x6) do { read_pr ((code), (qp)); check_imm21 ((imm)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_I, (qp), 0, (imm) & 0xfffff, 6, (x6), 27, (x3), 33, ((imm) >> 20) & 0x1, 36, (0), 37); } while (0) - -#define ia64_break_i_pred(code, qp, imm) ia64_i19 ((code), (qp), (imm), 0, 0) - -#define ia64_i20(code, qp, r2, imm, x3) do { read_pr ((code), (qp)); check_imm21 ((imm)); read_gr ((code), (r2)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_I, (qp), 0, (imm) & 0x7f, 6, (r2), 13, ((imm) >> 7) & 0x1fff, 20, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_chk_s_i_pred(code, qp,r2,disp) ia64_i20 ((code), (qp), (r2), (disp), 1) - -#define ia64_i21(code, qp, b1, r2, tag13, x3, x, ih, wh) do { read_pr ((code), (qp)); check_imm8 (tag13); write_br ((code), (b1)); read_gr ((code), (r2)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_I, (qp), 0, (b1), 6, (r2), 13, (wh), 20, (x), 22, (ih), 23, (tag13) & 0x1ff, 24, (x3), 33, (0), 37); } while (0) - -typedef enum { - IA64_MOV_TO_BR_WH_SPTK = 0, - IA64_MOV_TO_BR_WH_NONE = 1, - IA64_MOV_TO_BR_WH_DPTK = 2 -} Ia64MovToBrWhetherHint; - -typedef enum { - IA64_BR_IH_NONE = 0, - IA64_BR_IH_IMP = 1 -} Ia64BranchImportanceHint; - -#define ia64_mov_to_br_hint_pred(code, qp, b1, r2, disp, wh, ih) ia64_i21 ((code), (qp), (b1), (r2), (disp), 7, 0, ih, wh) -#define ia64_mov_ret_to_br_hint_pred(code, qp, b1, r2, disp, wh, ih) ia64_i21 ((code), (qp), (b1), (r2), (disp), 7, 1, ih, wh) - -/* Pseudo ops */ - -#define ia64_mov_to_br_pred(code, qp, b1, r2) ia64_mov_to_br_hint_pred ((code), (qp), (b1), (r2), 0, 0, 0) -#define ia64_mov_ret_to_br_pred(code, qp, b1, r2) ia64_mov_ret_to_br_hint_pred ((code), (qp), (b1), (r2), 0, 0, 0) - -/* End of pseudo ops */ - -#define ia64_i22(code, qp, r1, b2, x3, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_br ((code), (b2)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (b2), 13, (x6), 27, (x3), 33, (0), 37); } while (0) - -#define ia64_mov_from_br_pred(code, qp, r1, b2) ia64_i22 ((code), (qp), (r1), (b2), 0, 0x31); - -#define ia64_i23(code, qp, r2, mask, x3) do { read_pr ((code), (qp)); read_gr ((code), (r2)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_I, (qp), 0, (mask) & 0x7f, 6, (r2), 13, ((mask) >> 7) & 0xff, 24, (x3), 33, sign_bit ((mask)), 36, (0), 37); } while (0) - -#define ia64_mov_to_pred_pred(code, qp, r2, mask) ia64_i23 ((code), (qp), (r2), (mask) >> 1, 3) - -#define ia64_i24(code, qp, imm, x3) do { read_pr ((code), (qp)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_I, (qp), 0, (imm) & 0x7ffffff, 6, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_mov_to_pred_rot_imm_pred(code, qp,imm) ia64_i24 ((code), (qp), (imm) >> 16, 2) - -#define ia64_i25(code, qp, r1, x3, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (x6), 27, (x3), 33, (0), 37); } while (0) - -#define ia64_mov_from_ip_pred(code, qp, r1) ia64_i25 ((code), (qp), (r1), 0, 0x30) -#define ia64_mov_from_pred_pred(code, qp, r1) ia64_i25 ((code), (qp), (r1), 0, 0x33) - -#define ia64_i26(code, qp, ar3, r2, x3, x6) do { read_pr ((code), (qp)); read_gr ((code), (r2)); write_ar ((code), (ar3)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_I, (qp), 0, (r2), 13, (ar3), 20, (x6), 27, (x3), 33, (0), 37); } while (0) - -#define ia64_mov_to_ar_i_pred(code, qp, ar3, r2) ia64_i26 ((code), (qp), (ar3), (r2), 0, 0x2a) - -#define ia64_i27(code, qp, ar3, imm, x3, x6) do { read_pr ((code), (qp)); write_ar ((code), (ar3)); check_imm8 ((imm)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_I, (qp), 0, (imm) & 0x7f, 13, (ar3), 20, (x6), 27, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_mov_to_ar_imm_i_pred(code, qp, ar3, imm) ia64_i27 ((code), (qp), (ar3), (imm), 0, 0x0a) - -#define ia64_i28(code, qp, r1, ar3, x3, x6) do { read_pr ((code), (qp)); read_ar ((code), (ar3)); write_gr ((code), (r1)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (ar3), 20, (x6), 27, (x3), 33, (0), 37); } while (0) - -#define ia64_mov_from_ar_i_pred(code, qp, r1, ar3) ia64_i28 ((code), (qp), (r1), (ar3), 0, 0x32) - -#define ia64_i29(code, qp, r1, r3, x3, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_I, (qp), 0, (r1), 6, (r3), 20, (x6), 27, (x3), 33, (0), 37); } while (0) - -#define ia64_zxt1_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x10) -#define ia64_zxt2_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x11) -#define ia64_zxt4_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x12) -#define ia64_sxt1_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x14) -#define ia64_sxt2_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x15) -#define ia64_sxt4_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x16) -#define ia64_czx1_l_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x18) -#define ia64_czx2_l_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x19) -#define ia64_czx1_r_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x1C) -#define ia64_czx2_r_pred(code, qp, r1, r3) ia64_i29 ((code), (qp), (r1), (r3), 0, 0x1D) - -/* - * M-Unit Instructions - */ - -typedef enum { - IA64_LD_HINT_NONE = 0, - IA64_LD_HINT_NT1 = 1, - IA64_LD_HINT_NTA = 3 -} Ia64LoadHint; - -typedef enum { - IA64_ST_HINT_NONE = 0, - IA64_ST_HINT_NTA = 3 -} Ia64StoreHint; - -#define ia64_m1(code, qp, r1, r3, hint, m, x, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (4), 37); } while (0) - -#define ia64_ld1_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x00) -#define ia64_ld2_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x01) -#define ia64_ld4_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x02) -#define ia64_ld8_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x03) - -#define ia64_ld1_s_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x04) -#define ia64_ld2_s_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x05) -#define ia64_ld4_s_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x06) -#define ia64_ld8_s_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x07) - -#define ia64_ld1_a_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x08) -#define ia64_ld2_a_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x09) -#define ia64_ld4_a_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x0A) -#define ia64_ld8_a_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x0B) - -#define ia64_ld1_sa_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x0C) -#define ia64_ld2_sa_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x0D) -#define ia64_ld4_sa_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x0E) -#define ia64_ld8_sa_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x0F) - -#define ia64_ld1_bias_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x10) -#define ia64_ld2_bias_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x11) -#define ia64_ld4_bias_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x12) -#define ia64_ld8_bias_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x13) - -#define ia64_ld1_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x14) -#define ia64_ld2_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x15) -#define ia64_ld4_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x16) -#define ia64_ld8_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x17) - -#define ia64_ld8_fill_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x1B) - -#define ia64_ld1_c_clr_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x20) -#define ia64_ld2_c_clr_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x21) -#define ia64_ld4_c_clr_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x22) -#define ia64_ld8_c_clr_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x23) - -#define ia64_ld1_c_nc_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x24) -#define ia64_ld2_c_nc_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x25) -#define ia64_ld4_c_nc_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x26) -#define ia64_ld8_c_nc_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x27) - -#define ia64_ld1_c_clr_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x28) -#define ia64_ld2_c_clr_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x29) -#define ia64_ld4_c_clr_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x2A) -#define ia64_ld8_c_clr_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 0, 0x2B) - -/* FIXME: This writes AR.CSD */ -#define ia64_ld16_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 1, 0x28); -#define ia64_ld16_acq_hint_pred(code, qp, r1, r3, hint) ia64_m1 ((code), (qp), (r1), (r3), (hint), 0, 1, 0x2C) - -#define ia64_m2(code, qp, r1, r2, r3, hint, m, x, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); write_gr ((code), (r3)); ; ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (4), 37); } while (0) - -#define ia64_ld1_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x00) -#define ia64_ld2_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x01) -#define ia64_ld4_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x02) -#define ia64_ld8_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x03) - -#define ia64_ld1_s_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x04) -#define ia64_ld2_s_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x05) -#define ia64_ld4_s_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x06) -#define ia64_ld8_s_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x07) - -#define ia64_ld1_a_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x08) -#define ia64_ld2_a_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x09) -#define ia64_ld4_a_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x0A) -#define ia64_ld8_a_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x0B) - -#define ia64_ld1_sa_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x0C) -#define ia64_ld2_sa_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x0D) -#define ia64_ld4_sa_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x0E) -#define ia64_ld8_sa_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x0F) - -#define ia64_ld1_bias_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x10) -#define ia64_ld2_bias_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x11) -#define ia64_ld4_bias_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x12) -#define ia64_ld8_bias_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x13) - -#define ia64_ld1_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x14) -#define ia64_ld2_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x15) -#define ia64_ld4_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x16) -#define ia64_ld8_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x17) - -#define ia64_ld8_fill_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x1B) - -#define ia64_ld1_c_clr_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x20) -#define ia64_ld2_c_clr_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x21) -#define ia64_ld4_c_clr_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x22) -#define ia64_ld8_c_clr_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x23) - -#define ia64_ld1_c_nc_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x24) -#define ia64_ld2_c_nc_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x25) -#define ia64_ld4_c_nc_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x26) -#define ia64_ld8_c_nc_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x27) - -#define ia64_ld1_c_clr_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x28) -#define ia64_ld2_c_clr_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x29) -#define ia64_ld4_c_clr_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x2A) -#define ia64_ld8_c_clr_acq_inc_hint_pred(code, qp, r1, r2, r3, hint) ia64_m2 ((code), (qp), (r1), (r2), (r3), (hint), 1, 0, 0x2B) - -#define ia64_m3(code, qp, r1, r3, imm, hint, m, x, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); write_gr ((code), (r3)); check_imm9 ((imm)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (imm) & 0x7f, 13, (r3), 20, ((imm) >> 7) & 0x1, 27, (hint), 28, (x6), 30, sign_bit ((imm)), 36, (5), 37); } while (0) - -#define ia64_ld1_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x00) -#define ia64_ld2_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x01) -#define ia64_ld4_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x02) -#define ia64_ld8_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x03) - -#define ia64_ld1_s_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x04) -#define ia64_ld2_s_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x05) -#define ia64_ld4_s_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x06) -#define ia64_ld8_s_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x07) - -#define ia64_ld1_a_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x08) -#define ia64_ld2_a_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x09) -#define ia64_ld4_a_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x0A) -#define ia64_ld8_a_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x0B) - -#define ia64_ld1_sa_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x0C) -#define ia64_ld2_sa_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x0D) -#define ia64_ld4_sa_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x0E) -#define ia64_ld8_sa_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x0F) - -#define ia64_ld1_bias_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x10) -#define ia64_ld2_bias_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x11) -#define ia64_ld4_bias_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x12) -#define ia64_ld8_bias_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x13) - -#define ia64_ld1_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x14) -#define ia64_ld2_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x15) -#define ia64_ld4_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x16) -#define ia64_ld8_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x17) - -#define ia64_ld8_fill_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x1B) - -#define ia64_ld1_c_clr_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x20) -#define ia64_ld2_c_clr_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x21) -#define ia64_ld4_c_clr_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x22) -#define ia64_ld8_c_clr_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x23) - -#define ia64_ld1_c_nc_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x24) -#define ia64_ld2_c_nc_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x25) -#define ia64_ld4_c_nc_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x26) -#define ia64_ld8_c_nc_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x27) - -#define ia64_ld1_c_clr_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x28) -#define ia64_ld2_c_clr_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x29) -#define ia64_ld4_c_clr_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x2A) -#define ia64_ld8_c_clr_acq_inc_imm_hint_pred(code, qp, r1, r3, imm, hint) ia64_m3 ((code), (qp), (r1), (r3), (imm), (hint), 1, 0, 0x2B) - -/* Pseudo ops */ - -#define ia64_ld1_pred(code, qp, r1, r3) ia64_ld1_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_pred(code, qp, r1, r3) ia64_ld2_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_pred(code, qp, r1, r3) ia64_ld4_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_pred(code, qp, r1, r3) ia64_ld8_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_s_pred(code, qp, r1, r3) ia64_ld1_s_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_s_pred(code, qp, r1, r3) ia64_ld2_s_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_s_pred(code, qp, r1, r3) ia64_ld4_s_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_s_pred(code, qp, r1, r3) ia64_ld8_s_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_a_pred(code, qp, r1, r3) ia64_ld1_a_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_a_pred(code, qp, r1, r3) ia64_ld2_a_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_a_pred(code, qp, r1, r3) ia64_ld4_a_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_a_pred(code, qp, r1, r3) ia64_ld8_a_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_sa_pred(code, qp, r1, r3) ia64_ld1_sa_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_sa_pred(code, qp, r1, r3) ia64_ld2_sa_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_sa_pred(code, qp, r1, r3) ia64_ld4_sa_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_sa_pred(code, qp, r1, r3) ia64_ld8_sa_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_bias_pred(code, qp, r1, r3) ia64_ld1_bias_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_bias_pred(code, qp, r1, r3) ia64_ld2_bias_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_bias_pred(code, qp, r1, r3) ia64_ld4_bias_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_bias_pred(code, qp, r1, r3) ia64_ld8_bias_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_acq_pred(code, qp, r1, r3) ia64_ld1_acq_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_acq_pred(code, qp, r1, r3) ia64_ld2_acq_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_acq_pred(code, qp, r1, r3) ia64_ld4_acq_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_acq_pred(code, qp, r1, r3) ia64_ld8_acq_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld8_fill_pred(code, qp, r1, r3) ia64_ld8_fill_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_c_clr_pred(code, qp, r1, r3) ia64_ld1_c_clr_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_c_clr_pred(code, qp, r1, r3) ia64_ld2_c_clr_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_c_clr_pred(code, qp, r1, r3) ia64_ld4_c_clr_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_c_clr_pred(code, qp, r1, r3) ia64_ld8_c_clr_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_c_nc_pred(code, qp, r1, r3) ia64_ld1_c_nc_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_c_nc_pred(code, qp, r1, r3) ia64_ld2_c_nc_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_c_nc_pred(code, qp, r1, r3) ia64_ld4_c_nc_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_c_nc_pred(code, qp, r1, r3) ia64_ld8_c_nc_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_c_clr_acq_pred(code, qp, r1, r3) ia64_ld1_c_clr_acq_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld2_c_clr_acq_pred(code, qp, r1, r3) ia64_ld2_c_clr_acq_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld4_c_clr_acq_pred(code, qp, r1, r3) ia64_ld4_c_clr_acq_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld8_c_clr_acq_pred(code, qp, r1, r3) ia64_ld8_c_clr_acq_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld16_pred(code, qp, r1, r3) ia64_ld16_hint_pred (code, qp, r1, r3, 0) -#define ia64_ld16_acq_pred(code, qp, r1, r3) ia64_ld16_acq_hint_pred (code, qp, r1, r3, 0) - -#define ia64_ld1_inc_pred(code, qp, r1, r2, r3) ia64_ld1_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_inc_pred(code, qp, r1, r2, r3) ia64_ld2_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_inc_pred(code, qp, r1, r2, r3) ia64_ld4_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_inc_pred(code, qp, r1, r2, r3) ia64_ld8_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_s_inc_pred(code, qp, r1, r2, r3) ia64_ld1_s_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_s_inc_pred(code, qp, r1, r2, r3) ia64_ld2_s_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_s_inc_pred(code, qp, r1, r2, r3) ia64_ld4_s_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_s_inc_pred(code, qp, r1, r2, r3) ia64_ld8_s_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_a_inc_pred(code, qp, r1, r2, r3) ia64_ld1_a_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_a_inc_pred(code, qp, r1, r2, r3) ia64_ld2_a_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_a_inc_pred(code, qp, r1, r2, r3) ia64_ld4_a_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_a_inc_pred(code, qp, r1, r2, r3) ia64_ld8_a_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_sa_inc_pred(code, qp, r1, r2, r3) ia64_ld1_sa_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_sa_inc_pred(code, qp, r1, r2, r3) ia64_ld2_sa_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_sa_inc_pred(code, qp, r1, r2, r3) ia64_ld4_sa_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_sa_inc_pred(code, qp, r1, r2, r3) ia64_ld8_sa_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_bias_inc_pred(code, qp, r1, r2, r3) ia64_ld1_bias_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_bias_inc_pred(code, qp, r1, r2, r3) ia64_ld2_bias_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_bias_inc_pred(code, qp, r1, r2, r3) ia64_ld4_bias_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_bias_inc_pred(code, qp, r1, r2, r3) ia64_ld8_bias_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld1_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld2_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld4_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld8_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld8_fill_inc_pred(code, qp, r1, r2, r3) ia64_ld8_fill_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_c_clr_inc_pred(code, qp, r1, r2, r3) ia64_ld1_c_clr_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_c_clr_inc_pred(code, qp, r1, r2, r3) ia64_ld2_c_clr_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_c_clr_inc_pred(code, qp, r1, r2, r3) ia64_ld4_c_clr_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_c_clr_inc_pred(code, qp, r1, r2, r3) ia64_ld8_c_clr_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_c_nc_inc_pred(code, qp, r1, r2, r3) ia64_ld1_c_nc_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_c_nc_inc_pred(code, qp, r1, r2, r3) ia64_ld2_c_nc_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_c_nc_inc_pred(code, qp, r1, r2, r3) ia64_ld4_c_nc_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_c_nc_inc_pred(code, qp, r1, r2, r3) ia64_ld8_c_nc_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_c_clr_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld1_c_clr_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld2_c_clr_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld2_c_clr_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld4_c_clr_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld4_c_clr_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) -#define ia64_ld8_c_clr_acq_inc_pred(code, qp, r1, r2, r3) ia64_ld8_c_clr_acq_inc_hint_pred (code, qp, r1, r2, r3, 0) - -#define ia64_ld1_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_s_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_s_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_s_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_s_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_s_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_s_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_s_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_s_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_a_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_a_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_a_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_a_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_a_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_a_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_a_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_a_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_sa_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_sa_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_sa_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_sa_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_sa_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_sa_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_sa_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_sa_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_bias_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_bias_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_bias_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_bias_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_bias_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_bias_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_bias_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_bias_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld8_fill_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_fill_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_c_clr_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_c_clr_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_c_clr_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_c_clr_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_c_clr_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_c_clr_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_c_clr_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_c_clr_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_c_nc_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_c_nc_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_c_nc_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_c_nc_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_c_nc_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_c_nc_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_c_nc_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_c_nc_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -#define ia64_ld1_c_clr_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld1_c_clr_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld2_c_clr_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld2_c_clr_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld4_c_clr_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld4_c_clr_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) -#define ia64_ld8_c_clr_acq_inc_imm_pred(code, qp, r1, r3, imm) ia64_ld8_c_clr_acq_inc_imm_hint_pred (code, qp, r1, r3, imm, 0) - -/* End of pseudo ops */ - -#define ia64_m4(code, qp, r3, r2, hint, m, x, x6) do { read_pr ((code), (qp)); read_gr ((code), (r3)); read_gr ((code), (r2)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (r2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (4), 37); } while (0) - -#define ia64_st1_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x30) -#define ia64_st2_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x31) -#define ia64_st4_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x32) -#define ia64_st8_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x33) - -/* Pseudo ops */ - -#define ia64_st8_pred(code, qp, r3, r2) ia64_st8_hint_pred ((code), (qp), (r3), (r2), 0) - -/* End of pseudo ops */ - -#define ia64_st1_rel_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x34) -#define ia64_st2_rel_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x35) -#define ia64_st4_rel_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x36) -#define ia64_st8_rel_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x37) - -#define ia64_st8_spill_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 0, 0x3B) - -#define ia64_st16_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 1, 0x30) -#define ia64_st16_rel_hint_pred(code, qp, r3, r2, hint) ia64_m4 ((code), (qp), (r3), (r2), (hint), 0, 1, 0x34) - -#define ia64_m5(code, qp, r3, r2, imm, hint, m, x, x6) do { read_pr ((code), (qp)); read_gr ((code), (r3)); write_gr ((code), (r3)); read_gr ((code), (r2)); check_imm9 ((imm)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0x7f, 6, (r2), 13, (r3), 20, ((imm) >> 7) & 0x1, 27, (hint), 28, (x6), 30, sign_bit ((imm)), 36, (5), 37); } while (0) - -#define ia64_st1_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x30) -#define ia64_st2_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x31) -#define ia64_st4_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x32) -#define ia64_st8_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x33) - -#define ia64_st1_rel_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x34) -#define ia64_st2_rel_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x35) -#define ia64_st4_rel_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x36) -#define ia64_st8_rel_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x37) - -#define ia64_st8_spill_inc_imm_hint_pred(code, qp, r3, r2, imm, hint) ia64_m5 ((code), (qp), (r3), (r2), (imm), (hint), 0, 0, 0x3B) - -#define ia64_m6(code, qp, f1, r3, hint, m, x, x6) do { read_pr ((code), (qp)); write_fr ((code), (f1)); read_gr ((code), (r3)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_ldfs_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x02) -#define ia64_ldfd_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x03) -#define ia64_ldf8_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x01) -#define ia64_ldfe_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x00) - -#define ia64_ldfs_s_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x06) -#define ia64_ldfd_s_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x07) -#define ia64_ldf8_s_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x05) -#define ia64_ldfe_s_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x04) - -#define ia64_ldfs_a_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x0A) -#define ia64_ldfd_a_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x0B) -#define ia64_ldf8_a_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x09) -#define ia64_ldfe_a_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x08) - -#define ia64_ldfs_sa_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x0E) -#define ia64_ldfd_sa_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x0F) -#define ia64_ldf8_sa_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x0D) -#define ia64_ldfe_sa_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x0C) - -#define ia64_ldfs_c_clr_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x22) -#define ia64_ldfd_c_clr_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x23) -#define ia64_ldf8_c_clr_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x21) -#define ia64_ldfe_c_clr_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x20) - -#define ia64_ldfs_c_nc_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x26) -#define ia64_ldfd_c_nc_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x27) -#define ia64_ldf8_c_nc_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x25) -#define ia64_ldfe_c_nc_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x24) - -#define ia64_ldf_fill_hint_pred(code, qp, f1, r3, hint) ia64_m6 ((code), (qp), (f1), (r3), (hint), 0, 0, 0x1B) - -#define ia64_m7(code, qp, f1, r3, r2, hint, m, x, x6) do { read_pr ((code), (qp)); write_fr ((code), (f1)); read_gr ((code), (r3)); write_gr ((code), (r3)); read_gr ((code), (r2)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (r2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_ldfs_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x02) -#define ia64_ldfd_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x03) -#define ia64_ldf8_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x01) -#define ia64_ldfe_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x00) - -#define ia64_ldfs_s_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x06) -#define ia64_ldfd_s_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x07) -#define ia64_ldf8_s_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x05) -#define ia64_ldfe_s_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x04) - -#define ia64_ldfs_a_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x0A) -#define ia64_ldfd_a_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x0B) -#define ia64_ldf8_a_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x09) -#define ia64_ldfe_a_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x08) - -#define ia64_ldfs_sa_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x0E) -#define ia64_ldfd_sa_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x0F) -#define ia64_ldf8_sa_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x0D) -#define ia64_ldfe_sa_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x0C) - -#define ia64_ldfs_c_clr_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x22) -#define ia64_ldfd_c_clr_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x23) -#define ia64_ldf8_c_clr_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x21) -#define ia64_ldfe_c_clr_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x20) - -#define ia64_ldfs_c_nc_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x26) -#define ia64_ldfd_c_nc_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x27) -#define ia64_ldf8_c_nc_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x25) -#define ia64_ldfe_c_nc_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x24) - -#define ia64_ldf_fill_inc_hint_pred(code, qp, f1, r3, r2, hint) ia64_m7 ((code), (qp), (f1), (r3), (r2), (hint), 1, 0, 0x1B) - -#define ia64_m8(code, qp, f1, r3, imm, hint, x6) do { read_pr ((code), (qp)); write_fr ((code), (f1)); read_gr ((code), (r3)); write_gr ((code), (r3)); check_imm9 ((imm)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (imm) & 0x7f, 13, (r3), 20, ((imm) >> 7) & 0x1, 27, (hint), 28, (x6), 30, sign_bit ((imm)), 36, (7), 37); } while (0) - -#define ia64_ldfs_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x02) -#define ia64_ldfd_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x03) -#define ia64_ldf8_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x01) -#define ia64_ldfe_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x00) - -#define ia64_ldfs_s_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x06) -#define ia64_ldfd_s_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x07) -#define ia64_ldf8_s_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x05) -#define ia64_ldfe_s_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x04) - -#define ia64_ldfs_a_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x0A) -#define ia64_ldfd_a_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x0B) -#define ia64_ldf8_a_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x09) -#define ia64_ldfe_a_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x08) - -#define ia64_ldfs_sa_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x0E) -#define ia64_ldfd_sa_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x0F) -#define ia64_ldf8_sa_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x0D) -#define ia64_ldfe_sa_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x0C) - -#define ia64_ldfs_c_clr_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x22) -#define ia64_ldfd_c_clr_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x23) -#define ia64_ldf8_c_clr_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x21) -#define ia64_ldfe_c_clr_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x20) - -#define ia64_ldfs_c_nc_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x26) -#define ia64_ldfd_c_nc_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x27) -#define ia64_ldf8_c_nc_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x25) -#define ia64_ldfe_c_nc_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x24) - -#define ia64_ldf_fill_inc_imm_hint_pred(code, qp, f1, r3, imm, hint) ia64_m8 ((code), (qp), (f1), (r3), (imm), (hint), 0x1B) - -/* Pseudo ops */ - -#define ia64_ldfs_pred(code, qp, f1, r3) ia64_ldfs_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfd_pred(code, qp, f1, r3) ia64_ldfd_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldf8_pred(code, qp, f1, r3) ia64_ldf8_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfe_pred(code, qp, f1, r3) ia64_ldfe_hint_pred (code, qp, f1, r3, 0) - -#define ia64_ldfs_s_pred(code, qp, f1, r3) ia64_ldfs_s_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfd_s_pred(code, qp, f1, r3) ia64_ldfd_s_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldf8_s_pred(code, qp, f1, r3) ia64_ldf8_s_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfe_s_pred(code, qp, f1, r3) ia64_ldfe_s_hint_pred (code, qp, f1, r3, 0) - -#define ia64_ldfs_a_pred(code, qp, f1, r3) ia64_ldfs_a_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfd_a_pred(code, qp, f1, r3) ia64_ldfd_a_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldf8_a_pred(code, qp, f1, r3) ia64_ldf8_a_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfe_a_pred(code, qp, f1, r3) ia64_ldfe_a_hint_pred (code, qp, f1, r3, 0) - -#define ia64_ldfs_sa_pred(code, qp, f1, r3) ia64_ldfs_sa_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfd_sa_pred(code, qp, f1, r3) ia64_ldfd_sa_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldf8_sa_pred(code, qp, f1, r3) ia64_ldf8_sa_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfe_sa_pred(code, qp, f1, r3) ia64_ldfe_sa_hint_pred (code, qp, f1, r3, 0) - -#define ia64_ldfs_c_clr_pred(code, qp, f1, r3) ia64_ldfs_c_clr_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfd_c_clr_pred(code, qp, f1, r3) ia64_ldfd_c_clr_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldf8_c_clr_pred(code, qp, f1, r3) ia64_ldf8_c_clr_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfe_c_clr_pred(code, qp, f1, r3) ia64_ldfe_c_clr_hint_pred (code, qp, f1, r3, 0) - -#define ia64_ldfs_c_nc_pred(code, qp, f1, r3) ia64_ldfs_c_nc_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfd_c_nc_pred(code, qp, f1, r3) ia64_ldfd_c_nc_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldf8_c_nc_pred(code, qp, f1, r3) ia64_ldf8_c_nc_hint_pred (code, qp, f1, r3, 0) -#define ia64_ldfe_c_nc_pred(code, qp, f1, r3) ia64_ldfe_c_nc_hint_pred (code, qp, f1, r3, 0) - -#define ia64_ldf_fill_pred(code, qp, f1, r3) ia64_ldf_fill_hint_pred (code, qp, f1, r3, 0) - -#define ia64_ldfs_inc_pred(code, qp, f1, r3, r2) ia64_ldfs_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfd_inc_pred(code, qp, f1, r3, r2) ia64_ldfd_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldf8_inc_pred(code, qp, f1, r3, r2) ia64_ldf8_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfe_inc_pred(code, qp, f1, r3, r2) ia64_ldfe_inc_hint_pred (code, qp, f1, r3, r2, 0) - -#define ia64_ldfs_s_inc_pred(code, qp, f1, r3, r2) ia64_ldfs_s_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfd_s_inc_pred(code, qp, f1, r3, r2) ia64_ldfd_s_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldf8_s_inc_pred(code, qp, f1, r3, r2) ia64_ldf8_s_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfe_s_inc_pred(code, qp, f1, r3, r2) ia64_ldfe_s_inc_hint_pred (code, qp, f1, r3, r2, 0) - -#define ia64_ldfs_a_inc_pred(code, qp, f1, r3, r2) ia64_ldfs_a_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfd_a_inc_pred(code, qp, f1, r3, r2) ia64_ldfd_a_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldf8_a_inc_pred(code, qp, f1, r3, r2) ia64_ldf8_a_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfe_a_inc_pred(code, qp, f1, r3, r2) ia64_ldfe_a_inc_hint_pred (code, qp, f1, r3, r2, 0) - -#define ia64_ldfs_sa_inc_pred(code, qp, f1, r3, r2) ia64_ldfs_sa_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfd_sa_inc_pred(code, qp, f1, r3, r2) ia64_ldfd_sa_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldf8_sa_inc_pred(code, qp, f1, r3, r2) ia64_ldf8_sa_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfe_sa_inc_pred(code, qp, f1, r3, r2) ia64_ldfe_sa_inc_hint_pred (code, qp, f1, r3, r2, 0) - -#define ia64_ldfs_c_clr_inc_pred(code, qp, f1, r3, r2) ia64_ldfs_c_clr_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfd_c_clr_inc_pred(code, qp, f1, r3, r2) ia64_ldfd_c_clr_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldf8_c_clr_inc_pred(code, qp, f1, r3, r2) ia64_ldf8_c_clr_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfe_c_clr_inc_pred(code, qp, f1, r3, r2) ia64_ldfe_c_clr_inc_hint_pred (code, qp, f1, r3, r2, 0) - -#define ia64_ldfs_c_nc_inc_pred(code, qp, f1, r3, r2) ia64_ldfs_c_nc_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfd_c_nc_inc_pred(code, qp, f1, r3, r2) ia64_ldfd_c_nc_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldf8_c_nc_inc_pred(code, qp, f1, r3, r2) ia64_ldf8_c_nc_inc_hint_pred (code, qp, f1, r3, r2, 0) -#define ia64_ldfe_c_nc_inc_pred(code, qp, f1, r3, r2) ia64_ldfe_c_nc_inc_hint_pred (code, qp, f1, r3, r2, 0) - -#define ia64_ldf_fill_inc_pred(code, qp, f1, r3, r2) ia64_ldf_fill_inc_hint_pred (code, qp, f1, r3, r2, 0) - -#define ia64_ldfs_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfs_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfd_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfd_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldf8_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldf8_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfe_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfe_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) - -#define ia64_ldfs_s_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfs_s_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfd_s_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfd_s_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldf8_s_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldf8_s_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfe_s_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfe_s_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) - -#define ia64_ldfs_a_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfs_a_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfd_a_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfd_a_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldf8_a_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldf8_a_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfe_a_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfe_a_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) - -#define ia64_ldfs_sa_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfs_sa_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfd_sa_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfd_sa_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldf8_sa_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldf8_sa_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfe_sa_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfe_sa_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) - -#define ia64_ldfs_c_clr_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfs_c_clr_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfd_c_clr_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfd_c_clr_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldf8_c_clr_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldf8_c_clr_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfe_c_clr_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfe_c_clr_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) - -#define ia64_ldfs_c_nc_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfs_c_nc_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfd_c_nc_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfd_c_nc_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldf8_c_nc_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldf8_c_nc_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) -#define ia64_ldfe_c_nc_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldfe_c_nc_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) - -#define ia64_ldf_fill_inc_imm_pred(code, qp, f1, r3, imm) ia64_ldf_fill_inc_imm_hint_pred (code, qp, f1, r3, imm, 0) - -/* End of pseudo ops */ - -#define ia64_m9(code, qp, r3, f2, hint, m, x, x6) do { read_pr ((code), (qp)); read_gr ((code), (r3)); read_fr ((code), (f2)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (f2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_stfs_hint_pred(code, qp, r3, f2, hint) ia64_m9 ((code), (qp), (r3), (f2), (hint), 0, 0, 0x32) -#define ia64_stfd_hint_pred(code, qp, r3, f2, hint) ia64_m9 ((code), (qp), (r3), (f2), (hint), 0, 0, 0x33) -#define ia64_stf8_hint_pred(code, qp, r3, f2, hint) ia64_m9 ((code), (qp), (r3), (f2), (hint), 0, 0, 0x31) -#define ia64_stfe_hint_pred(code, qp, r3, f2, hint) ia64_m9 ((code), (qp), (r3), (f2), (hint), 0, 0, 0x30) -#define ia64_stf_spill_hint_pred(code, qp, r3, f2, hint) ia64_m9 ((code), (qp), (r3), (f2), (hint), 0, 0, 0x3B) - -#define ia64_m10(code, qp, r3, f2, imm, hint, x6) do { read_pr ((code), (qp)); read_gr ((code), (r3)); write_gr ((code), (r3)); read_fr ((code), (f2)); check_imm9 ((imm)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0x7f, 6, (f2), 13, (r3), 20, ((imm) >> 7) & 0x1, 27, (hint), 28, (x6), 30, sign_bit ((imm)), 36, (7), 37); } while (0) - -#define ia64_stfs_inc_imm_hint_pred(code, qp, r3, f2, imm, hint) ia64_m10 ((code), (qp), (r3), (f2), (imm), (hint), 0x32) -#define ia64_stfd_inc_imm_hint_pred(code, qp, r3, f2, imm, hint) ia64_m10 ((code), (qp), (r3), (f2), (imm), (hint), 0x33) -#define ia64_stf8_inc_imm_hint_pred(code, qp, r3, f2, imm, hint) ia64_m10 ((code), (qp), (r3), (f2), (imm), (hint), 0x31) -#define ia64_stfe_inc_imm_hint_pred(code, qp, r3, f2, imm, hint) ia64_m10 ((code), (qp), (r3), (f2), (imm), (hint), 0x30) -#define ia64_stf_spill_inc_imm_hint_pred(code, qp, r3, f2, imm, hint) ia64_m10 ((code), (qp), (r3), (f2), (imm), (hint), 0x3B) - -#define ia64_m11(code, qp, f1, f2, r3, hint, m, x, x6) do { read_pr ((code), (qp)); write_fr ((code), (f1)); write_fr ((code), (f2)); read_gr ((code), (r3)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (f2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_ldfps_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x02) -#define ia64_ldfpd_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x03) -#define ia64_ldfp8_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x01) - -#define ia64_ldfps_s_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x06) -#define ia64_ldfpd_s_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x07) -#define ia64_ldfp8_s_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x05) - -#define ia64_ldfps_a_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x0A) -#define ia64_ldfpd_a_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x0B) -#define ia64_ldfp8_a_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x09) - -#define ia64_ldfps_sa_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x0E) -#define ia64_ldfpd_sa_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x0F) -#define ia64_ldfp8_sa_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x0D) - -#define ia64_ldfps_c_clr_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x22) -#define ia64_ldfpd_c_clr_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x23) -#define ia64_ldfp8_c_clr_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x21) - -#define ia64_ldfps_c_nc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x26) -#define ia64_ldfpd_c_nc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x27) -#define ia64_ldfp8_c_nc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m11 ((code), (qp), (f1), (f2), (r3), (hint), 0, 1, 0x25) - -#define ia64_m12(code, qp, f1, f2, r3, hint, m, x, x6) do { read_pr ((code), (qp)); write_fr ((code), (f1)); write_fr ((code), (f2)); read_gr ((code), (r3)); write_gr ((code), (r3)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (f2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_ldfps_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x02) -#define ia64_ldfpd_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x03) -#define ia64_ldfp8_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x01) - -#define ia64_ldfps_s_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x06) -#define ia64_ldfpd_s_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x07) -#define ia64_ldfp8_s_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x05) - -#define ia64_ldfps_a_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x0A) -#define ia64_ldfpd_a_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x0B) -#define ia64_ldfp8_a_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x09) - -#define ia64_ldfps_sa_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x0E) -#define ia64_ldfpd_sa_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x0F) -#define ia64_ldfp8_sa_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x0D) - -#define ia64_ldfps_c_clr_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x22) -#define ia64_ldfpd_c_clr_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x23) -#define ia64_ldfp8_c_clr_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x21) - -#define ia64_ldfps_c_nc_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x26) -#define ia64_ldfpd_c_nc_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x27) -#define ia64_ldfp8_c_nc_inc_hint_pred(code, qp, f1, f2, r3, hint) ia64_m12 ((code), (qp), (f1), (f2), (r3), (hint), 1, 1, 0x25) - -typedef enum { - IA64_LFHINT_NONE = 0, - IA64_LFHINT_NT1 = 1, - IA64_LFHINT_NT2 = 2, - IA64_LFHINT_NTA = 3 -} Ia64LinePrefetchHint; - -#define ia64_m13(code, qp, r3, hint, m, x, x6) do { read_pr ((code), (qp)); read_gr ((code), (r3)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_M, (qp), 0, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_lfetch_hint_pred(code, qp, r3, hint) ia64_m13 ((code), (qp), (r3), (hint), 0, 0, 0x2C) -#define ia64_lfetch_excl_hint_pred(code, qp, r3, hint) ia64_m13 ((code), (qp), (r3), (hint), 0, 0, 0x2D) -#define ia64_lfetch_fault_hint_pred(code, qp, r3, hint) ia64_m13 ((code), (qp), (r3), (hint), 0, 0, 0x2E) -#define ia64_lfetch_fault_excl_hint_pred(code, qp, r3, hint) ia64_m13 ((code), (qp), (r3), (hint), 0, 0, 0x2F) - -#define ia64_m14(code, qp, r3, r2, hint, m, x, x6) do { read_pr ((code), (qp)); read_gr ((code), (r3)); write_gr ((code), (r3)); read_gr ((code), (r2)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (r2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_lfetch_inc_hint_pred(code, qp, r3, r2, hint) ia64_m14 ((code), (qp), (r3), (r2), (hint), 1, 0, 0x2C) -#define ia64_lfetch_excl_inc_hint_pred(code, qp, r3, r2, hint) ia64_m14 ((code), (qp), (r3), (r2), (hint), 1, 0, 0x2D) -#define ia64_lfetch_fault_inc_hint_pred(code, qp, r3, r2, hint) ia64_m14 ((code), (qp), (r3), (r2), (hint), 1, 0, 0x2E) -#define ia64_lfetch_fault_excl_inc_hint_pred(code, qp, r3, r2, hint) ia64_m14 ((code), (qp), (r3), (r2), (hint), 1, 0, 0x2F) - -#define ia64_m15(code, qp, r3, imm, hint, x6) do { read_pr ((code), (qp)); read_gr ((code), (r3)); write_gr ((code), (r3)); check_imm9 ((imm)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0x7f, 13, (r3), 20, ((imm) >> 7) & 0x1, 27, (hint), 28, (x6), 30, sign_bit ((imm)), 36, (7), 37); } while (0) - -#define ia64_lfetch_inc_imm_hint_pred(code, qp, r3, imm, hint) ia64_m15 ((code), (qp), (r3), (imm), (hint), 0x2C) -#define ia64_lfetch_excl_inc_imm_hint_pred(code, qp, r3, imm, hint) ia64_m15 ((code), (qp), (r3), (imm), (hint), 0x2D) -#define ia64_lfetch_fault_inc_imm_hint_pred(code, qp, r3, imm, hint) ia64_m15 ((code), (qp), (r3), (imm), (hint), 0x2E) -#define ia64_lfetch_fault_excl_inc_imm_hint_pred(code, qp, r3, imm, hint) ia64_m15 ((code), (qp), (r3), (imm), (hint), 0x2F) - -#define ia64_m16(code, qp, r1, r3, r2, hint, m, x, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); read_gr ((code), (r2)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (r2), 13, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (4), 37); } while (0) - -#define ia64_cmpxchg1_acq_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x00) -#define ia64_cmpxchg2_acq_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x01) -#define ia64_cmpxchg4_acq_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x02) -#define ia64_cmpxchg8_acq_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x03) -#define ia64_cmpxchg1_rel_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x04) -#define ia64_cmpxchg2_rel_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x05) -#define ia64_cmpxchg4_rel_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x06) -#define ia64_cmpxchg8_rel_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x07) -#define ia64_cmpxchg16_acq_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x20) -#define ia64_cmpxchg16_rel_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x24) -#define ia64_xchg1_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x08) -#define ia64_xchg2_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x09) -#define ia64_xchg4_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x0A) -#define ia64_xchg8_hint_pred(code, qp, r1, r3, r2, hint) ia64_m16 ((code), (qp), (r1), (r3), (r2), (hint), 0, 1, 0x0B) - -#define encode_inc3(inc3) ((inc3) == 16 ? 0 : ((inc3) == 8 ? 1 : ((inc3) == 4 ? 2 : 3))) - -#define ia64_m17(code, qp, r1, r3, imm, hint, m, x, x6) do { int aimm; read_pr ((code), (qp)); write_gr ((code), (r1)); read_gr ((code), (r3)); aimm = (imm) < 0 ? - (imm) : (imm); check_assert ((aimm) == 16 || (aimm) == 8 || (aimm) == 4 || (aimm) == 1); ia64_emit_ins_10 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, encode_inc3 (aimm), 13, sign_bit ((imm)), 15, (r3), 20, (x), 27, (hint), 28, (x6), 30, (m), 36, (4), 37); } while (0) - -#define ia64_fetchadd4_acq_hint_pred(code, qp, r1, r3, inc, hint) ia64_m17 ((code), (qp), (r1), (r3), (inc), (hint), 0, 1, 0x12) -#define ia64_fetchadd8_acq_hint_pred(code, qp, r1, r3, inc, hint) ia64_m17 ((code), (qp), (r1), (r3), (inc), (hint), 0, 1, 0x13) -#define ia64_fetchadd4_rel_hint_pred(code, qp, r1, r3, inc, hint) ia64_m17 ((code), (qp), (r1), (r3), (inc), (hint), 0, 1, 0x16) -#define ia64_fetchadd8_rel_hint_pred(code, qp, r1, r3, inc, hint) ia64_m17 ((code), (qp), (r1), (r3), (inc), (hint), 0, 1, 0x17) - -#define ia64_m18(code, qp, f1, r2, m, x, x6) do { read_pr ((code), (qp)); read_gr ((code), (r2)); write_fr ((code), (f1)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (r2), 13, (x), 27, (x6), 30, (m), 36, (6), 37); } while (0) - -#define ia64_setf_sig_pred(code, qp, f1, r2) ia64_m18 ((code), (qp), (f1), (r2), 0, 1, 0x1C) -#define ia64_setf_exp_pred(code, qp, f1, r2) ia64_m18 ((code), (qp), (f1), (r2), 0, 1, 0x1D) -#define ia64_setf_s_pred(code, qp, f1, r2) ia64_m18 ((code), (qp), (f1), (r2), 0, 1, 0x1E) -#define ia64_setf_d_pred(code, qp, f1, r2) ia64_m18 ((code), (qp), (f1), (r2), 0, 1, 0x1F) - -#define ia64_m19(code, qp, r1, f2, m, x, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_fr ((code), (f2)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (f2), 13, (x), 27, (x6), 30, (m), 36, (4), 37); } while (0) - -#define ia64_getf_sig_pred(code, qp, r1, f2) ia64_m19 ((code), (qp), (r1), (f2), 0, 1, 0x1C) -#define ia64_getf_exp_pred(code, qp, r1, f2) ia64_m19 ((code), (qp), (r1), (f2), 0, 1, 0x1D) -#define ia64_getf_s_pred(code, qp, r1, f2) ia64_m19 ((code), (qp), (r1), (f2), 0, 1, 0x1E) -#define ia64_getf_d_pred(code, qp, r1, f2) ia64_m19 ((code), (qp), (r1), (f2), 0, 1, 0x1F) - -#define ia64_m20(code, qp, r2, imm, x3) do { read_pr ((code), (qp)); read_gr ((code), (r2)); check_imm21 ((imm)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0x7f, 6, (r2), 13, ((imm) >> 7) & 0x1fff, 20, (x3), 33, sign_bit ((imm)), 36, (1), 37); } while (0) - -#define ia64_chk_s_m_pred(code, qp,r2,disp) ia64_m20 ((code), (qp), (r2), (disp), 1) - -#define ia64_m21(code, qp, f2, imm, x3) do { read_pr ((code), (qp)); read_fr ((code), (f2)); check_imm21 ((imm)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0x7f, 6, (f2), 13, ((imm) >> 7) & 0x1fff, 20, (x3), 33, sign_bit ((imm)), 36, (1), 37); } while (0) - -#define ia64_chk_s_float_m_pred(code, qp,f2,disp) ia64_m21 ((code), (qp), (f2), (disp), 3) - -#define ia64_m22(code, qp, r1, imm, x3) do { read_pr ((code), (qp)); read_gr ((code), (r1)); check_imm21 ((imm)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (imm) & 0xfffff, 13, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_chk_a_nc_pred(code, qp,r1,disp) ia64_m22 ((code), (qp), (r1), (disp), 4) -#define ia64_chk_a_clr_pred(code, qp,r1,disp) ia64_m22 ((code), (qp), (r1), (disp), 5) - -#define ia64_m23(code, qp, f1, imm, x3) do { read_pr ((code), (qp)); read_fr ((code), (f1)); check_imm21 ((imm)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (imm) & 0xfffff, 13, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_chk_a_nc_float_pred(code, qp,f1,disp) ia64_m23 ((code), (qp), (f1), (disp), 6) -#define ia64_chk_a_clr_float_pred(code, qp,f1,disp) ia64_m23 ((code), (qp), (f1), (disp), 7) - -#define ia64_m24(code, qp, x3, x4, x2) do { read_pr ((code), (qp)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_M, (qp), 0, (x4), 27, (x2), 31, (x3), 33, (0), 37); } while (0) - -#define ia64_invala_pred(code, qp) ia64_m24 ((code), (qp), 0, 0, 1) -#define ia64_fwb_pred(code, qp) ia64_m24 ((code), (qp), 0, 0, 2) -#define ia64_mf_pred(code, qp) ia64_m24 ((code), (qp), 0, 2, 2) -#define ia64_mf_a_pred(code, qp) ia64_m24 ((code), (qp), 0, 3, 2) -#define ia64_srlz_d_pred(code, qp) ia64_m24 ((code), (qp), 0, 0, 3) -#define ia64_stlz_i_pred(code, qp) ia64_m24 ((code), (qp), 0, 1, 3) -#define ia64_sync_i_pred(code, qp) ia64_m24 ((code), (qp), 0, 3, 3) - -#define ia64_m25(code, qp, x3, x4, x2) do { read_pr ((code), (qp)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_M, (qp), 0, (x4), 27, (x2), 31, (x3), 33, (0), 37); } while (0) - -#define ia64_flushrs_pred(code, qp) ia64_m24 ((code), (qp), 0, 0xC, 0) -#define ia64_loadrs_pred(code, qp) ia64_m24 ((code), (qp), 0, 0XA, 0) - -#define ia64_m26(code, qp, r1, x3, x4, x2) do { read_pr ((code), (qp)); read_gr ((code), (r1)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (x4), 27, (x2), 31, (x3), 33, (0), 37); } while (0) - -#define ia64_invala_e_pred(code, qp, r1) ia64_m26 ((code), (qp), (r1), 0, 2, 1) - -#define ia64_m27(code, qp, f1, x3, x4, x2) do { read_pr ((code), (qp)); read_fr ((code), (f1)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_M, (qp), 0, (f1), 6, (x4), 27, (x2), 31, (x3), 33, (0), 37); } while (0) - -#define ia64_invala_e_float_pred(code, qp, f1) ia64_m26 ((code), (qp), (f1), 0, 3, 1) - -#define ia64_m28(code, qp, r3, x3, x6, x) do { read_pr ((code), (qp)); read_gr ((code), (r3)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (r3), 20, (x6), 27, (x3), 33, (x), 36, (1), 37); } while (0) - -#define ia64_fc_pred(code, qp, r3) ia64_m28 ((code), (qp), (r3), 0, 0x30, 0) -#define ia64_fc_i_pred(code, qp, r3) ia64_m28 ((code), (qp), (r3), 0, 0x30, 1) - -#define ia64_m29(code, qp, ar3, r2, x3, x6) do { read_pr ((code), (qp)); read_gr ((code), (r2)); write_ar ((code), (ar3)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (r2), 13, (ar3), 20, (x6), 27, (x3), 33, (1), 37); } while (0) - -#define ia64_mov_to_ar_m_pred(code, qp, ar3, r2) ia64_m29 ((code), (qp), (ar3), (r2), 0, 0x2a) - -#define ia64_m30(code, qp, ar3, imm, x3, x4, x2) do { read_pr ((code), (qp)); read_ar ((code), (ar3)); check_imm8 ((imm)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0x7f, 13, (ar3), 20, (x4), 27, (x2), 31, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_mov_to_ar_imm_m_pred(code, qp, ar3, imm) ia64_m30 ((code), (qp), (ar3), (imm), 0, 8, 2) - -#define ia64_m31(code, qp, r1, ar3, x3, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); read_ar ((code), (ar3)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (ar3), 20, (x6), 27, (x3), 33, (1), 37); } while (0) - -#define ia64_mov_from_ar_m_pred(code, qp, r1, ar3) ia64_m31 ((code), (qp), (r1), (ar3), 0, 0x22) - -#define ia64_m32(code, qp, cr3, r2, x3, x6) do { read_pr ((code), (qp)); read_gr ((code), (r2)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (r2), 13, (cr3), 20, (x6), 27, (x3), 33, (1), 37); } while (0) - -#define ia64_mov_to_cr_pred(code, qp, cr3, r2) ia64_m32 ((code), (qp), (cr3), (r2), 0, 0x2C) - -#define ia64_m33(code, qp, r1, cr3, x3, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (cr3), 20, (x6), 27, (x3), 33, (1), 37); } while (0) - -#define ia64_mov_from_cr_pred(code, qp, r1, cr3) ia64_m33 ((code), (qp), (r1), (cr3), 0, 0x24) - -#define ia64_m34(code, qp, r1, sor, sol, sof, x3) do { ia64_begin_bundle ((code)); read_pr ((code), (qp)); write_gr ((code), (r1)); check_assert ((guint64)(sor) <= 0xf); check_assert ((guint64)(sol) <= 0x7f); check_assert ((guint64)(sof) <= 96); check_assert ((code).nins == 0); check_assert ((qp) == 0); ia64_emit_ins_7 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (sof), 13, (sol), 20, (sor), 27, (x3), 33, (1), 37); } while (0) - -#define ia64_alloc_pred(code, qp, r1, i, l, o, r) do { read_pr ((code), (qp)); check_assert (((r) % 8) == 0); check_assert ((r) <= (i) + (l) + (o)); ia64_m34 ((code), (qp), (r1), (r) >> 3, (i) + (l), (i) + (l) + (o), 6); } while (0) - -#define ia64_m35(code, qp, r2, x3, x6) do { read_pr ((code), (qp)); read_gr ((code), (r2)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_M, (qp), 0, (r2), 13, (x6), 27, (x3), 33, (1), 37); } while (0) - -#define ia64_mov_to_psr_l_pred(code, qp, r2) ia64_m35 ((code), (qp), (r2), 0, 0x2D) -#define ia64_mov_to_psr_um_pred(code, qp, r2) ia64_m35 ((code), (qp), (r2), 0, 0x29) - -#define ia64_m36(code, qp, r1, x3, x6) do { read_pr ((code), (qp)); write_gr ((code), (r1)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_M, (qp), 0, (r1), 6, (x6), 27, (x3), 33, (1), 37); } while (0) - -#define ia64_mov_from_psr_pred(code, qp, r1) ia64_m36 ((code), (qp), (r1), 0, 0x25) -#define ia64_mov_from_psr_um_pred(code, qp, r1) ia64_m36 ((code), (qp), (r1), 0, 0x21) - -#define ia64_m37(code, qp, imm, x3, x2, x4) do { read_pr ((code), (qp)); check_imm21 ((imm)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0xfffff, 6, (x4), 27, (x2), 31, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_break_m_pred(code, qp, imm) ia64_m37 ((code), (qp), (imm), 0, 0, 0) - -/* The System/Memory Management instruction encodings (M38-M47) are missing */ - -#define ia64_m48(code, qp, imm, x3, x4, x2, y) do { read_pr ((code), (qp)); check_imm21 ((imm)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_M, (qp), 0, (imm) & 0xfffff, 6, (y), 26, (x4), 27, (x2), 31, (x3), 33, sign_bit ((imm)), 36, (0), 37); } while (0) - -#define ia64_nop_m_pred(code, qp, imm) ia64_m48 ((code), (qp), (imm), 0, 1, 0, 0) -#define ia64_hint_m_pred(code, qp, imm) ia64_m48 ((code), (qp), (imm), 0, 1, 0, 1) - -typedef enum { - IA64_BWH_SPTK = 0, - IA64_BWH_SPNT = 1, - IA64_BWH_DPTK = 2, - IA64_BWH_DPNT = 3 -} Ia64BranchWhetherHint; - -typedef enum { - IA64_PH_FEW = 0, - IA64_PH_MANY = 1 -} Ia64SeqPrefetchHint; - -typedef enum { - IA64_DH_NONE = 0, - IA64_DH_CLR = 1 -} Ia64BranchCacheDeallocHint; - -#define ia64_b1(code, qp, imm, bwh, ph, dh, btype) do { read_pr_branch ((code), (qp)); check_imm21 ((imm)); check_bwh ((bwh)); check_ph ((ph)); check_dh ((dh)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_B, (qp), 0, (btype), 6, (ph), 12, (imm) & 0xfffff, 13, (bwh), 33, (dh), 35, sign_bit ((imm)), 36, (4), 37); } while (0) - -#define ia64_br_cond_hint_pred(code, qp, disp, bwh, ph, dh) ia64_b1 ((code), (qp), (disp), (bwh), (ph), (dh), 0) -#define ia64_br_wexit_hint_pred(code, qp, disp, bwh, ph, dh) ia64_b1 ((code), (qp), (disp), (bwh), (ph), (dh), 2) -#define ia64_br_wtop_hint_pred(code, qp, disp, bwh, ph, dh) ia64_b1 ((code), (qp), (disp), (bwh), (ph), (dh), 3) - -#define ia64_b2(code, qp, imm, bwh, ph, dh, btype) do { read_pr ((code), (qp)); check_imm21 ((imm)); check_assert ((qp) == 0); check_bwh ((bwh)); check_ph ((ph)); check_dh ((dh)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_B, (qp), 0, (btype), 6, (ph), 12, (imm) & 0xfffff, 13, (bwh), 33, (dh), 35, sign_bit ((imm)), 36, (4), 37); } while (0) - -#define ia64_br_cloop_hint_pred(code, qp, disp, bwh, ph, dh) ia64_b2 ((code), (qp), (disp), (bwh), (ph), (dh), 5) -#define ia64_br_cexit_hint_pred(code, qp, disp, bwh, ph, dh) ia64_b2 ((code), (qp), (disp), (bwh), (ph), (dh), 6) -#define ia64_br_ctop_hint_pred(code, qp, disp, bwh, ph, dh) ia64_b2 ((code), (qp), (disp), (bwh), (ph), (dh), 7) - -#define ia64_b3(code, qp, b1, imm, bwh, ph, dh) do { read_pr ((code), (qp)); write_br ((code), (b1)); check_imm21 ((imm)); check_bwh ((bwh)); check_ph ((ph)); check_dh ((dh)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_B, (qp), 0, (b1), 6, (ph), 12, (imm) & 0xfffff, 13, (bwh), 33, (dh), 35, sign_bit ((imm)), 36, (5), 37); ia64_begin_bundle ((code)); } while (0) - -#define ia64_br_call_hint_pred(code, qp, b1, disp, bwh, ph, dh) ia64_b3 ((code), (qp), (b1), (disp), (bwh), (ph), (dh)) - -#define ia64_b4(code, qp, b2, bwh, ph, dh, x6, btype) do { read_pr ((code), (qp)); read_br_branch ((code), (b2)); check_bwh ((bwh)); check_ph ((ph)); check_dh ((dh)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_B, (qp), 0, (btype), 6, (ph), 12, (b2), 13, (x6), 27, (bwh), 33, (dh), 35, (0), 37); } while (0) - -#define ia64_br_cond_reg_hint_pred(code, qp, b1, bwh, ph, dh) ia64_b4 ((code), (qp), (b1), (bwh), (ph), (dh), 0x20, 0) -#define ia64_br_ia_reg_hint_pred(code, qp, b1, bwh, ph, dh) ia64_b4 ((code), (qp), (b1), (bwh), (ph), (dh), 0x20, 1) -#define ia64_br_ret_reg_hint_pred(code, qp, b1, bwh, ph, dh) ia64_b4 ((code), (qp), (b1), (bwh), (ph), (dh), 0x21, 4) - -#define ia64_b5(code, qp, b1, b2, bwh, ph, dh) do { read_pr ((code), (qp)); write_br ((code), (b1)); read_br_branch ((code), (b2)); check_bwh ((bwh)); check_ph ((ph)); check_dh ((dh)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_B, (qp), 0, (b1), 6, (ph), 12, (b2), 13, ((bwh) * 2) + 1, 32, (dh), 35, (1), 37); ia64_begin_bundle ((code)); } while (0) - -#define ia64_br_call_reg_hint_pred(code, qp, b1, b2, bwh, ph, dh) ia64_b5 ((code), (qp), (b1), (b2), (bwh), (ph), (dh)) - -/* Pseudo ops */ - -#define ia64_br_cond_pred(code, qp, disp) ia64_br_cond_hint_pred (code, qp, disp, 0, 0, 0) -#define ia64_br_wexit_pred(code, qp, disp) ia64_br_wexit_hint_pred (code, qp, disp, 0, 0, 0) -#define ia64_br_wtop_pred(code, qp, disp) ia64_br_wtop_hint_pred (code, qp, disp, 0, 0, 0) - -#define ia64_br_cloop_pred(code, qp, disp) ia64_br_cloop_hint_pred (code, qp, disp, 0, 0, 0) -#define ia64_br_cexit_pred(code, qp, disp) ia64_br_cexit_hint_pred (code, qp, disp, 0, 0, 0) -#define ia64_br_ctop_pred(code, qp, disp) ia64_br_ctop_hint_pred (code, qp, disp, 0, 0, 0) - -#define ia64_br_call_pred(code, qp, b1, disp) ia64_br_call_hint_pred (code, qp, b1, disp, 0, 0, 0) - -#define ia64_br_cond_reg_pred(code, qp, b1) ia64_br_cond_reg_hint_pred (code, qp, b1, 0, 0, 0) -#define ia64_br_ia_reg_pred(code, qp, b1) ia64_br_ia_reg_hint_pred (code, qp, b1, 0, 0, 0) -#define ia64_br_ret_reg_pred(code, qp, b1) ia64_br_ret_reg_hint_pred (code, qp, b1, 0, 0, 0) - -#define ia64_br_call_reg_pred(code, qp, b1, b2) ia64_br_call_reg_hint_pred (code, qp, b1, b2, 0, 0, 0) - -/* End of pseudo ops */ - -typedef enum { - IA64_IPWH_SPTK = 0, - IA64_IPWH_LOOP = 1, - IA64_IPWH_DPTK = 2, - IA64_IPWH_EXIT = 3 -} Ia64IPRelativeBranchWhetherHint; - -/* B6 and B7 is missing */ - -#define ia64_b8(code, qp, x6) do { read_pr ((code), (qp)); ia64_emit_ins_3 ((code), IA64_INS_TYPE_B, (qp), 0, (x6), 27, (0), 37); } while (0) - -#define ia64_cover_pred(code, qp) ia64_b8 ((code), (qp), 0x02) -#define ia64_clrrrb_pred(code, qp) ia64_b8 ((code), (qp), 0x04) -#define ia64_clrrrb_pr_pred(code, qp) ia64_b8 ((code), (qp), 0x05) -#define ia64_rfi_pred(code, qp) ia64_b8 ((code), (qp), 0x08) -#define ia64_bsw_0_pred(code, qp) ia64_b8 ((code), (qp), 0x0C) -#define ia64_bsw_1_pred(code, qp) ia64_b8 ((code), (qp), 0x0D) -#define ia64_epc_pred(code, qp) ia64_b8 ((code), (qp), 0x10) - -#define ia64_b9(code, qp, imm, opcode, x6) do { read_pr ((code), (qp)); check_imm21 ((imm)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_B, (qp), 0, (imm) & 0xfffff, 6, (x6), 27, ((imm) >> 20) & 0x1, 36, (opcode), 37); } while (0) - -#define ia64_break_b_pred(code, qp, imm) ia64_b9 ((code), (qp), (imm), 0, 0x00) -#define ia64_nop_b_pred(code, qp, imm) ia64_b9 ((code), (qp), (imm), 2, 0x00) -#define ia64_hint_b_pred(code, qp, imm) ia64_b9 ((code), (qp), (imm), 2, 0x01) - -/* - * F-Unit Instructions - */ - -#define ia64_f1(code, qp, f1, f3, f4, f2, sf, opcode, x) do { read_pr ((code), (qp)); check_sf ((sf)); write_fr ((code), (f1)); read_fr ((code), (f2)); read_fr ((code), (f3)); read_fr ((code), (f4)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (f3), 20, (f4), 27, (sf), 34, (x), 36, (opcode), 37); } while (0) - -#define ia64_fma_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 8, 0) -#define ia64_fma_s_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 8, 1) -#define ia64_fma_d_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 9, 0) -#define ia64_fpma_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 9, 1) -#define ia64_fms_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xA, 0) -#define ia64_fms_s_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xA, 1) -#define ia64_fms_d_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xB, 0) -#define ia64_fpms_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xB, 1) -#define ia64_fnma_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xC, 0) -#define ia64_fnma_s_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xC, 1) -#define ia64_fnma_d_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xD, 0) -#define ia64_fpnma_sf_pred(code, qp, f1, f3, f4, f2, sf) ia64_f1 ((code), (qp), (f1), (f3), (f4), (f2), (sf), 0xD, 1) - -/* Pseudo ops */ -#define ia64_fnorm_s_sf_pred(code, qp, f1, f3, sf) ia64_fma_s_sf_pred ((code), (qp), (f1), (f3), 1, 0, (sf)) -#define ia64_fnorm_d_sf_pred(code, qp, f1, f3, sf) ia64_fma_d_sf_pred ((code), (qp), (f1), (f3), 1, 0, (sf)) - -#define ia64_f2(code, qp, f1, f3, f4, f2, opcode, x, x2) do { read_pr ((code), (qp)); write_fr ((code), (f1)); read_fr ((code), (f3)); read_fr ((code), (f4)); read_fr ((code), (f2)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (f3), 20, (f4), 27, (x2), 34, (x), 36, (opcode), 37); } while (0) - -#define ia64_xma_l_pred(code, qp, f1, f3, f4, f2) ia64_f2 ((code), (qp), (f1), (f3), (f4), (f2), 0xE, 1, 0) -#define ia64_xma_h_pred(code, qp, f1, f3, f4, f2) ia64_f2 ((code), (qp), (f1), (f3), (f4), (f2), 0xE, 1, 3) -#define ia64_xma_hu_pred(code, qp, f1, f3, f4, f2) ia64_f2 ((code), (qp), (f1), (f3), (f4), (f2), 0xE, 1, 2) - -/* Pseudo ops */ -#define ia64_xmpy_l_pred(code, qp, f1, f3, f4) ia64_xma_l_pred ((code), (qp), (f1), (f3), (f4), 0) -#define ia64_xmpy_lu_pred(code, qp, f1, f3, f4) ia64_xma_l_pred ((code), (qp), (f1), (f3), (f4), 0) -#define ia64_xmpy_h_pred(code, qp, f1, f3, f4) ia64_xma_h_pred ((code), (qp), (f1), (f3), (f4), 0) -#define ia64_xmpy_hu_pred(code, qp, f1, f3, f4) ia64_xma_hu_pred ((code), (qp), (f1), (f3), (f4), 0) - -#define ia64_f3(code, qp, f1, f3, f4, f2, opcode, x) do { read_pr ((code), (qp)); write_fr ((code), (f1)); read_fr ((code), (f3)); read_fr ((code), (f4)); read_fr ((code), (f2)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (f3), 20, (f4), 27, (x), 36, (opcode), 37); } while (0) - -#define ia64_fselect_pred(code, qp, f1, f3, f4, f2) ia64_f3 ((code), (qp), (f1), (f3), (f4), (f2), 0xE, 0) - -#define ia64_f4(code, qp, p1, p2, f2, f3, sf, opcode, ra, rb, ta) do { read_pr ((code), (qp)); read_fr ((code), (f2)); read_fr ((code), (f3)); write_pr_fp ((code), (p1)); write_pr_fp ((code), (p2)); ia64_emit_ins_10 ((code), IA64_INS_TYPE_F, (qp), 0, (p1), 6, (ta), 12, (f2), 13, (f3), 20, (p2), 27, (ra), 33, (sf), 34, (rb), 36, (opcode), 37); } while (0) - -#define ia64_fcmp_eq_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 0, 0, 0) -#define ia64_fcmp_lt_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 0, 1, 0) -#define ia64_fcmp_le_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 1, 0, 0) -#define ia64_fcmp_unord_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 1, 1, 0) -#define ia64_fcmp_eq_unc_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 0, 0, 1) -#define ia64_fcmp_lt_unc_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 0, 1, 1) -#define ia64_fcmp_le_unc_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 1, 0, 1) -#define ia64_fcmp_unord_unc_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_f4 ((code), (qp), (p1), (p2), (f2), (f3), (sf), 0x4, 1, 1, 1) - -/* Pseudo ops */ -#define ia64_fcmp_gt_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_lt_sf_pred ((code), (qp), (p1), (p2), (f3), (f2), (sf)) -#define ia64_fcmp_ge_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_le_sf_pred ((code), (qp), (p1), (p2), (f3), (f2), (sf)) -#define ia64_fcmp_ne_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_eq_sf_pred ((code), (qp), (p2), (p1), (f2), (f3), (sf)) -#define ia64_fcmp_nlt_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_lt_sf_pred ((code), (qp), (p2), (p1), (f2), (f3), (sf)) -#define ia64_fcmp_nle_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_le_sf_pred ((code), (qp), (p2), (p1), (f2), (f3), (sf)) -#define ia64_fcmp_ngt_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_lt_sf_pred ((code), (qp), (p2), (p1), (f3), (f2), (sf)) -#define ia64_fcmp_nge_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_le_sf_pred ((code), (qp), (p2), (p1), (f3), (f2), (sf)) -#define ia64_fcmp_ord_sf_pred(code, qp, p1, p2, f2, f3, sf) ia64_fcmp_unord_sf_pred ((code), (qp), (p2), (p1), (f2), (f3), (sf)) - -#define ia64_f5(code, qp, p1, p2, f2, fclass, opcode, ta) do { read_pr ((code), (qp)); write_pr_fp ((code), (p1)); write_pr_fp ((code), (p2)); read_fr ((code), (f2)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_F, (qp), 0, (p1), 6, (ta), 12, (f2), 13, (((guint64)(fclass)) >> 2) & 0x7f, 20, (p2), 27, ((guint64)(fclass)) & 0x3, 33, (opcode), 37); } while (0) - -#define ia64_fclass_m_pred(code, qp, p1, p2, f2, fclass) ia64_f5 ((code), (qp), (p1), (p2), (f2), (fclass), 5, 0) -#define ia64_fclass_m_unc_pred(code, qp, p1, p2, f2, fclass) ia64_f5 ((code), (qp), (p1), (p2), (f2), (fclass), 5, 1) - -#define ia64_f6(code, qp, f1, p2, f2, f3, sf, opcode, x, q) do { read_pr ((code), (qp)); write_fr ((code), (f1)); write_pr_fp ((code), (p2)); read_fr ((code), (f2)); read_fr ((code), (f3)); ia64_emit_ins_9 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (f3), 20, (p2), 27, (x), 33, (sf), 34, (q), 36, (opcode), 37); } while (0) - -#define ia64_frcpa_sf_pred(code, qp, f1, p2, f2, f3, sf) ia64_f6 ((code), (qp), (f1), (p2), (f2), (f3), (sf), 0, 1, 0) -#define ia64_fprcpa_sf_pred(code, qp, f1, p2, f2, f3, sf) ia64_f6 ((code), (qp), (f1), (p2), (f2), (f3), (sf), 1, 1, 0) - -#define ia64_f7(code, qp, f1, p2, f3, sf, opcode, x, q) do { read_pr ((code), (qp)); write_fr ((code), (f1)); write_pr_fp ((code), (p2)); read_fr ((code), (f3)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f3), 20, (p2), 27, (x), 33, (sf), 34, (q), 36, (opcode), 37); } while (0) - -#define ia64_frsqrta_sf_pred(code, qp, f1, p2, f3, sf) ia64_f7 ((code), (qp), (f1), (p2), (f3), (sf), 0, 1, 1) -#define ia64_fprsqrta_sf_pred(code, qp, f1, p2, f3, sf) ia64_f7 ((code), (qp), (f1), (p2), (f3), (sf), 1, 1, 1) - -#define ia64_f8(code, qp, f1, f2, f3, sf, opcode, x, x6) do { read_pr ((code), (qp)); check_sf ((sf)); write_fr ((code), (f1)); read_fr ((code), (f2)); read_fr ((code), (f3)); ia64_emit_ins_8 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (f3), 20, (x6), 27, (x), 33, (sf), 34, (opcode), 37); } while (0) - -#define ia64_fmin_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 0, 0, 0x14) -#define ia64_fman_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 0, 0, 0x15) -#define ia64_famin_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 0, 0, 0x16) -#define ia64_famax_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 0, 0, 0x17) -#define ia64_fpmin_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x14) -#define ia64_fpman_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x15) -#define ia64_fpamin_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x16) -#define ia64_fpamax_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x17) -#define ia64_fpcmp_eq_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x30) -#define ia64_fpcmp_lt_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x31) -#define ia64_fpcmp_le_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x32) -#define ia64_fpcmp_unord_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x33) -#define ia64_fpcmp_neq_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x34) -#define ia64_fpcmp_nlt_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x35) -#define ia64_fpcmp_nle_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x36) -#define ia64_fpcmp_ord_sf_pred(code, qp, f1, f2, f3, sf) ia64_f8 ((code), (qp), (f1), (f2), (f3), (sf), 1, 0, 0x37) - -#define ia64_f9(code, qp, f1, f2, f3, opcode, x, x6) do { read_pr ((code), (qp)); write_fr ((code), (f1)); read_fr ((code), (f2)); read_fr ((code), (f3)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (f3), 20, (x6), 27, (x), 33, (opcode), 37); } while (0) - -#define ia64_fmerge_s_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x10) -#define ia64_fmerge_ns_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x11) -#define ia64_fmerge_se_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x12) -#define ia64_fmix_lr_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x39) -#define ia64_fmix_r_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x3A) -#define ia64_fmix_l_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x3B) -#define ia64_fsxt_r_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x3C) -#define ia64_fsxt_l_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x3D) -#define ia64_fpack_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x28) -#define ia64_fswap_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x34) -#define ia64_fswap_nl_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x35) -#define ia64_fswap_nr_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x36) -#define ia64_fand_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x2C) -#define ia64_fandcm_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x2D) -#define ia64_for_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x2E) -#define ia64_fxor_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x2F) -#define ia64_fpmerge_s_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x10) -#define ia64_fpmerge_ns_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x11) -#define ia64_fpmerge_se_pred(code, qp, f1, f2, f3) ia64_f9 ((code), (qp), (f1), (f2), (f3), 0, 0, 0x12) - -/* Pseudo ops */ -#define ia64_fmov_pred(code, qp, f1, f3) ia64_fmerge_s_pred ((code), (qp), (f1), (f3), (f3)) - -#define ia64_f10(code, qp, f1, f2, sf, opcode, x, x6) do { read_pr ((code), (qp)); check_sf ((sf)); write_fr ((code), (f1)); read_fr ((code), (f2)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (x6), 27, (x), 33, (sf), 34, (opcode), 37); } while (0) - -#define ia64_fcvt_fx_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 0, 0, 0x18) -#define ia64_fcvt_fxu_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 0, 0, 0x19) -#define ia64_fcvt_fx_trunc_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 0, 0, 0x1A) -#define ia64_fcvt_fxu_trunc_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 0, 0, 0x1B) -#define ia64_fpcvt_fx_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 1, 0, 0x18) -#define ia64_fpcvt_fxu_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 1, 0, 0x19) -#define ia64_fpcvt_fx_trunc_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 1, 0, 0x1A) -#define ia64_fpcvt_fxu_trunc_sf_pred(code, qp, f1, f2, sf) ia64_f10 ((code), (qp), (f1), (f2), (sf), 1, 0, 0x1B) - -#define ia64_f11(code, qp, f1, f2, opcode, x, x6) do { read_pr ((code), (qp)); write_fr ((code), (f1)); read_fr ((code), (f2)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_F, (qp), 0, (f1), 6, (f2), 13, (x6), 27, (x), 34, (opcode), 37); } while (0) - -#define ia64_fcvt_xf_pred(code, qp, f1, f2) ia64_f11 ((code), (qp), (f1), (f2), 0, 0, 0x1C) - -#define ia64_f12(code, qp, amask, omask, sf, opcode, x, x6) do { read_pr ((code), (qp)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_F, (qp), 0, (amask) & 0x3f, 13, (omask) & 0x3f, 20, (x6), 27, (x), 33, (sf), 34, (opcode), 37); } while (0) - -#define ia64_fsetc_sf_pred(code, qp, amask, omask, sf) ia64_f12 ((code), (qp), (amask), (omask), (sf), 0, 0, 0x04) - -#define ia64_f13(code, qp, sf, opcode, x, x6) do { read_pr ((code), (qp)); ia64_emit_ins_5 ((code), IA64_INS_TYPE_F, (qp), 0, (x6), 27, (x), 33, (sf), 34, (opcode), 37); } while (0) - -#define ia64_fclrf_sf_pred(code, qp, sf) ia64_f13 ((code), (qp), (sf), 0, 0, 0x05) - -#define ia64_f14(code, qp, imm, sf, opcode, x, x6) do { read_pr ((code), (qp)); check_imm21 ((imm)); ia64_emit_ins_7 ((code), IA64_INS_TYPE_F, (qp), 0, (imm) & 0xfffff, 6, (x6), 27, (x), 33, (sf), 34, sign_bit ((imm)), 36, (opcode), 37); } while (0) - -#define ia64_fchkf_sf_pred(code, qp, disp, sf) ia64_f14 ((code), (qp), (disp), (sf), 0, 0, 0x8) - -#define ia64_f15(code, qp, imm, opcode, x, x6) do { read_pr ((code), (qp)); check_imm21 ((imm)); ia64_emit_ins_6 ((code), IA64_INS_TYPE_F, (qp), 0, (imm) & 0xfffff, 6, (x6), 27, (x), 33, ((imm) >> 20) & 0x1, 36, (opcode), 37); } while (0) - -#define ia64_break_f_pred(code, qp, imm) ia64_f15 ((code), (qp), (imm), 0, 0, 0x0) - -/* - * X-UNIT ENCODINGS - */ - -#define ia64_x1(code, qp, imm, x3, x6) do { read_pr ((code), (qp)); check_imm62 ((imm)); ia64_begin_bundle (code); ia64_emit_ins_1 ((code), IA64_INS_TYPE_LX, ((guint64)(imm) >> 21) & 0x1ffffffffffULL, 0); ia64_emit_ins_6 ((code), IA64_INS_TYPE_LX, (qp), 0, (guint64)(imm) & 0xfffff, (6), (x6), 27, (x3), 33, ((guint64)(imm) >> 20) & 0x1, 36, (0), 37); } while (0) - -#define ia64_break_x_pred(code, qp, imm) ia64_x1 ((code), (qp), (imm), 0, 0x00) - -#define ia64_x2(code, qp, r1, imm, vc) do { if (code.nins > IA64_INS_BUFFER_SIZE - 2) ia64_emit_bundle (&(code), FALSE); read_pr ((code), (qp)); write_gr ((code), (r1)); ia64_emit_ins_1 ((code), IA64_INS_TYPE_LX, ((gint64)(imm) >> 22) & 0x1ffffffffffULL, 0); ia64_emit_ins_9 ((code), IA64_INS_TYPE_LX, (qp), 0, (r1), 6, (gint64)(imm) & 0x7f, (13), (vc), 20, ((gint64)(imm) >> 21) & 0x1, 21, ((gint64)(imm) >> 16) & 0x1f, 22, ((gint64)(imm) >> 7) & 0x1ff, 27, ((gint64)(imm) >> 63) & 0x1, 36, (6), 37); } while (0) - -#define ia64_movl_pred(code, qp, r1, imm) ia64_x2 ((code), (qp), (r1), (imm), 0) - -#define ia64_x3(code, qp, imm, bwh, ph, dh, btype) do { read_pr ((code), (qp)); ia64_begin_bundle (code); ia64_emit_ins_1 ((code), IA64_INS_TYPE_LX, ((guint64)(imm) >> 20) & 0x1ffffffffffULL, 0); ia64_emit_ins_8 ((code), IA64_INS_TYPE_LX, (qp), 0, (btype), 6, (ph), 12, (guint64)(imm) & 0xfffff, (13), (bwh), 33, (dh), 35, ((guint64)(imm) >> 59) & 0x1, 36, (0xC), 37); } while (0) - -#define ia64_brl_cond_hint_pred(code, qp, disp, bwh, ph, dh) ia64_x3 ((code), (qp), (disp), (bwh), (ph), (dh), 0) - -#define ia64_x4(code, qp, b1, imm, bwh, ph, dh) do { read_pr ((code), (qp)); write_br ((code), (b1)); ia64_begin_bundle (code); ia64_emit_ins_1 ((code), IA64_INS_TYPE_LX, ((guint64)(imm) >> 20) & 0x1ffffffffffULL, 0); ia64_emit_ins_8 ((code), IA64_INS_TYPE_LX, (qp), 0, (b1), 6, (ph), 12, (guint64)(imm) & 0xfffff, (13), (bwh), 33, (dh), 35, ((guint64)(imm) >> 59) & 0x1, 36, (0xD), 37); } while (0) - -#define ia64_brl_call_hint_pred(code, qp, b1, disp, bwh, ph, dh) ia64_x4 ((code), (qp), (b1), (disp), (bwh), (ph), (dh)) - -#define ia64_x5(code, qp, imm, x3, x6, y) do { read_pr ((code), (qp)); check_imm62 ((imm)); ia64_begin_bundle (code); ia64_emit_ins_1 ((code), IA64_INS_TYPE_LX, ((guint64)(imm) >> 21) & 0x1ffffffffffULL, 0); ia64_emit_ins_7 ((code), IA64_INS_TYPE_LX, (qp), 0, (guint64)(imm) & 0xfffff, (6), (y), 26, (x6), 27, (x3), 33, ((guint64)(imm) >> 20) & 0x1, 36, (0), 37); } while (0) - -#define ia64_nop_x_pred(code, qp, imm) ia64_x5 ((code), (qp), (imm), 0, 0x01, 0) -#define ia64_hint_x_pred(code, qp, imm) ia64_x5 ((code), (qp), (imm), 0, 0x01, 1) - - - - - - -/* - * Non predicated instruction variants - */ - - -#define ia64_add(code, r1, r2, r3) ia64_add_pred ((code), 0, r1, r2, r3) -#define ia64_add1(code, r1, r2, r3) ia64_add1_pred ((code), 0, r1, r2, r3) -#define ia64_sub(code, r1, r2, r3) ia64_sub_pred ((code), 0, r1, r2, r3) -#define ia64_sub1(code, r1, r2, r3) ia64_sub1_pred ((code), 0, r1, r2, r3) -#define ia64_addp4(code, r1, r2, r3) ia64_addp4_pred ((code), 0, r1, r2, r3) -#define ia64_and(code, r1, r2, r3) ia64_and_pred ((code), 0, r1, r2, r3) -#define ia64_andcm(code, r1, r2, r3) ia64_andcm_pred ((code), 0, r1, r2, r3) -#define ia64_or(code, r1, r2, r3) ia64_or_pred ((code), 0, r1, r2, r3) -#define ia64_xor(code, r1, r2, r3) ia64_xor_pred ((code), 0, r1, r2, r3) - - -#define ia64_shladd(code, r1, r2, r3,count) ia64_shladd_pred ((code), 0, r1, r2, r3,count) -#define ia64_shladdp4(code, r1, r2, r3,count) ia64_shladdp4_pred ((code), 0, r1, r2, r3,count) - - -#define ia64_sub_imm(code, r1,imm8,r3) ia64_sub_imm_pred ((code), 0, r1,imm8,r3) -#define ia64_and_imm(code, r1,imm8,r3) ia64_and_imm_pred ((code), 0, r1,imm8,r3) -#define ia64_andcm_imm(code, r1,imm8,r3) ia64_andcm_imm_pred ((code), 0, r1,imm8,r3) -#define ia64_or_imm(code, r1,imm8,r3) ia64_or_imm_pred ((code), 0, r1,imm8,r3) -#define ia64_xor_imm(code, r1,imm8,r3) ia64_xor_imm_pred ((code), 0, r1,imm8,r3) - - -#define ia64_adds_imm(code, r1,imm14,r3) ia64_adds_imm_pred ((code), 0, r1,imm14,r3) -#define ia64_addp4_imm(code, r1,imm14,r3) ia64_addp4_imm_pred ((code), 0, r1,imm14,r3) - - -#define ia64_addl_imm(code, r1,imm22,r3) ia64_addl_imm_pred ((code), 0, r1,imm22,r3) - - -#define ia64_cmp_lt(code, p1, p2, r2, r3) ia64_cmp_lt_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ltu(code, p1, p2, r2, r3) ia64_cmp_ltu_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_eq(code, p1, p2, r2, r3) ia64_cmp_eq_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_lt_unc(code, p1, p2, r2, r3) ia64_cmp_lt_unc_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ltu_unc(code, p1, p2, r2, r3) ia64_cmp_ltu_unc_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_eq_unc(code, p1, p2, r2, r3) ia64_cmp_eq_unc_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_eq_and(code, p1, p2, r2, r3) ia64_cmp_eq_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_eq_or(code, p1, p2, r2, r3) ia64_cmp_eq_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_eq_or_andcm(code, p1, p2, r2, r3) ia64_cmp_eq_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ne_and(code, p1, p2, r2, r3) ia64_cmp_ne_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ne_or(code, p1, p2, r2, r3) ia64_cmp_ne_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ne_or_andcm(code, p1, p2, r2, r3) ia64_cmp_ne_or_andcm_pred ((code), 0, p1, p2, r2, r3) - -#define ia64_cmp4_lt(code, p1, p2, r2, r3) ia64_cmp4_lt_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ltu(code, p1, p2, r2, r3) ia64_cmp4_ltu_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_eq(code, p1, p2, r2, r3) ia64_cmp4_eq_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_lt_unc(code, p1, p2, r2, r3) ia64_cmp4_lt_unc_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ltu_unc(code, p1, p2, r2, r3) ia64_cmp4_ltu_unc_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_eq_unc(code, p1, p2, r2, r3) ia64_cmp4_eq_unc_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_eq_and(code, p1, p2, r2, r3) ia64_cmp4_eq_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_eq_or(code, p1, p2, r2, r3) ia64_cmp4_eq_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_eq_or_andcm(code, p1, p2, r2, r3) ia64_cmp4_eq_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ne_and(code, p1, p2, r2, r3) ia64_cmp4_ne_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ne_or(code, p1, p2, r2, r3) ia64_cmp4_ne_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ne_or_andcm(code, p1, p2, r2, r3) ia64_cmp4_ne_or_andcm_pred ((code), 0, p1, p2, r2, r3) - -/* Pseudo ops */ -#define ia64_cmp_ne(code, p1, p2, r2, r3) ia64_cmp_ne_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_le(code, p1, p2, r2, r3) ia64_cmp_le_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_gt(code, p1, p2, r2, r3) ia64_cmp_gt_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ge(code, p1, p2, r2, r3) ia64_cmp_ge_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_leu(code, p1, p2, r2, r3) ia64_cmp_leu_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_gtu(code, p1, p2, r2, r3) ia64_cmp_gtu_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_geu(code, p1, p2, r2, r3) ia64_cmp_geu_pred ((code), 0, p1, p2, r2, r3) - -#define ia64_cmp4_ne(code, p1, p2, r2, r3) ia64_cmp4_ne_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_le(code, p1, p2, r2, r3) ia64_cmp4_le_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_gt(code, p1, p2, r2, r3) ia64_cmp4_gt_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ge(code, p1, p2, r2, r3) ia64_cmp4_ge_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_leu(code, p1, p2, r2, r3) ia64_cmp4_leu_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_gtu(code, p1, p2, r2, r3) ia64_cmp4_gtu_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_geu(code, p1, p2, r2, r3) ia64_cmp4_geu_pred ((code), 0, p1, p2, r2, r3) - -#define ia64_cmp_gt_and(code, p1, p2, r2, r3) ia64_cmp_gt_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_gt_or(code, p1, p2, r2, r3) ia64_cmp_gt_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_gt_or_andcm(code, p1, p2, r2, r3) ia64_cmp_gt_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_le_and(code, p1, p2, r2, r3) ia64_cmp_le_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_le_or(code, p1, p2, r2, r3) ia64_cmp_le_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_le_or_andcm(code, p1, p2, r2, r3) ia64_cmp_le_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ge_and(code, p1, p2, r2, r3) ia64_cmp_ge_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ge_or(code, p1, p2, r2, r3) ia64_cmp_ge_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_ge_or_andcm(code, p1, p2, r2, r3) ia64_cmp_ge_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_lt_and(code, p1, p2, r2, r3) ia64_cmp_lt_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_lt_or(code, p1, p2, r2, r3) ia64_cmp_lt_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp_lt_or_andcm(code, p1, p2, r2, r3) ia64_cmp_lt_or_andcm_pred ((code), 0, p1, p2, r2, r3) - -#define ia64_cmp4_gt_and(code, p1, p2, r2, r3) ia64_cmp4_gt_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_gt_or(code, p1, p2, r2, r3) ia64_cmp4_gt_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_gt_or_andcm(code, p1, p2, r2, r3) ia64_cmp4_gt_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_le_and(code, p1, p2, r2, r3) ia64_cmp4_le_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_le_or(code, p1, p2, r2, r3) ia64_cmp4_le_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_le_or_andcm(code, p1, p2, r2, r3) ia64_cmp4_le_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ge_and(code, p1, p2, r2, r3) ia64_cmp4_ge_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ge_or(code, p1, p2, r2, r3) ia64_cmp4_ge_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_ge_or_andcm(code, p1, p2, r2, r3) ia64_cmp4_ge_or_andcm_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_lt_and(code, p1, p2, r2, r3) ia64_cmp4_lt_and_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_lt_or(code, p1, p2, r2, r3) ia64_cmp4_lt_or_pred ((code), 0, p1, p2, r2, r3) -#define ia64_cmp4_lt_or_andcm(code, p1, p2, r2, r3) ia64_cmp4_lt_or_andcm_pred ((code), 0, p1, p2, r2, r3) - - -#define ia64_cmp_lt_imm(code, p1, p2, imm8, r3) ia64_cmp_lt_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_ltu_imm(code, p1, p2, imm8, r3) ia64_cmp_ltu_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_eq_imm(code, p1, p2, imm8, r3) ia64_cmp_eq_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_lt_unc_imm(code, p1, p2, imm8, r3) ia64_cmp_lt_unc_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_ltu_unc_imm(code, p1, p2, imm8, r3) ia64_cmp_ltu_unc_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_eq_unc_imm(code, p1, p2, imm8, r3) ia64_cmp_eq_unc_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_eq_and_imm(code, p1, p2, imm8, r3) ia64_cmp_eq_and_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_eq_or_imm(code, p1, p2, imm8, r3) ia64_cmp_eq_or_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_eq_or_andcm_imm(code, p1, p2, imm8, r3) ia64_cmp_eq_or_andcm_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_ne_and_imm(code, p1, p2, imm8, r3) ia64_cmp_ne_and_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_ne_or_imm(code, p1, p2, imm8, r3) ia64_cmp_ne_or_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_ne_or_andcm_imm(code, p1, p2, imm8, r3) ia64_cmp_ne_or_andcm_imm_pred ((code), 0, p1, p2, imm8, r3) - -#define ia64_cmp4_lt_imm(code, p1, p2, imm8, r3) ia64_cmp4_lt_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_ltu_imm(code, p1, p2, imm8, r3) ia64_cmp4_ltu_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_eq_imm(code, p1, p2, imm8, r3) ia64_cmp4_eq_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_lt_unc_imm(code, p1, p2, imm8, r3) ia64_cmp4_lt_unc_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_ltu_unc_imm(code, p1, p2, imm8, r3) ia64_cmp4_ltu_unc_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_eq_unc_imm(code, p1, p2, imm8, r3) ia64_cmp4_eq_unc_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_eq_and_imm(code, p1, p2, imm8, r3) ia64_cmp4_eq_and_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_eq_or_imm(code, p1, p2, imm8, r3) ia64_cmp4_eq_or_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_eq_or_andcm_imm(code, p1, p2, imm8, r3) ia64_cmp4_eq_or_andcm_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_ne_and_imm(code, p1, p2, imm8, r3) ia64_cmp4_ne_and_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_ne_or_imm(code, p1, p2, imm8, r3) ia64_cmp4_ne_or_imm_pred ((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_ne_or_andcm_imm(code, p1, p2, imm8, r3) ia64_cmp4_ne_or_andcm_imm_pred ((code), 0, p1, p2, imm8, r3) - -/* Pseudo ops */ -#define ia64_cmp_ne_imm(code, p1, p2, imm8, r3) ia64_cmp_ne_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_le_imm(code, p1, p2, imm8, r3) ia64_cmp_le_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_gt_imm(code, p1, p2, imm8, r3) ia64_cmp_gt_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_ge_imm(code, p1, p2, imm8, r3) ia64_cmp_ge_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_leu_imm(code, p1, p2, imm8, r3) ia64_cmp_leu_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_gtu_imm(code, p1, p2, imm8, r3) ia64_cmp_gtu_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp_geu_imm(code, p1, p2, imm8, r3) ia64_cmp_geu_imm_pred((code), 0, p1, p2, imm8, r3) - -#define ia64_cmp4_ne_imm(code, p1, p2, imm8, r3) ia64_cmp4_ne_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_le_imm(code, p1, p2, imm8, r3) ia64_cmp4_le_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_gt_imm(code, p1, p2, imm8, r3) ia64_cmp4_gt_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_ge_imm(code, p1, p2, imm8, r3) ia64_cmp4_ge_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_leu_imm(code, p1, p2, imm8, r3) ia64_cmp4_leu_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_gtu_imm(code, p1, p2, imm8, r3) ia64_cmp4_gtu_imm_pred((code), 0, p1, p2, imm8, r3) -#define ia64_cmp4_geu_imm(code, p1, p2, imm8, r3) ia64_cmp4_geu_imm_pred((code), 0, p1, p2, imm8, r3) - -#define ia64_padd1(code, r1,r2,r3) ia64_padd1_pred ((code), 0, r1,r2,r3) -#define ia64_padd2(code, r1,r2,r3) ia64_padd2_pred ((code), 0, r1,r2,r3) -#define ia64_padd4(code, r1,r2,r3) ia64_padd4_pred ((code), 0, r1,r2,r3) -#define ia64_padd1_sss(code, r1,r2,r3) ia64_padd1_sss_pred ((code), 0, r1,r2,r3) -#define ia64_padd2_sss(code, r1,r2,r3) ia64_padd2_sss_pred ((code), 0, r1,r2,r3) -#define ia64_padd1_uuu(code, r1,r2,r3) ia64_padd1_uuu_pred ((code), 0, r1,r2,r3) -#define ia64_padd2_uuu(code, r1,r2,r3) ia64_padd2_uuu_pred ((code), 0, r1,r2,r3) -#define ia64_padd1_uus(code, r1,r2,r3) ia64_padd1_uus_pred ((code), 0, r1,r2,r3) -#define ia64_padd2_uus(code, r1,r2,r3) ia64_padd2_uus_pred ((code), 0, r1,r2,r3) - -#define ia64_psub1(code, r1,r2,r3) ia64_psub1_pred ((code), 0, r1,r2,r3) -#define ia64_psub2(code, r1,r2,r3) ia64_psub2_pred ((code), 0, r1,r2,r3) -#define ia64_psub4(code, r1,r2,r3) ia64_psub4_pred ((code), 0, r1,r2,r3) -#define ia64_psub1_sss(code, r1,r2,r3) ia64_psub1_sss_pred ((code), 0, r1,r2,r3) -#define ia64_psub2_sss(code, r1,r2,r3) ia64_psub2_sss_pred ((code), 0, r1,r2,r3) -#define ia64_psub1_uuu(code, r1,r2,r3) ia64_psub1_uuu_pred ((code), 0, r1,r2,r3) -#define ia64_psub2_uuu(code, r1,r2,r3) ia64_psub2_uuu_pred ((code), 0, r1,r2,r3) -#define ia64_psub1_uus(code, r1,r2,r3) ia64_psub1_uus_pred ((code), 0, r1,r2,r3) -#define ia64_psub2_uus(code, r1,r2,r3) ia64_psub2_uus_pred ((code), 0, r1,r2,r3) - -#define ia64_pavg1(code, r1,r2,r3) ia64_pavg1_pred ((code), 0, r1,r2,r3) -#define ia64_pavg2(code, r1,r2,r3) ia64_pavg2_pred ((code), 0, r1,r2,r3) -#define ia64_pavg1_raz(code, r1,r2,r3) ia64_pavg1_raz_pred ((code), 0, r1,r2,r3) -#define ia64_pavg2_raz(code, r1,r2,r3) ia64_pavg2_raz_pred ((code), 0, r1,r2,r3) -#define ia64_pavgsub1(code, r1,r2,r3) ia64_pavgsub1_pred ((code), 0, r1,r2,r3) -#define ia64_pavgsub2(code, r1,r2,r3) ia64_pavgsub2_pred ((code), 0, r1,r2,r3) -#define ia64_pcmp1_eq(code, r1,r2,r3) ia64_pcmp1_eq_pred ((code), 0, r1,r2,r3) -#define ia64_pcmp2_eq(code, r1,r2,r3) ia64_pcmp2_eq_pred ((code), 0, r1,r2,r3) -#define ia64_pcmp4_eq(code, r1,r2,r3) ia64_pcmp4_eq_pred ((code), 0, r1,r2,r3) -#define ia64_pcmp1_gt(code, r1,r2,r3) ia64_pcmp1_gt_pred ((code), 0, r1,r2,r3) -#define ia64_pcmp2_gt(code, r1,r2,r3) ia64_pcmp2_gt_pred ((code), 0, r1,r2,r3) -#define ia64_pcmp4_gt(code, r1,r2,r3) ia64_pcmp4_gt_pred ((code), 0, r1,r2,r3) - - -#define ia64_pshladd2(code, r1, r2, r3, count) ia64_pshladd2_pred ((code), 0, r1, r2, r3, count) -#define ia64_pshradd2(code, r1, r2, r3, count) ia64_pshradd2_pred ((code), 0, r1, r2, r3, count) - -#define ia64_pmpyshr2(code, r1, r2, r3, count) ia64_pmpyshr2_pred ((code), 0, r1, r2, r3, count) - -#define ia64_pmpyshr2_u(code, r1, r2, r3, count) ia64_pmpyshr2_u_pred ((code), 0, r1, r2, r3, count) - - -#define ia64_pmpy2_r(code, r1, r2, r3) ia64_pmpy2_r_pred ((code), 0, r1, r2, r3) -#define ia64_pmpy2_l(code, r1, r2, r3) ia64_pmpy2_l_pred ((code), 0, r1, r2, r3) -#define ia64_mix1_r(code, r1, r2, r3) ia64_mix1_r_pred ((code), 0, r1, r2, r3) -#define ia64_mix2_r(code, r1, r2, r3) ia64_mix2_r_pred ((code), 0, r1, r2, r3) -#define ia64_mix4_r(code, r1, r2, r3) ia64_mix4_r_pred ((code), 0, r1, r2, r3) -#define ia64_mix1_l(code, r1, r2, r3) ia64_mix1_l_pred ((code), 0, r1, r2, r3) -#define ia64_mix2_l(code, r1, r2, r3) ia64_mix2_l_pred ((code), 0, r1, r2, r3) -#define ia64_mix4_l(code, r1, r2, r3) ia64_mix4_l_pred ((code), 0, r1, r2, r3) -#define ia64_pack2_uss(code, r1, r2, r3) ia64_pack2_uss_pred ((code), 0, r1, r2, r3) -#define ia64_pack2_sss(code, r1, r2, r3) ia64_pack2_sss_pred ((code), 0, r1, r2, r3) -#define ia64_pack4_sss(code, r1, r2, r3) ia64_pack4_sss_pred ((code), 0, r1, r2, r3) -#define ia64_unpack1_h(code, r1, r2, r3) ia64_unpack1_h_pred ((code), 0, r1, r2, r3) -#define ia64_unpack2_h(code, r1, r2, r3) ia64_unpack2_h_pred ((code), 0, r1, r2, r3) -#define ia64_unpack4_h(code, r1, r2, r3) ia64_unpack4_h_pred ((code), 0, r1, r2, r3) -#define ia64_unpack1_l(code, r1, r2, r3) ia64_unpack1_l_pred ((code), 0, r1, r2, r3) -#define ia64_unpack2_l(code, r1, r2, r3) ia64_unpack2_l_pred ((code), 0, r1, r2, r3) -#define ia64_unpack4_l(code, r1, r2, r3) ia64_unpack4_l_pred ((code), 0, r1, r2, r3) -#define ia64_pmin1_u(code, r1, r2, r3) ia64_pmin1_u_pred ((code), 0, r1, r2, r3) -#define ia64_pmax1_u(code, r1, r2, r3) ia64_pmax1_u_pred ((code), 0, r1, r2, r3) -#define ia64_pmin2(code, r1, r2, r3) ia64_pmin2_pred ((code), 0, r1, r2, r3) -#define ia64_pmax2(code, r1, r2, r3) ia64_pmax2_pred ((code), 0, r1, r2, r3) -#define ia64_psad1(code, r1, r2, r3) ia64_psad1_pred ((code), 0, r1, r2, r3) - -#define ia64_mux1(code, r1, r2, mbtype) ia64_mux1_pred ((code), 0, r1, r2, mbtype) - - -#define ia64_mux2(code, r1, r2, mhtype) ia64_mux2_pred ((code), 0, r1, r2, mhtype) - - -#define ia64_pshr2(code, r1, r3, r2) ia64_pshr2_pred ((code), 0, r1, r3, r2) -#define ia64_pshr4(code, r1, r3, r2) ia64_pshr4_pred ((code), 0, r1, r3, r2) -#define ia64_shr(code, r1, r3, r2) ia64_shr_pred ((code), 0, r1, r3, r2) -#define ia64_pshr2_u(code, r1, r3, r2) ia64_pshr2_u_pred ((code), 0, r1, r3, r2) -#define ia64_pshr4_u(code, r1, r3, r2) ia64_pshr4_u_pred ((code), 0, r1, r3, r2) -#define ia64_shr_u(code, r1, r3, r2) ia64_shr_u_pred ((code), 0, r1, r3, r2) - - -#define ia64_pshr2_imm(code, r1, r3, count) ia64_pshr2_imm_pred ((code), 0, r1, r3, count) -#define ia64_pshr4_imm(code, r1, r3, count) ia64_pshr4_imm_pred ((code), 0, r1, r3, count) -#define ia64_pshr2_u_imm(code, r1, r3, count) ia64_pshr2_u_imm_pred ((code), 0, r1, r3, count) -#define ia64_pshr4_u_imm(code, r1, r3, count) ia64_pshr4_u_imm_pred ((code), 0, r1, r3, count) - - -#define ia64_pshl2(code, r1, r3, r2) ia64_pshl2_pred ((code), 0, r1, r3, r2) -#define ia64_pshl4(code, r1, r3, r2) ia64_pshl4_pred ((code), 0, r1, r3, r2) -#define ia64_shl(code, r1, r3, r2) ia64_shl_pred ((code), 0, r1, r3, r2) - -#define ia64_shl_imm(code, r1, r3, count) ia64_dep_z ((code), (r1), (r3), count, 64 - count) -#define ia64_shr_imm(code, r1, r3, count) ia64_extr ((code), (r1), (r3), count, 64 - count) -#define ia64_shr_u_imm(code, r1, r3, count) ia64_extr_u ((code), (r1), (r3), count, 64 - count) - -#define ia64_pshl2_imm(code, r1, r2, count) ia64_pshl2_imm_pred ((code), 0, r1, r2, count) -#define ia64_pshl4_imm(code, r1, r2, count) ia64_pshl4_imm_pred ((code), 0, r1, r2, count) - - -#define ia64_popcnt(code, r1, r3) ia64_popcnt_pred ((code), 0, r1, r3) - - -#define ia64_shrp(code, r1, r2, r3, count) ia64_shrp_pred ((code), 0, r1, r2, r3, count) - - -#define ia64_extr_u(code, r1, r3, pos, len) ia64_extr_u_pred ((code), 0, r1, r3, pos, len) -#define ia64_extr(code, r1, r3, pos, len) ia64_extr_pred ((code), 0, r1, r3, pos, len) - - -#define ia64_dep_z(code, r1, r2, pos, len) ia64_dep_z_pred ((code), 0, r1, r2, pos, len) - - -#define ia64_dep_z_imm(code, r1, imm, pos, len) ia64_dep_z_imm_pred ((code), 0, r1, imm, pos, len) - - -#define ia64_dep_imm(code, r1, imm, r3, pos, len) ia64_dep_imm_pred ((code), 0, r1, imm, r3, pos, len) - - -#define ia64_dep(code, r1, r2, r3, pos, len) ia64_dep_pred ((code), 0, r1, r2, r3, pos, len) - - -#define ia64_tbit_z(code, p1, p2, r3, pos) ia64_tbit_z_pred ((code), 0, p1, p2, r3, pos) -#define ia64_tbit_z_unc(code, p1, p2, r3, pos) ia64_tbit_z_unc_pred ((code), 0, p1, p2, r3, pos) -#define ia64_tbit_z_and(code, p1, p2, r3, pos) ia64_tbit_z_and_pred ((code), 0, p1, p2, r3, pos) -#define ia64_tbit_nz_and(code, p1, p2, r3, pos) ia64_tbit_nz_and_pred ((code), 0, p1, p2, r3, pos) -#define ia64_tbit_z_or(code, p1, p2, r3, pos) ia64_tbit_z_or_pred ((code), 0, p1, p2, r3, pos) -#define ia64_tbit_nz_or(code, p1, p2, r3, pos) ia64_tbit_nz_or_pred ((code), 0, p1, p2, r3, pos) -#define ia64_tbit_z_or_andcm(code, p1, p2, r3, pos) ia64_tbit_z_or_andcm_pred ((code), 0, p1, p2, r3, pos) -#define ia64_tbit_nz_or_andcm(code, p1, p2, r3, pos) ia64_tbit_nz_or_andcm_pred ((code), 0, p1, p2, r3, pos) - - -#define ia64_tnat_z(code, p1, p2, r3) ia64_tnat_z_pred ((code), 0, p1, p2, r3) -#define ia64_tnat_z_unc(code, p1, p2, r3) ia64_tnat_z_unc_pred ((code), 0, p1, p2, r3) -#define ia64_tnat_z_and(code, p1, p2, r3) ia64_tnat_z_and_pred ((code), 0, p1, p2, r3) -#define ia64_tnat_nz_and(code, p1, p2, r3) ia64_tnat_nz_and_pred ((code), 0, p1, p2, r3) -#define ia64_tnat_z_or(code, p1, p2, r3) ia64_tnat_z_or_pred ((code), 0, p1, p2, r3) -#define ia64_tnat_nz_or(code, p1, p2, r3) ia64_tnat_nz_or_pred ((code), 0, p1, p2, r3) -#define ia64_tnat_z_or_andcm(code, p1, p2, r3) ia64_tnat_z_or_andcm_pred ((code), 0, p1, p2, r3) -#define ia64_tnat_nz_or_andcm(code, p1, p2, r3) ia64_tnat_nz_or_andcm_pred ((code), 0, p1, p2, r3) - - -#define ia64_nop_i(code, imm) ia64_nop_i_pred ((code), 0, imm) -#define ia64_hint_i(code, imm) ia64_hint_i_pred ((code), 0, imm) - - -#define ia64_break_i(code, imm) ia64_break_i_pred ((code), 0, imm) - - -#define ia64_chk_s_i(code, r2,disp) ia64_chk_s_i_pred ((code), 0, r2,disp) - -#define ia64_mov_to_br_hint(code, b1, r2, disp, wh, ih) ia64_mov_to_br_hint_pred ((code), 0, b1, r2, disp, wh, ih) -#define ia64_mov_ret_to_br_hint(code, b1, r2, disp, wh, ih) ia64_mov_ret_to_br_hint_pred ((code), 0, b1, r2, disp, wh, ih) - -/* Pseudo ops */ - -#define ia64_mov_to_br(code, b1, r2) ia64_mov_to_br_pred ((code), 0, (b1), (r2)) -#define ia64_mov_ret_to_br(code, b1, r2) ia64_mov_ret_to_br_pred ((code), 0, (b1), (r2)) - -/* End of pseudo ops */ - -#define ia64_mov_from_br(code, r1, b2) ia64_mov_from_br_pred ((code), 0, r1, b2) - - -#define ia64_mov_to_pred(code, r2, mask) ia64_mov_to_pred_pred ((code), 0, r2, mask) - - -#define ia64_mov_to_pred_rot_imm(code, imm) ia64_mov_to_pred_rot_imm_pred ((code), 0, imm) - - -#define ia64_mov_from_ip(code, r1) ia64_mov_from_ip_pred ((code), 0, r1) -#define ia64_mov_from_pred(code, r1) ia64_mov_from_pred_pred ((code), 0, r1) - - -#define ia64_mov_to_ar_i(code, ar3, r2) ia64_mov_to_ar_i_pred ((code), 0, ar3, r2) - - -#define ia64_mov_to_ar_imm_i(code, ar3, imm) ia64_mov_to_ar_imm_i_pred ((code), 0, ar3, imm) - - -#define ia64_mov_from_ar_i(code, r1, ar3) ia64_mov_from_ar_i_pred ((code), 0, r1, ar3) - - -#define ia64_zxt1(code, r1, r3) ia64_zxt1_pred ((code), 0, r1, r3) -#define ia64_zxt2(code, r1, r3) ia64_zxt2_pred ((code), 0, r1, r3) -#define ia64_zxt4(code, r1, r3) ia64_zxt4_pred ((code), 0, r1, r3) -#define ia64_sxt1(code, r1, r3) ia64_sxt1_pred ((code), 0, r1, r3) -#define ia64_sxt2(code, r1, r3) ia64_sxt2_pred ((code), 0, r1, r3) -#define ia64_sxt4(code, r1, r3) ia64_sxt4_pred ((code), 0, r1, r3) -#define ia64_czx1_l(code, r1, r3) ia64_czx1_l_pred ((code), 0, r1, r3) -#define ia64_czx2_l(code, r1, r3) ia64_czx2_l_pred ((code), 0, r1, r3) -#define ia64_czx1_r(code, r1, r3) ia64_czx1_r_pred ((code), 0, r1, r3) -#define ia64_czx2_r(code, r1, r3) ia64_czx2_r_pred ((code), 0, r1, r3) - -#define ia64_ld1_hint(code, r1, r3, hint) ia64_ld1_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_hint(code, r1, r3, hint) ia64_ld2_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_hint(code, r1, r3, hint) ia64_ld4_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_hint(code, r1, r3, hint) ia64_ld8_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_s_hint(code, r1, r3, hint) ia64_ld1_s_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_s_hint(code, r1, r3, hint) ia64_ld2_s_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_s_hint(code, r1, r3, hint) ia64_ld4_s_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_s_hint(code, r1, r3, hint) ia64_ld8_s_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_a_hint(code, r1, r3, hint) ia64_ld1_a_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_a_hint(code, r1, r3, hint) ia64_ld2_a_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_a_hint(code, r1, r3, hint) ia64_ld4_a_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_a_hint(code, r1, r3, hint) ia64_ld8_a_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_sa_hint(code, r1, r3, hint) ia64_ld1_sa_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_sa_hint(code, r1, r3, hint) ia64_ld2_sa_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_sa_hint(code, r1, r3, hint) ia64_ld4_sa_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_sa_hint(code, r1, r3, hint) ia64_ld8_sa_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_bias_hint(code, r1, r3, hint) ia64_ld1_bias_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_bias_hint(code, r1, r3, hint) ia64_ld2_bias_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_bias_hint(code, r1, r3, hint) ia64_ld4_bias_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_bias_hint(code, r1, r3, hint) ia64_ld8_bias_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_acq_hint(code, r1, r3, hint) ia64_ld1_acq_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_acq_hint(code, r1, r3, hint) ia64_ld2_acq_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_acq_hint(code, r1, r3, hint) ia64_ld4_acq_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_acq_hint(code, r1, r3, hint) ia64_ld8_acq_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld8_fill_hint(code, r1, r3, hint) ia64_ld8_fill_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_c_clr_hint(code, r1, r3, hint) ia64_ld1_c_clr_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_c_clr_hint(code, r1, r3, hint) ia64_ld2_c_clr_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_c_clr_hint(code, r1, r3, hint) ia64_ld4_c_clr_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_c_clr_hint(code, r1, r3, hint) ia64_ld8_c_clr_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_c_nc_hint(code, r1, r3, hint) ia64_ld1_c_nc_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_c_nc_hint(code, r1, r3, hint) ia64_ld2_c_nc_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_c_nc_hint(code, r1, r3, hint) ia64_ld4_c_nc_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_c_nc_hint(code, r1, r3, hint) ia64_ld8_c_nc_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld1_c_clr_acq_hint(code, r1, r3, hint) ia64_ld1_c_clr_acq_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld2_c_clr_acq_hint(code, r1, r3, hint) ia64_ld2_c_clr_acq_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld4_c_clr_acq_hint(code, r1, r3, hint) ia64_ld4_c_clr_acq_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld8_c_clr_acq_hint(code, r1, r3, hint) ia64_ld8_c_clr_acq_hint_pred ((code), 0, r1, r3, hint) - -#define ia64_ld16_hint(code, r1, r3, hint) ia64_ld16_hint_pred ((code), 0, r1, r3, hint) -#define ia64_ld16_acq_hint(code, r1, r3, hint) ia64_ld16_acq_hint_pred ((code), 0, r1, r3, hint) - - -#define ia64_ld1_inc_hint(code, r1, r2, r3, hint) ia64_ld1_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_inc_hint(code, r1, r2, r3, hint) ia64_ld2_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_inc_hint(code, r1, r2, r3, hint) ia64_ld4_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_inc_hint(code, r1, r2, r3, hint) ia64_ld8_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_s_inc_hint(code, r1, r2, r3, hint) ia64_ld1_s_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_s_inc_hint(code, r1, r2, r3, hint) ia64_ld2_s_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_s_inc_hint(code, r1, r2, r3, hint) ia64_ld4_s_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_s_inc_hint(code, r1, r2, r3, hint) ia64_ld8_s_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_a_inc_hint(code, r1, r2, r3, hint) ia64_ld1_a_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_a_inc_hint(code, r1, r2, r3, hint) ia64_ld2_a_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_a_inc_hint(code, r1, r2, r3, hint) ia64_ld4_a_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_a_inc_hint(code, r1, r2, r3, hint) ia64_ld8_a_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_sa_inc_hint(code, r1, r2, r3, hint) ia64_ld1_sa_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_sa_inc_hint(code, r1, r2, r3, hint) ia64_ld2_sa_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_sa_inc_hint(code, r1, r2, r3, hint) ia64_ld4_sa_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_sa_inc_hint(code, r1, r2, r3, hint) ia64_ld8_sa_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_bias_inc_hint(code, r1, r2, r3, hint) ia64_ld1_bias_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_bias_inc_hint(code, r1, r2, r3, hint) ia64_ld2_bias_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_bias_inc_hint(code, r1, r2, r3, hint) ia64_ld4_bias_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_bias_inc_hint(code, r1, r2, r3, hint) ia64_ld8_bias_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld1_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld2_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld4_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld8_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld8_fill_inc_hint(code, r1, r2, r3, hint) ia64_ld8_fill_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_c_clr_inc_hint(code, r1, r2, r3, hint) ia64_ld1_c_clr_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_c_clr_inc_hint(code, r1, r2, r3, hint) ia64_ld2_c_clr_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_c_clr_inc_hint(code, r1, r2, r3, hint) ia64_ld4_c_clr_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_c_clr_inc_hint(code, r1, r2, r3, hint) ia64_ld8_c_clr_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_c_nc_inc_hint(code, r1, r2, r3, hint) ia64_ld1_c_nc_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_c_nc_inc_hint(code, r1, r2, r3, hint) ia64_ld2_c_nc_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_c_nc_inc_hint(code, r1, r2, r3, hint) ia64_ld4_c_nc_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_c_nc_inc_hint(code, r1, r2, r3, hint) ia64_ld8_c_nc_inc_hint_pred ((code), 0, r1, r2, r3, hint) - -#define ia64_ld1_c_clr_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld1_c_clr_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld2_c_clr_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld2_c_clr_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld4_c_clr_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld4_c_clr_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) -#define ia64_ld8_c_clr_acq_inc_hint(code, r1, r2, r3, hint) ia64_ld8_c_clr_acq_inc_hint_pred ((code), 0, r1, r2, r3, hint) - - -#define ia64_ld1_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_s_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_s_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_s_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_s_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_s_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_s_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_s_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_s_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_a_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_a_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_a_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_a_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_a_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_a_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_a_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_a_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_sa_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_sa_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_sa_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_sa_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_sa_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_sa_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_sa_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_sa_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_bias_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_bias_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_bias_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_bias_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_bias_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_bias_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_bias_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_bias_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld8_fill_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_fill_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_c_clr_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_c_clr_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_c_clr_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_c_clr_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_c_clr_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_c_clr_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_c_clr_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_c_clr_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_c_nc_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_c_nc_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_c_nc_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_c_nc_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_c_nc_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_c_nc_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_c_nc_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_c_nc_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -#define ia64_ld1_c_clr_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld1_c_clr_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld2_c_clr_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld2_c_clr_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld4_c_clr_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld4_c_clr_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) -#define ia64_ld8_c_clr_acq_inc_imm_hint(code, r1, r3, imm, hint) ia64_ld8_c_clr_acq_inc_imm_hint_pred ((code), 0, r1, r3, imm, hint) - -/* Pseudo ops */ - -#define ia64_ld1(code, r1, r3) ia64_ld1_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2(code, r1, r3) ia64_ld2_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4(code, r1, r3) ia64_ld4_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8(code, r1, r3) ia64_ld8_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_s(code, r1, r3) ia64_ld1_s_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_s(code, r1, r3) ia64_ld2_s_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_s(code, r1, r3) ia64_ld4_s_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_s(code, r1, r3) ia64_ld8_s_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_a(code, r1, r3) ia64_ld1_a_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_a(code, r1, r3) ia64_ld2_a_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_a(code, r1, r3) ia64_ld4_a_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_a(code, r1, r3) ia64_ld8_a_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_sa(code, r1, r3) ia64_ld1_sa_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_sa(code, r1, r3) ia64_ld2_sa_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_sa(code, r1, r3) ia64_ld4_sa_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_sa(code, r1, r3) ia64_ld8_sa_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_bias(code, r1, r3) ia64_ld1_bias_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_bias(code, r1, r3) ia64_ld2_bias_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_bias(code, r1, r3) ia64_ld4_bias_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_bias(code, r1, r3) ia64_ld8_bias_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_acq(code, r1, r3) ia64_ld1_acq_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_acq(code, r1, r3) ia64_ld2_acq_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_acq(code, r1, r3) ia64_ld4_acq_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_acq(code, r1, r3) ia64_ld8_acq_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld8_fill(code, r1, r3) ia64_ld8_fill_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_c_clr(code, r1, r3) ia64_ld1_c_clr_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_c_clr(code, r1, r3) ia64_ld2_c_clr_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_c_clr(code, r1, r3) ia64_ld4_c_clr_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_c_clr(code, r1, r3) ia64_ld8_c_clr_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_c_nc(code, r1, r3) ia64_ld1_c_nc_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_c_nc(code, r1, r3) ia64_ld2_c_nc_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_c_nc(code, r1, r3) ia64_ld4_c_nc_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_c_nc(code, r1, r3) ia64_ld8_c_nc_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_c_clr_acq(code, r1, r3) ia64_ld1_c_clr_acq_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld2_c_clr_acq(code, r1, r3) ia64_ld2_c_clr_acq_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld4_c_clr_acq(code, r1, r3) ia64_ld4_c_clr_acq_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld8_c_clr_acq(code, r1, r3) ia64_ld8_c_clr_acq_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld16(code, r1, r3) ia64_ld16_hint_pred (code, 0, r1, r3, 0) -#define ia64_ld16_acq(code, r1, r3) ia64_ld16_acq_hint_pred (code, 0, r1, r3, 0) - -#define ia64_ld1_inc(code, r1, r2, r3) ia64_ld1_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_inc(code, r1, r2, r3) ia64_ld2_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_inc(code, r1, r2, r3) ia64_ld4_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_inc(code, r1, r2, r3) ia64_ld8_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_s_inc(code, r1, r2, r3) ia64_ld1_s_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_s_inc(code, r1, r2, r3) ia64_ld2_s_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_s_inc(code, r1, r2, r3) ia64_ld4_s_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_s_inc(code, r1, r2, r3) ia64_ld8_s_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_a_inc(code, r1, r2, r3) ia64_ld1_a_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_a_inc(code, r1, r2, r3) ia64_ld2_a_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_a_inc(code, r1, r2, r3) ia64_ld4_a_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_a_inc(code, r1, r2, r3) ia64_ld8_a_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_sa_inc(code, r1, r2, r3) ia64_ld1_sa_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_sa_inc(code, r1, r2, r3) ia64_ld2_sa_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_sa_inc(code, r1, r2, r3) ia64_ld4_sa_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_sa_inc(code, r1, r2, r3) ia64_ld8_sa_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_bias_inc(code, r1, r2, r3) ia64_ld1_bias_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_bias_inc(code, r1, r2, r3) ia64_ld2_bias_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_bias_inc(code, r1, r2, r3) ia64_ld4_bias_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_bias_inc(code, r1, r2, r3) ia64_ld8_bias_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_acq_inc(code, r1, r2, r3) ia64_ld1_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_acq_inc(code, r1, r2, r3) ia64_ld2_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_acq_inc(code, r1, r2, r3) ia64_ld4_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_acq_inc(code, r1, r2, r3) ia64_ld8_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld8_fill_inc(code, r1, r2, r3) ia64_ld8_fill_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_c_clr_inc(code, r1, r2, r3) ia64_ld1_c_clr_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_c_clr_inc(code, r1, r2, r3) ia64_ld2_c_clr_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_c_clr_inc(code, r1, r2, r3) ia64_ld4_c_clr_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_c_clr_inc(code, r1, r2, r3) ia64_ld8_c_clr_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_c_nc_inc(code, r1, r2, r3) ia64_ld1_c_nc_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_c_nc_inc(code, r1, r2, r3) ia64_ld2_c_nc_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_c_nc_inc(code, r1, r2, r3) ia64_ld4_c_nc_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_c_nc_inc(code, r1, r2, r3) ia64_ld8_c_nc_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_c_clr_acq_inc(code, r1, r2, r3) ia64_ld1_c_clr_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld2_c_clr_acq_inc(code, r1, r2, r3) ia64_ld2_c_clr_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld4_c_clr_acq_inc(code, r1, r2, r3) ia64_ld4_c_clr_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) -#define ia64_ld8_c_clr_acq_inc(code, r1, r2, r3) ia64_ld8_c_clr_acq_inc_hint_pred (code, 0, r1, r2, r3, 0) - -#define ia64_ld1_inc_imm(code, r1, r3, imm) ia64_ld1_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_inc_imm(code, r1, r3, imm) ia64_ld2_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_inc_imm(code, r1, r3, imm) ia64_ld4_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_inc_imm(code, r1, r3, imm) ia64_ld8_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_s_inc_imm(code, r1, r3, imm) ia64_ld1_s_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_s_inc_imm(code, r1, r3, imm) ia64_ld2_s_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_s_inc_imm(code, r1, r3, imm) ia64_ld4_s_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_s_inc_imm(code, r1, r3, imm) ia64_ld8_s_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_a_inc_imm(code, r1, r3, imm) ia64_ld1_a_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_a_inc_imm(code, r1, r3, imm) ia64_ld2_a_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_a_inc_imm(code, r1, r3, imm) ia64_ld4_a_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_a_inc_imm(code, r1, r3, imm) ia64_ld8_a_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_sa_inc_imm(code, r1, r3, imm) ia64_ld1_sa_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_sa_inc_imm(code, r1, r3, imm) ia64_ld2_sa_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_sa_inc_imm(code, r1, r3, imm) ia64_ld4_sa_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_sa_inc_imm(code, r1, r3, imm) ia64_ld8_sa_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_bias_inc_imm(code, r1, r3, imm) ia64_ld1_bias_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_bias_inc_imm(code, r1, r3, imm) ia64_ld2_bias_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_bias_inc_imm(code, r1, r3, imm) ia64_ld4_bias_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_bias_inc_imm(code, r1, r3, imm) ia64_ld8_bias_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_acq_inc_imm(code, r1, r3, imm) ia64_ld1_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_acq_inc_imm(code, r1, r3, imm) ia64_ld2_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_acq_inc_imm(code, r1, r3, imm) ia64_ld4_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_acq_inc_imm(code, r1, r3, imm) ia64_ld8_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld8_fill_inc_imm(code, r1, r3, imm) ia64_ld8_fill_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_c_clr_inc_imm(code, r1, r3, imm) ia64_ld1_c_clr_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_c_clr_inc_imm(code, r1, r3, imm) ia64_ld2_c_clr_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_c_clr_inc_imm(code, r1, r3, imm) ia64_ld4_c_clr_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_c_clr_inc_imm(code, r1, r3, imm) ia64_ld8_c_clr_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_c_nc_inc_imm(code, r1, r3, imm) ia64_ld1_c_nc_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_c_nc_inc_imm(code, r1, r3, imm) ia64_ld2_c_nc_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_c_nc_inc_imm(code, r1, r3, imm) ia64_ld4_c_nc_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_c_nc_inc_imm(code, r1, r3, imm) ia64_ld8_c_nc_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -#define ia64_ld1_c_clr_acq_inc_imm(code, r1, r3, imm) ia64_ld1_c_clr_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld2_c_clr_acq_inc_imm(code, r1, r3, imm) ia64_ld2_c_clr_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld4_c_clr_acq_inc_imm(code, r1, r3, imm) ia64_ld4_c_clr_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) -#define ia64_ld8_c_clr_acq_inc_imm(code, r1, r3, imm) ia64_ld8_c_clr_acq_inc_imm_hint_pred (code, 0, r1, r3, imm, 0) - -/* End of pseudo ops */ - -#define ia64_st1_hint(code, r3, r2, hint) ia64_st1_hint_pred ((code), 0, r3, r2, hint) -#define ia64_st2_hint(code, r3, r2, hint) ia64_st2_hint_pred ((code), 0, r3, r2, hint) -#define ia64_st4_hint(code, r3, r2, hint) ia64_st4_hint_pred ((code), 0, r3, r2, hint) -#define ia64_st8_hint(code, r3, r2, hint) ia64_st8_hint_pred ((code), 0, r3, r2, hint) - -/* Pseudo ops */ -#define ia64_st8(code, r3, r2) ia64_st8_hint ((code), (r3), (r2), 0) - -#define ia64_st1_rel_hint(code, r3, r2, hint) ia64_st1_rel_hint_pred ((code), 0, r3, r2, hint) -#define ia64_st2_rel_hint(code, r3, r2, hint) ia64_st2_rel_hint_pred ((code), 0, r3, r2, hint) -#define ia64_st4_rel_hint(code, r3, r2, hint) ia64_st4_rel_hint_pred ((code), 0, r3, r2, hint) -#define ia64_st8_rel_hint(code, r3, r2, hint) ia64_st8_rel_hint_pred ((code), 0, r3, r2, hint) - -#define ia64_st8_spill_hint(code, r3, r2, hint) ia64_st8_spill_hint_pred ((code), 0, r3, r2, hint) - -#define ia64_st16_hint(code, r3, r2, hint) ia64_st16_hint_pred ((code), 0, r3, r2, hint) -#define ia64_st16_rel_hint(code, r3, r2, hint) ia64_st16_rel_hint_pred ((code), 0, r3, r2, hint) - -#define ia64_st1_inc_imm_hint(code, r3, r2, imm, hint) ia64_st1_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) -#define ia64_st2_inc_imm_hint(code, r3, r2, imm, hint) ia64_st2_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) -#define ia64_st4_inc_imm_hint(code, r3, r2, imm, hint) ia64_st4_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) -#define ia64_st8_inc_imm_hint(code, r3, r2, imm, hint) ia64_st8_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) - -#define ia64_st1_rel_inc_imm_hint(code, r3, r2, imm, hint) ia64_st1_rel_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) -#define ia64_st2_rel_inc_imm_hint(code, r3, r2, imm, hint) ia64_st2_rel_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) -#define ia64_st4_rel_inc_imm_hint(code, r3, r2, imm, hint) ia64_st4_rel_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) -#define ia64_st8_rel_inc_imm_hint(code, r3, r2, imm, hint) ia64_st8_rel_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) - -#define ia64_st8_spill_inc_imm_hint(code, r3, r2, imm, hint) ia64_st8_spill_inc_imm_hint_pred ((code), 0, r3, r2, imm, hint) - - -#define ia64_ldfs_hint(code, f1, r3, hint) ia64_ldfs_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfd_hint(code, f1, r3, hint) ia64_ldfd_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldf8_hint(code, f1, r3, hint) ia64_ldf8_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfe_hint(code, f1, r3, hint) ia64_ldfe_hint_pred ((code), 0, f1, r3, hint) - -#define ia64_ldfs_s_hint(code, f1, r3, hint) ia64_ldfs_s_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfd_s_hint(code, f1, r3, hint) ia64_ldfd_s_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldf8_s_hint(code, f1, r3, hint) ia64_ldf8_s_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfe_s_hint(code, f1, r3, hint) ia64_ldfe_s_hint_pred ((code), 0, f1, r3, hint) - -#define ia64_ldfs_a_hint(code, f1, r3, hint) ia64_ldfs_a_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfd_a_hint(code, f1, r3, hint) ia64_ldfd_a_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldf8_a_hint(code, f1, r3, hint) ia64_ldf8_a_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfe_a_hint(code, f1, r3, hint) ia64_ldfe_a_hint_pred ((code), 0, f1, r3, hint) - -#define ia64_ldfs_sa_hint(code, f1, r3, hint) ia64_ldfs_sa_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfd_sa_hint(code, f1, r3, hint) ia64_ldfd_sa_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldf8_sa_hint(code, f1, r3, hint) ia64_ldf8_sa_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfe_sa_hint(code, f1, r3, hint) ia64_ldfe_sa_hint_pred ((code), 0, f1, r3, hint) - -#define ia64_ldfs_c_clr_hint(code, f1, r3, hint) ia64_ldfs_c_clr_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfd_c_clr_hint(code, f1, r3, hint) ia64_ldfd_c_clr_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldf8_c_clr_hint(code, f1, r3, hint) ia64_ldf8_c_clr_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfe_c_clr_hint(code, f1, r3, hint) ia64_ldfe_c_clr_hint_pred ((code), 0, f1, r3, hint) - -#define ia64_ldfs_c_nc_hint(code, f1, r3, hint) ia64_ldfs_c_nc_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfd_c_nc_hint(code, f1, r3, hint) ia64_ldfd_c_nc_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldf8_c_nc_hint(code, f1, r3, hint) ia64_ldf8_c_nc_hint_pred ((code), 0, f1, r3, hint) -#define ia64_ldfe_c_nc_hint(code, f1, r3, hint) ia64_ldfe_c_nc_hint_pred ((code), 0, f1, r3, hint) - -#define ia64_ldf_fill_hint(code, f1, r3, hint) ia64_ldf_fill_hint_pred ((code), 0, f1, r3, hint) - - -#define ia64_ldfs_inc_hint(code, f1, r3, r2, hint) ia64_ldfs_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfd_inc_hint(code, f1, r3, r2, hint) ia64_ldfd_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldf8_inc_hint(code, f1, r3, r2, hint) ia64_ldf8_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfe_inc_hint(code, f1, r3, r2, hint) ia64_ldfe_inc_hint_pred ((code), 0, f1, r3, r2, hint) - -#define ia64_ldfs_s_inc_hint(code, f1, r3, r2, hint) ia64_ldfs_s_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfd_s_inc_hint(code, f1, r3, r2, hint) ia64_ldfd_s_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldf8_s_inc_hint(code, f1, r3, r2, hint) ia64_ldf8_s_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfe_s_inc_hint(code, f1, r3, r2, hint) ia64_ldfe_s_inc_hint_pred ((code), 0, f1, r3, r2, hint) - -#define ia64_ldfs_a_inc_hint(code, f1, r3, r2, hint) ia64_ldfs_a_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfd_a_inc_hint(code, f1, r3, r2, hint) ia64_ldfd_a_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldf8_a_inc_hint(code, f1, r3, r2, hint) ia64_ldf8_a_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfe_a_inc_hint(code, f1, r3, r2, hint) ia64_ldfe_a_inc_hint_pred ((code), 0, f1, r3, r2, hint) - -#define ia64_ldfs_sa_inc_hint(code, f1, r3, r2, hint) ia64_ldfs_sa_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfd_sa_inc_hint(code, f1, r3, r2, hint) ia64_ldfd_sa_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldf8_sa_inc_hint(code, f1, r3, r2, hint) ia64_ldf8_sa_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfe_sa_inc_hint(code, f1, r3, r2, hint) ia64_ldfe_sa_inc_hint_pred ((code), 0, f1, r3, r2, hint) - -#define ia64_ldfs_c_clr_inc_hint(code, f1, r3, r2, hint) ia64_ldfs_c_clr_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfd_c_clr_inc_hint(code, f1, r3, r2, hint) ia64_ldfd_c_clr_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldf8_c_clr_inc_hint(code, f1, r3, r2, hint) ia64_ldf8_c_clr_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfe_c_clr_inc_hint(code, f1, r3, r2, hint) ia64_ldfe_c_clr_inc_hint_pred ((code), 0, f1, r3, r2, hint) - -#define ia64_ldfs_c_nc_inc_hint(code, f1, r3, r2, hint) ia64_ldfs_c_nc_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfd_c_nc_inc_hint(code, f1, r3, r2, hint) ia64_ldfd_c_nc_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldf8_c_nc_inc_hint(code, f1, r3, r2, hint) ia64_ldf8_c_nc_inc_hint_pred ((code), 0, f1, r3, r2, hint) -#define ia64_ldfe_c_nc_inc_hint(code, f1, r3, r2, hint) ia64_ldfe_c_nc_inc_hint_pred ((code), 0, f1, r3, r2, hint) - -#define ia64_ldf_fill_inc_hint(code, f1, r3, r2, hint) ia64_ldf_fill_inc_hint_pred ((code), 0, f1, r3, r2, hint) - - -#define ia64_ldfs_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfs_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfd_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfd_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldf8_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldf8_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfe_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfe_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) - -#define ia64_ldfs_s_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfs_s_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfd_s_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfd_s_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldf8_s_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldf8_s_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfe_s_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfe_s_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) - -#define ia64_ldfs_a_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfs_a_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfd_a_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfd_a_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldf8_a_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldf8_a_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfe_a_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfe_a_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) - -#define ia64_ldfs_sa_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfs_sa_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfd_sa_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfd_sa_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldf8_sa_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldf8_sa_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfe_sa_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfe_sa_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) - -#define ia64_ldfs_c_clr_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfs_c_clr_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfd_c_clr_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfd_c_clr_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldf8_c_clr_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldf8_c_clr_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfe_c_clr_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfe_c_clr_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) - -#define ia64_ldfs_c_nc_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfs_c_nc_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfd_c_nc_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfd_c_nc_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldf8_c_nc_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldf8_c_nc_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) -#define ia64_ldfe_c_nc_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldfe_c_nc_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) - -#define ia64_ldf_fill_inc_imm_hint(code, f1, r3, imm, hint) ia64_ldf_fill_inc_imm_hint_pred ((code), 0, f1, r3, imm, hint) - -/* Pseudo ops */ - -#define ia64_ldfs(code, f1, r3) ia64_ldfs_pred (code, 0, f1, r3) -#define ia64_ldfd(code, f1, r3) ia64_ldfd_pred (code, 0, f1, r3) -#define ia64_ldf8(code, f1, r3) ia64_ldf8_pred (code, 0, f1, r3) -#define ia64_ldfe(code, f1, r3) ia64_ldfe_pred (code, 0, f1, r3) - -#define ia64_ldfs_s(code, f1, r3) ia64_ldfs_s_pred (code, 0, f1, r3) -#define ia64_ldfd_s(code, f1, r3) ia64_ldfd_s_pred (code, 0, f1, r3) -#define ia64_ldf8_s(code, f1, r3) ia64_ldf8_s_pred (code, 0, f1, r3) -#define ia64_ldfe_s(code, f1, r3) ia64_ldfe_s_pred (code, 0, f1, r3) - -#define ia64_ldfs_a(code, f1, r3) ia64_ldfs_a_pred (code, 0, f1, r3) -#define ia64_ldfd_a(code, f1, r3) ia64_ldfd_a_pred (code, 0, f1, r3) -#define ia64_ldf8_a(code, f1, r3) ia64_ldf8_a_pred (code, 0, f1, r3) -#define ia64_ldfe_a(code, f1, r3) ia64_ldfe_a_pred (code, 0, f1, r3) - -#define ia64_ldfs_sa(code, f1, r3) ia64_ldfs_sa_pred (code, 0, f1, r3) -#define ia64_ldfd_sa(code, f1, r3) ia64_ldfd_sa_pred (code, 0, f1, r3) -#define ia64_ldf8_sa(code, f1, r3) ia64_ldf8_sa_pred (code, 0, f1, r3) -#define ia64_ldfe_sa(code, f1, r3) ia64_ldfe_sa_pred (code, 0, f1, r3) - -#define ia64_ldfs_c_clr(code, f1, r3) ia64_ldfs_c_clr_pred (code, 0, f1, r3) -#define ia64_ldfd_c_clr(code, f1, r3) ia64_ldfd_c_clr_pred (code, 0, f1, r3) -#define ia64_ldf8_c_clr(code, f1, r3) ia64_ldf8_c_clr_pred (code, 0, f1, r3) -#define ia64_ldfe_c_clr(code, f1, r3) ia64_ldfe_c_clr_pred (code, 0, f1, r3) - -#define ia64_ldfs_c_nc(code, f1, r3) ia64_ldfs_c_nc_pred (code, 0, f1, r3) -#define ia64_ldfd_c_nc(code, f1, r3) ia64_ldfd_c_nc_pred (code, 0, f1, r3) -#define ia64_ldf8_c_nc(code, f1, r3) ia64_ldf8_c_nc_pred (code, 0, f1, r3) -#define ia64_ldfe_c_nc(code, f1, r3) ia64_ldfe_c_nc_pred (code, 0, f1, r3) - -#define ia64_ldf_fill(code, f1, r3) ia64_ldf_fill_pred (code, 0, f1, r3) - -#define ia64_ldfs_inc(code, f1, r3, r2) ia64_ldfs_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfd_inc(code, f1, r3, r2) ia64_ldfd_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldf8_inc(code, f1, r3, r2) ia64_ldf8_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfe_inc(code, f1, r3, r2) ia64_ldfe_inc_pred (code, 0, f1, r3, r2) - -#define ia64_ldfs_s_inc(code, f1, r3, r2) ia64_ldfs_s_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfd_s_inc(code, f1, r3, r2) ia64_ldfd_s_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldf8_s_inc(code, f1, r3, r2) ia64_ldf8_s_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfe_s_inc(code, f1, r3, r2) ia64_ldfe_s_inc_pred (code, 0, f1, r3, r2) - -#define ia64_ldfs_a_inc(code, f1, r3, r2) ia64_ldfs_a_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfd_a_inc(code, f1, r3, r2) ia64_ldfd_a_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldf8_a_inc(code, f1, r3, r2) ia64_ldf8_a_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfe_a_inc(code, f1, r3, r2) ia64_ldfe_a_inc_pred (code, 0, f1, r3, r2) - -#define ia64_ldfs_sa_inc(code, f1, r3, r2) ia64_ldfs_sa_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfd_sa_inc(code, f1, r3, r2) ia64_ldfd_sa_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldf8_sa_inc(code, f1, r3, r2) ia64_ldf8_sa_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfe_sa_inc(code, f1, r3, r2) ia64_ldfe_sa_inc_pred (code, 0, f1, r3, r2) - -#define ia64_ldfs_c_clr_inc(code, f1, r3, r2) ia64_ldfs_c_clr_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfd_c_clr_inc(code, f1, r3, r2) ia64_ldfd_c_clr_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldf8_c_clr_inc(code, f1, r3, r2) ia64_ldf8_c_clr_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfe_c_clr_inc(code, f1, r3, r2) ia64_ldfe_c_clr_inc_pred (code, 0, f1, r3, r2) - -#define ia64_ldfs_c_nc_inc(code, f1, r3, r2) ia64_ldfs_c_nc_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfd_c_nc_inc(code, f1, r3, r2) ia64_ldfd_c_nc_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldf8_c_nc_inc(code, f1, r3, r2) ia64_ldf8_c_nc_inc_pred (code, 0, f1, r3, r2) -#define ia64_ldfe_c_nc_inc(code, f1, r3, r2) ia64_ldfe_c_nc_inc_pred (code, 0, f1, r3, r2) - -#define ia64_ldf_fill_inc(code, f1, r3, r2) ia64_ldf_fill_inc_pred (code, 0, f1, r3, r2) - -#define ia64_ldfs_inc_imm(code, f1, r3, imm) ia64_ldfs_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfd_inc_imm(code, f1, r3, imm) ia64_ldfd_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldf8_inc_imm(code, f1, r3, imm) ia64_ldf8_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfe_inc_imm(code, f1, r3, imm) ia64_ldfe_inc_imm_pred (code, 0, f1, r3, imm) - -#define ia64_ldfs_s_inc_imm(code, f1, r3, imm) ia64_ldfs_s_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfd_s_inc_imm(code, f1, r3, imm) ia64_ldfd_s_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldf8_s_inc_imm(code, f1, r3, imm) ia64_ldf8_s_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfe_s_inc_imm(code, f1, r3, imm) ia64_ldfe_s_inc_imm_pred (code, 0, f1, r3, imm) - -#define ia64_ldfs_a_inc_imm(code, f1, r3, imm) ia64_ldfs_a_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfd_a_inc_imm(code, f1, r3, imm) ia64_ldfd_a_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldf8_a_inc_imm(code, f1, r3, imm) ia64_ldf8_a_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfe_a_inc_imm(code, f1, r3, imm) ia64_ldfe_a_inc_imm_pred (code, 0, f1, r3, imm) - -#define ia64_ldfs_sa_inc_imm(code, f1, r3, imm) ia64_ldfs_sa_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfd_sa_inc_imm(code, f1, r3, imm) ia64_ldfd_sa_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldf8_sa_inc_imm(code, f1, r3, imm) ia64_ldf8_sa_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfe_sa_inc_imm(code, f1, r3, imm) ia64_ldfe_sa_inc_imm_pred (code, 0, f1, r3, imm) - -#define ia64_ldfs_c_clr_inc_imm(code, f1, r3, imm) ia64_ldfs_c_clr_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfd_c_clr_inc_imm(code, f1, r3, imm) ia64_ldfd_c_clr_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldf8_c_clr_inc_imm(code, f1, r3, imm) ia64_ldf8_c_clr_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfe_c_clr_inc_imm(code, f1, r3, imm) ia64_ldfe_c_clr_inc_imm_pred (code, 0, f1, r3, imm) - -#define ia64_ldfs_c_nc_inc_imm(code, f1, r3, imm) ia64_ldfs_c_nc_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfd_c_nc_inc_imm(code, f1, r3, imm) ia64_ldfd_c_nc_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldf8_c_nc_inc_imm(code, f1, r3, imm) ia64_ldf8_c_nc_inc_imm_pred (code, 0, f1, r3, imm) -#define ia64_ldfe_c_nc_inc_imm(code, f1, r3, imm) ia64_ldfe_c_nc_inc_imm_pred (code, 0, f1, r3, imm) - -#define ia64_ldf_fill_inc_imm(code, f1, r3, imm) ia64_ldf_fill_inc_imm_pred (code, 0, f1, r3, imm) - -/* End of pseudo ops */ - -#define ia64_stfs_hint(code, r3, f2, hint) ia64_stfs_hint_pred ((code), 0, r3, f2, hint) -#define ia64_stfd_hint(code, r3, f2, hint) ia64_stfd_hint_pred ((code), 0, r3, f2, hint) -#define ia64_stf8_hint(code, r3, f2, hint) ia64_stf8_hint_pred ((code), 0, r3, f2, hint) -#define ia64_stfe_hint(code, r3, f2, hint) ia64_stfe_hint_pred ((code), 0, r3, f2, hint) -#define ia64_stf_spill_hint(code, r3, f2, hint) ia64_stf_spill_hint_pred ((code), 0, r3, f2, hint) - - -#define ia64_stfs_inc_imm_hint(code, r3, f2, imm, hint) ia64_stfs_inc_imm_hint_pred ((code), 0, r3, f2, imm, hint) -#define ia64_stfd_inc_imm_hint(code, r3, f2, imm, hint) ia64_stfd_inc_imm_hint_pred ((code), 0, r3, f2, imm, hint) -#define ia64_stf8_inc_imm_hint(code, r3, f2, imm, hint) ia64_stf8_inc_imm_hint_pred ((code), 0, r3, f2, imm, hint) -#define ia64_stfe_inc_imm_hint(code, r3, f2, imm, hint) ia64_stfe_inc_imm_hint_pred ((code), 0, r3, f2, imm, hint) -#define ia64_stf_spill_inc_imm_hint(code, r3, f2, imm, hint) ia64_stf_spill_inc_imm_hint_pred ((code), 0, r3, f2, imm, hint) - - -#define ia64_ldfps_hint(code, f1, f2, r3, hint) ia64_ldfps_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_hint(code, f1, f2, r3, hint) ia64_ldfpd_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_hint(code, f1, f2, r3, hint) ia64_ldfp8_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_s_hint(code, f1, f2, r3, hint) ia64_ldfps_s_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_s_hint(code, f1, f2, r3, hint) ia64_ldfpd_s_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_s_hint(code, f1, f2, r3, hint) ia64_ldfp8_s_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_a_hint(code, f1, f2, r3, hint) ia64_ldfps_a_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_a_hint(code, f1, f2, r3, hint) ia64_ldfpd_a_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_a_hint(code, f1, f2, r3, hint) ia64_ldfp8_a_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_sa_hint(code, f1, f2, r3, hint) ia64_ldfps_sa_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_sa_hint(code, f1, f2, r3, hint) ia64_ldfpd_sa_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_sa_hint(code, f1, f2, r3, hint) ia64_ldfp8_sa_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_c_clr_hint(code, f1, f2, r3, hint) ia64_ldfps_c_clr_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_c_clr_hint(code, f1, f2, r3, hint) ia64_ldfpd_c_clr_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_c_clr_hint(code, f1, f2, r3, hint) ia64_ldfp8_c_clr_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_c_nc_hint(code, f1, f2, r3, hint) ia64_ldfps_c_nc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_c_nc_hint(code, f1, f2, r3, hint) ia64_ldfpd_c_nc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_c_nc_hint(code, f1, f2, r3, hint) ia64_ldfp8_c_nc_hint_pred ((code), 0, f1, f2, r3, hint) - - -#define ia64_ldfps_inc_hint(code, f1, f2, r3, hint) ia64_ldfps_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_inc_hint(code, f1, f2, r3, hint) ia64_ldfpd_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_inc_hint(code, f1, f2, r3, hint) ia64_ldfp8_inc_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_s_inc_hint(code, f1, f2, r3, hint) ia64_ldfps_s_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_s_inc_hint(code, f1, f2, r3, hint) ia64_ldfpd_s_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_s_inc_hint(code, f1, f2, r3, hint) ia64_ldfp8_s_inc_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_a_inc_hint(code, f1, f2, r3, hint) ia64_ldfps_a_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_a_inc_hint(code, f1, f2, r3, hint) ia64_ldfpd_a_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_a_inc_hint(code, f1, f2, r3, hint) ia64_ldfp8_a_inc_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_sa_inc_hint(code, f1, f2, r3, hint) ia64_ldfps_sa_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_sa_inc_hint(code, f1, f2, r3, hint) ia64_ldfpd_sa_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_sa_inc_hint(code, f1, f2, r3, hint) ia64_ldfp8_sa_inc_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_c_clr_inc_hint(code, f1, f2, r3, hint) ia64_ldfps_c_clr_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_c_clr_inc_hint(code, f1, f2, r3, hint) ia64_ldfpd_c_clr_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_c_clr_inc_hint(code, f1, f2, r3, hint) ia64_ldfp8_c_clr_inc_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_ldfps_c_nc_inc_hint(code, f1, f2, r3, hint) ia64_ldfps_c_nc_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfpd_c_nc_inc_hint(code, f1, f2, r3, hint) ia64_ldfpd_c_nc_inc_hint_pred ((code), 0, f1, f2, r3, hint) -#define ia64_ldfp8_c_nc_inc_hint(code, f1, f2, r3, hint) ia64_ldfp8_c_nc_inc_hint_pred ((code), 0, f1, f2, r3, hint) - -#define ia64_lfetch_hint(code, r3, hint) ia64_lfetch_hint_pred ((code), 0, r3, hint) -#define ia64_lfetch_excl_hint(code, r3, hint) ia64_lfetch_excl_hint_pred ((code), 0, r3, hint) -#define ia64_lfetch_fault_hint(code, r3, hint) ia64_lfetch_fault_hint_pred ((code), 0, r3, hint) -#define ia64_lfetch_fault_excl_hint(code, r3, hint) ia64_lfetch_fault_excl_hint_pred ((code), 0, r3, hint) - - -#define ia64_lfetch_inc_hint(code, r3, r2, hint) ia64_lfetch_inc_hint_pred ((code), 0, r3, r2, hint) -#define ia64_lfetch_excl_inc_hint(code, r3, r2, hint) ia64_lfetch_excl_inc_hint_pred ((code), 0, r3, r2, hint) -#define ia64_lfetch_fault_inc_hint(code, r3, r2, hint) ia64_lfetch_fault_inc_hint_pred ((code), 0, r3, r2, hint) -#define ia64_lfetch_fault_excl_inc_hint(code, r3, r2, hint) ia64_lfetch_fault_excl_inc_hint_pred ((code), 0, r3, r2, hint) - - -#define ia64_lfetch_inc_imm_hint(code, r3, imm, hint) ia64_lfetch_inc_imm_hint_pred ((code), 0, r3, imm, hint) -#define ia64_lfetch_excl_inc_imm_hint(code, r3, imm, hint) ia64_lfetch_excl_inc_imm_hint_pred ((code), 0, r3, imm, hint) -#define ia64_lfetch_fault_inc_imm_hint(code, r3, imm, hint) ia64_lfetch_fault_inc_imm_hint_pred ((code), 0, r3, imm, hint) -#define ia64_lfetch_fault_excl_inc_imm_hint(code, r3, imm, hint) ia64_lfetch_fault_excl_inc_imm_hint_pred ((code), 0, r3, imm, hint) - - -#define ia64_cmpxchg1_acq_hint(code, r1, r3, r2, hint) ia64_cmpxchg1_acq_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg2_acq_hint(code, r1, r3, r2, hint) ia64_cmpxchg2_acq_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg4_acq_hint(code, r1, r3, r2, hint) ia64_cmpxchg4_acq_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg8_acq_hint(code, r1, r3, r2, hint) ia64_cmpxchg8_acq_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg1_rel_hint(code, r1, r3, r2, hint) ia64_cmpxchg1_rel_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg2_rel_hint(code, r1, r3, r2, hint) ia64_cmpxchg2_rel_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg4_rel_hint(code, r1, r3, r2, hint) ia64_cmpxchg4_rel_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg8_rel_hint(code, r1, r3, r2, hint) ia64_cmpxchg8_rel_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg16_acq_hint(code, r1, r3, r2, hint) ia64_cmpxchg16_acq_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_cmpxchg16_rel_hint(code, r1, r3, r2, hint) ia64_cmpxchg16_rel_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_xchg1_hint(code, r1, r3, r2, hint) ia64_xchg1_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_xchg2_hint(code, r1, r3, r2, hint) ia64_xchg2_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_xchg4_hint(code, r1, r3, r2, hint) ia64_xchg4_hint_pred ((code), 0, r1, r3, r2, hint) -#define ia64_xchg8_hint(code, r1, r3, r2, hint) ia64_xchg8_hint_pred ((code), 0, r1, r3, r2, hint) - -#define ia64_fetchadd4_acq_hint(code, r1, r3, inc, hint) ia64_fetchadd4_acq_hint_pred ((code), 0, r1, r3, inc, hint) -#define ia64_fetchadd8_acq_hint(code, r1, r3, inc, hint) ia64_fetchadd8_acq_hint_pred ((code), 0, r1, r3, inc, hint) -#define ia64_fetchadd4_rel_hint(code, r1, r3, inc, hint) ia64_fetchadd4_rel_hint_pred ((code), 0, r1, r3, inc, hint) -#define ia64_fetchadd8_rel_hint(code, r1, r3, inc, hint) ia64_fetchadd8_rel_hint_pred ((code), 0, r1, r3, inc, hint) - - -#define ia64_setf_sig(code, f1, r2) ia64_setf_sig_pred ((code), 0, f1, r2) -#define ia64_setf_exp(code, f1, r2) ia64_setf_exp_pred ((code), 0, f1, r2) -#define ia64_setf_s(code, f1, r2) ia64_setf_s_pred ((code), 0, f1, r2) -#define ia64_setf_d(code, f1, r2) ia64_setf_d_pred ((code), 0, f1, r2) - - -#define ia64_getf_sig(code, r1, f2) ia64_getf_sig_pred ((code), 0, r1, f2) -#define ia64_getf_exp(code, r1, f2) ia64_getf_exp_pred ((code), 0, r1, f2) -#define ia64_getf_s(code, r1, f2) ia64_getf_s_pred ((code), 0, r1, f2) -#define ia64_getf_d(code, r1, f2) ia64_getf_d_pred ((code), 0, r1, f2) - - -#define ia64_chk_s_m(code, r2,disp) ia64_chk_s_m_pred ((code), 0, r2,disp) - - -#define ia64_chk_s_float_m(code, f2,disp) ia64_chk_s_float_m_pred ((code), 0, f2,disp) - - -#define ia64_chk_a_nc(code, r1,disp) ia64_chk_a_nc_pred ((code), 0, r1,disp) -#define ia64_chk_a_clr(code, r1,disp) ia64_chk_a_clr_pred ((code), 0, r1,disp) - - -#define ia64_chk_a_nc_float(code, f1,disp) ia64_chk_a_nc_float_pred ((code), 0, f1,disp) -#define ia64_chk_a_clr_float(code, f1,disp) ia64_chk_a_clr_float_pred ((code), 0, f1,disp) - - -#define ia64_invala(code) ia64_invala_pred ((code), 0) -#define ia64_fwb(code) ia64_fwb_pred ((code), 0) -#define ia64_mf(code) ia64_mf_pred ((code), 0) -#define ia64_mf_a(code) ia64_mf_a_pred ((code), 0) -#define ia64_srlz_d(code) ia64_srlz_d_pred ((code), 0) -#define ia64_stlz_i(code) ia64_stlz_i_pred ((code), 0) -#define ia64_sync_i(code) ia64_sync_i_pred ((code), 0) - - -#define ia64_flushrs(code) ia64_flushrs_pred ((code), 0) -#define ia64_loadrs(code) ia64_loadrs_pred ((code), 0) - -#define ia64_invala_e(code, r1) ia64_invala_e_pred ((code), 0, r1) - - -#define ia64_invala_e_float(code, f1) ia64_invala_e_float_pred ((code), 0, f1) - - -#define ia64_fc(code, r3) ia64_fc_pred ((code), 0, r3) -#define ia64_fc_i(code, r3) ia64_fc_i_pred ((code), 0, r3) - - -#define ia64_mov_to_ar_m(code, ar3, r2) ia64_mov_to_ar_m_pred ((code), 0, ar3, r2) - - -#define ia64_mov_to_ar_imm_m(code, ar3, imm) ia64_mov_to_ar_imm_m_pred ((code), 0, ar3, imm) - - -#define ia64_mov_from_ar_m(code, r1, ar3) ia64_mov_from_ar_m_pred ((code), 0, r1, ar3) - -#define ia64_mov_to_cr(code, cr3, r2) ia64_mov_to_cr_pred ((code), 0, cr3, r2) - - -#define ia64_mov_from_cr(code, r1, cr3) ia64_mov_from_cr_pred ((code), 0, r1, cr3) - - -#define ia64_alloc(code, r1, i, l, o, r) ia64_alloc_pred ((code), 0, r1, i, l, o, r) - - -#define ia64_mov_to_psr_l(code, r2) ia64_mov_to_psr_l_pred ((code), 0, r2) -#define ia64_mov_to_psr_um(code, r2) ia64_mov_to_psr_um_pred ((code), 0, r2) - - -#define ia64_mov_from_psr(code, r1) ia64_mov_from_psr_pred ((code), 0, r1) -#define ia64_mov_from_psr_um(code, r1) ia64_mov_from_psr_um_pred ((code), 0, r1) - - -#define ia64_break_m(code, imm) ia64_break_m_pred ((code), 0, imm) - -/* The System/Memory Management instruction encodings (M38-M47) */ - - -#define ia64_nop_m(code, imm) ia64_nop_m_pred ((code), 0, imm) -#define ia64_hint_m(code, imm) ia64_hint_m_pred ((code), 0, imm) - -#define ia64_br_cond_hint(code, disp, bwh, ph, dh) ia64_br_cond_hint_pred ((code), 0, disp, bwh, ph, dh) -#define ia64_br_wexit_hint(code, disp, bwh, ph, dh) ia64_br_wexit_hint_pred ((code), 0, disp, bwh, ph, dh) -#define ia64_br_wtop_hint(code, disp, bwh, ph, dh) ia64_br_wtop_hint_pred ((code), 0, disp, bwh, ph, dh) - - -#define ia64_br_cloop_hint(code, disp, bwh, ph, dh) ia64_br_cloop_hint_pred ((code), 0, disp, bwh, ph, dh) -#define ia64_br_cexit_hint(code, disp, bwh, ph, dh) ia64_br_cexit_hint_pred ((code), 0, disp, bwh, ph, dh) -#define ia64_br_ctop_hint(code, disp, bwh, ph, dh) ia64_br_ctop_hint_pred ((code), 0, disp, bwh, ph, dh) - -#define ia64_br_call_hint(code, b1, disp, bwh, ph, dh) ia64_br_call_hint_pred ((code), 0, b1, disp, bwh, ph, dh) - -#define ia64_br_cond_reg_hint(code, b1, bwh, ph, dh) ia64_br_cond_reg_hint_pred ((code), 0, b1, bwh, ph, dh) -#define ia64_br_ia_reg_hint(code, b1, bwh, ph, dh) ia64_br_ia_reg_hint_pred ((code), 0, b1, bwh, ph, dh) -#define ia64_br_ret_reg_hint(code, b1, bwh, ph, dh) ia64_br_ret_reg_hint_pred ((code), 0, b1, bwh, ph, dh) - -#define ia64_br_call_reg_hint(code, b1, b2, bwh, ph, dh) ia64_br_call_reg_hint_pred ((code), 0, b1, b2, bwh, ph, dh) - -/* Pseudo ops */ - -#define ia64_br_cond(code, disp) ia64_br_cond_pred (code, 0, disp) -#define ia64_br_wexit(code, disp) ia64_br_wexit_pred (code, 0, disp) -#define ia64_br_wtop(code, disp) ia64_br_wtop_pred (code, 0, disp) - -#define ia64_br_cloop(code, disp) ia64_br_cloop_pred (code, 0, disp) -#define ia64_br_cexit(code, disp) ia64_br_cexit_pred (code, 0, disp) -#define ia64_br_ctop(code, disp) ia64_br_ctop_pred (code, 0, disp) - -#define ia64_br_call(code, b1, disp) ia64_br_call_pred (code, 0, b1, disp) - -#define ia64_br_cond_reg(code, b1) ia64_br_cond_reg_pred (code, 0, b1) -#define ia64_br_ia_reg(code, b1) ia64_br_ia_reg_pred (code, 0, b1) -#define ia64_br_ret_reg(code, b1) ia64_br_ret_reg_pred (code, 0, b1) - -#define ia64_br_call_reg(code, b1, b2) ia64_br_call_reg_pred (code, 0, b1, b2) - -/* End of pseudo ops */ - -#define ia64_cover(code) ia64_cover_pred ((code), 0) -#define ia64_clrrrb(code) ia64_clrrrb_pred ((code), 0) -#define ia64_clrrrb_pr(code) ia64_clrrrb_pr_pred ((code), 0) -#define ia64_rfi(code) ia64_rfi_pred ((code), 0) -#define ia64_bsw_0(code) ia64_bsw_0_pred ((code), 0) -#define ia64_bsw_1(code) ia64_bsw_1_pred ((code), 0) -#define ia64_epc(code) ia64_epc_pred ((code), 0) - - -#define ia64_break_b(code, imm) ia64_break_b_pred ((code), 0, imm) -#define ia64_nop_b(code, imm) ia64_nop_b_pred ((code), 0, imm) -#define ia64_hint_b(code, imm) ia64_hint_b_pred ((code), 0, imm) - - -#define ia64_break_x(code, imm) ia64_break_x_pred ((code), 0, imm) - - -#define ia64_movl(code, r1, imm) ia64_movl_pred ((code), 0, (r1), (imm)) - - -#define ia64_brl_cond_hint(code, disp, bwh, ph, dh) ia64_brl_cond_hint_pred ((code), 0, disp, bwh, ph, dh) - - -#define ia64_brl_call_hint(code, b1, disp, bwh, ph, dh) ia64_brl_call_hint_pred ((code), 0, b1, disp, bwh, ph, dh) - - -#define ia64_nop_x(code, imm) ia64_nop_x_pred ((code), 0, imm) -#define ia64_hint_x(code, imm) ia64_hint_x_pred ((code), 0, imm) - -/* - * Pseudo-ops - */ - -#define ia64_mov_pred(code, qp, r1, r3) ia64_adds_imm_pred ((code), (qp), (r1), 0, (r3)) -#define ia64_mov(code, r1, r3) ia64_mov_pred ((code), 0, (r1), (r3)) - -/* - * FLOATING POINT - */ - -#define ia64_fma_sf(code, f1, f3, f4, f2, sf) ia64_fma_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fma_s_sf(code, f1, f3, f4, f2, sf) ia64_fma_s_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fma_d_sf(code, f1, f3, f4, f2, sf) ia64_fma_d_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fpma_sf(code, f1, f3, f4, f2, sf) ia64_fpma_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fms_sf(code, f1, f3, f4, f2, sf) ia64_fms_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fms_s_sf(code, f1, f3, f4, f2, sf) ia64_fms_s_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fms_d_sf(code, f1, f3, f4, f2, sf) ia64_fms_d_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fpms_sf(code, f1, f3, f4, f2, sf) ia64_fpms_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fnma_sf(code, f1, f3, f4, f2, sf) ia64_fnma_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fnma_s_sf(code, f1, f3, f4, f2, sf) ia64_fnma_s_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fnma_d_sf(code, f1, f3, f4, f2, sf) ia64_fnma_d_sf_pred ((code), 0, f1, f3, f4, f2, sf) -#define ia64_fpnma_sf(code, f1, f3, f4, f2, sf) ia64_fpnma_sf_pred ((code), 0, f1, f3, f4, f2, sf) - -/* Pseudo ops */ -#define ia64_fnorm_s_sf(code, f1, f3, sf) ia64_fnorm_s_sf_pred ((code), 0, (f1), (f3), (sf)) -#define ia64_fnorm_d_sf(code, f1, f3, sf) ia64_fnorm_d_sf_pred ((code), 0, (f1), (f3), (sf)) - -#define ia64_xma_l(code, f1, f3, f4, f2) ia64_xma_l_pred ((code), 0, f1, f3, f4, f2) -#define ia64_xma_h(code, f1, f3, f4, f2) ia64_xma_h_pred ((code), 0, f1, f3, f4, f2) -#define ia64_xma_hu(code, f1, f3, f4, f2) ia64_xma_hu_pred ((code), 0, f1, f3, f4, f2) - -/* Pseudo ops */ -#define ia64_xmpy_l(code, f1, f3, f4) ia64_xmpy_l_pred ((code), 0, (f1), (f3), (f4)) -#define ia64_xmpy_lu(code, f1, f3, f4) ia64_xmpy_lu_pred ((code), 0, (f1), (f3), (f4)) -#define ia64_xmpy_h(code, f1, f3, f4) ia64_xmpy_h_pred ((code), 0, (f1), (f3), (f4)) -#define ia64_xmpy_hu(code, f1, f3, f4) ia64_xmpy_hu_pred ((code), 0, (f1), (f3), (f4)) - -#define ia64_fselect(code, f1, f3, f4, f2) ia64_fselect_pred ((code), 0, f1, f3, f4, f2) - -#define ia64_fcmp_eq_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_eq_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_lt_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_lt_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_le_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_le_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_unord_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_unord_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_eq_unc_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_eq_unc_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_lt_unc_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_lt_unc_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_le_unc_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_le_unc_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_unord_unc_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_unord_unc_sf_pred ((code), 0, p1, p2, f2, f3, sf) - -/* Pseudo ops */ -#define ia64_fcmp_gt_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_gt_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_ge_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_ge_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_ne_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_ne_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_nlt_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_nlt_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_nle_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_nle_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_ngt_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_ngt_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_nge_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_nge_sf_pred ((code), 0, p1, p2, f2, f3, sf) -#define ia64_fcmp_ord_sf(code, p1, p2, f2, f3, sf) ia64_fcmp_ord_sf_pred ((code), 0, p1, p2, f2, f3, sf) - -#define ia64_fclass_m(code, p1, p2, f2, fclass) ia64_fclass_m_pred ((code), 0, p1, p2, f2, fclass) -#define ia64_fclass_m_unc(code, p1, p2, f2, fclass) ia64_fclass_m_unc_pred ((code), 0, p1, p2, f2, fclass) - -#define ia64_frcpa_sf(code, f1, p2, f2, f3, sf) ia64_frcpa_sf_pred ((code), 0, f1, p2, f2, f3, sf) -#define ia64_fprcpa_sf(code, f1, p2, f2, f3, sf) ia64_fprcpa_sf_pred ((code), 0, f1, p2, f2, f3, sf) - -#define ia64_frsqrta_sf(code, f1, p2, f3, sf) ia64_frsqrta_sf_pred ((code), 0, f1, p2, f3, sf) -#define ia64_fprsqrta_sf(code, f1, p2, f3, sf) ia64_fprsqrta_sf_pred ((code), 0, f1, p2, f3, sf) - -#define ia64_fmin_sf(code, f1, f2, f3, sf) ia64_fmin_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fman_sf(code, f1, f2, f3, sf) ia64_fman_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_famin_sf(code, f1, f2, f3, sf) ia64_famin_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_famax_sf(code, f1, f2, f3, sf) ia64_famax_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpmin_sf(code, f1, f2, f3, sf) ia64_fpmin_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpman_sf(code, f1, f2, f3, sf) ia64_fpman_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpamin_sf(code, f1, f2, f3, sf) ia64_fpamin_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpamax_sf(code, f1, f2, f3, sf) ia64_fpamax_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_eq_sf(code, f1, f2, f3, sf) ia64_fpcmp_eq_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_lt_sf(code, f1, f2, f3, sf) ia64_fpcmp_lt_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_le_sf(code, f1, f2, f3, sf) ia64_fpcmp_le_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_unord_sf(code, f1, f2, f3, sf) ia64_fpcmp_unord_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_neq_sf(code, f1, f2, f3, sf) ia64_fpcmp_neq_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_nlt_sf(code, f1, f2, f3, sf) ia64_fpcmp_nlt_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_nle_sf(code, f1, f2, f3, sf) ia64_fpcmp_nle_sf_pred ((code), 0, f1, f2, f3, sf) -#define ia64_fpcmp_ord_sf(code, f1, f2, f3, sf) ia64_fpcmp_ord_sf_pred ((code), 0, f1, f2, f3, sf) - -#define ia64_fmerge_s(code, f1, f2, f3) ia64_fmerge_s_pred ((code), 0, f1, f2, f3) -#define ia64_fmerge_ns(code, f1, f2, f3) ia64_fmerge_ns_pred ((code), 0, f1, f2, f3) -#define ia64_fmerge_se(code, f1, f2, f3) ia64_fmerge_se_pred ((code), 0, f1, f2, f3) -#define ia64_fmix_lr(code, f1, f2, f3) ia64_fmix_lr_pred ((code), 0, f1, f2, f3) -#define ia64_fmix_r(code, f1, f2, f3) ia64_fmix_r_pred ((code), 0, f1, f2, f3) -#define ia64_fmix_l(code, f1, f2, f3) ia64_fmix_l_pred ((code), 0, f1, f2, f3) -#define ia64_fsxt_r(code, f1, f2, f3) ia64_fsxt_r_pred ((code), 0, f1, f2, f3) -#define ia64_fsxt_l(code, f1, f2, f3) ia64_fsxt_l_pred ((code), 0, f1, f2, f3) -#define ia64_fpack(code, f1, f2, f3) ia64_fpack_pred ((code), 0, f1, f2, f3) -#define ia64_fswap(code, f1, f2, f3) ia64_fswap_pred ((code), 0, f1, f2, f3) -#define ia64_fswap_nl(code, f1, f2, f3) ia64_fswap_nl_pred ((code), 0, f1, f2, f3) -#define ia64_fswap_nr(code, f1, f2, f3) ia64_fswap_nr_pred ((code), 0, f1, f2, f3) -#define ia64_fand(code, f1, f2, f3) ia64_fand_pred ((code), 0, f1, f2, f3) -#define ia64_fandcm(code, f1, f2, f3) ia64_fandcm_pred ((code), 0, f1, f2, f3) -#define ia64_for(code, f1, f2, f3) ia64_for_pred ((code), 0, f1, f2, f3) -#define ia64_fxor(code, f1, f2, f3) ia64_fxor_pred ((code), 0, f1, f2, f3) -#define ia64_fpmerge_s(code, f1, f2, f3) ia64_fpmerge_s_pred ((code), 0, f1, f2, f3) -#define ia64_fpmerge_ns(code, f1, f2, f3) ia64_fpmerge_ns_pred ((code), 0, f1, f2, f3) -#define ia64_fpmerge_se(code, f1, f2, f3) ia64_fpmerge_se_pred ((code), 0, f1, f2, f3) - -/* Pseudo ops */ -#define ia64_fmov(code, f1, f3) ia64_fmov_pred ((code), 0, (f1), (f3)) - -#define ia64_fcvt_fx_sf(code, f1, f2, sf) ia64_fcvt_fx_sf_pred ((code), 0, f1, f2, sf) -#define ia64_fcvt_fxu_sf(code, f1, f2, sf) ia64_fcvt_fxu_sf_pred ((code), 0, f1, f2, sf) -#define ia64_fcvt_fx_trunc_sf(code, f1, f2, sf) ia64_fcvt_fx_trunc_sf_pred ((code), 0, f1, f2, sf) -#define ia64_fcvt_fxu_trunc_sf(code, f1, f2, sf) ia64_fcvt_fxu_trunc_sf_pred ((code), 0, f1, f2, sf) -#define ia64_fpcvt_fx_sf(code, f1, f2, sf) ia64_fpcvt_fx_sf_pred ((code), 0, f1, f2, sf) -#define ia64_fpcvt_fxu_sf(code, f1, f2, sf) ia64_fpcvt_fxu_sf_pred ((code), 0, f1, f2, sf) -#define ia64_fpcvt_fx_trunc_sf(code, f1, f2, sf) ia64_fpcvt_fx_trunc_sf_pred ((code), 0, f1, f2, sf) -#define ia64_fpcvt_fxu_trunc_sf(code, f1, f2, sf) ia64_fpcvt_fxu_trunc_sf_pred ((code), 0, f1, f2, sf) - -#define ia64_fcvt_xf(code, f1, f2) ia64_fcvt_xf_pred ((code), 0, f1, f2) - -#define ia64_fsetc_sf(code, amask, omask, sf) ia64_fsetc_sf_pred ((code), 0, amask, omask, sf) - -#define ia64_fclrf_sf(code, sf) ia64_fclrf_sf_pred ((code), 0, sf) - -#define ia64_fchkf_sf(code, disp, sf) ia64_fchkf_sf_pred ((code), 0, disp, sf) - -#define ia64_break_f(code, imm) ia64_break_f_pred ((code), 0, imm) - - -#endif diff --git a/FFTS/Sources/FFTS/src/arch/mips/.gitignore b/FFTS/Sources/FFTS/src/arch/mips/.gitignore deleted file mode 100644 index 13efac7..0000000 --- a/FFTS/Sources/FFTS/src/arch/mips/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/ -/Makefile -/Makefile.in -/*.o -/*.lo -/.deps diff --git a/FFTS/Sources/FFTS/src/arch/mips/Makefile.am b/FFTS/Sources/FFTS/src/arch/mips/Makefile.am deleted file mode 100644 index 1063365..0000000 --- a/FFTS/Sources/FFTS/src/arch/mips/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ - -AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir) - -noinst_LTLIBRARIES = libmonoarch-mips.la - -libmonoarch_mips_la_SOURCES = mips-codegen.h - -noinst_PROGRAMS = test diff --git a/FFTS/Sources/FFTS/src/arch/mips/mips-codegen.h b/FFTS/Sources/FFTS/src/arch/mips/mips-codegen.h deleted file mode 100644 index 1dbd1c6..0000000 --- a/FFTS/Sources/FFTS/src/arch/mips/mips-codegen.h +++ /dev/null @@ -1,435 +0,0 @@ -#ifndef __MIPS_CODEGEN_H__ -#define __MIPS_CODEGEN_H__ -/* - * Copyright (c) 2004 Novell, Inc - * Author: Paolo Molaro (lupus@ximian.com) - * - */ - -/* registers */ -enum { - mips_zero, - mips_at, /* assembler temp */ - mips_v0, /* return values */ - mips_v1, - mips_a0, /* 4 - func arguments */ - mips_a1, - mips_a2, - mips_a3, -#if _MIPS_SIM == _ABIO32 - mips_t0, /* 8 temporaries */ - mips_t1, - mips_t2, - mips_t3, - mips_t4, - mips_t5, - mips_t6, - mips_t7, -#elif _MIPS_SIM == _ABIN32 - mips_a4, /* 4 more argument registers */ - mips_a5, - mips_a6, - mips_a7, - mips_t0, /* 4 temporaries */ - mips_t1, - mips_t2, - mips_t3, -#endif - mips_s0, /* 16 calle saved */ - mips_s1, - mips_s2, - mips_s3, - mips_s4, - mips_s5, - mips_s6, - mips_s7, - mips_t8, /* 24 temps */ - mips_t9, /* 25 temp / pic call-through register */ - mips_k0, /* 26 kernel-reserved */ - mips_k1, - mips_gp, /* 28 */ - mips_sp, /* stack pointer */ - mips_fp, /* frame pointer */ - mips_ra /* return address */ -}; - -/* we treat the register file as containing just doubles... */ -enum { - mips_f0, /* return regs */ - mips_f1, - mips_f2, - mips_f3, - mips_f4, /* temps */ - mips_f5, - mips_f6, - mips_f7, - mips_f8, - mips_f9, - mips_f10, - mips_f11, - mips_f12, /* first arg */ - mips_f13, - mips_f14, /* second arg */ - mips_f15, - mips_f16, /* temps */ - mips_f17, - mips_f18, - mips_f19, - mips_f20, /* callee saved */ - mips_f21, - mips_f22, - mips_f23, - mips_f24, - mips_f25, - mips_f26, - mips_f27, - mips_f28, - mips_f29, - mips_f30, - mips_f31 -}; - -/* prefetch hints */ -enum { - MIPS_FOR_LOAD, - MIPS_FOR_STORE, - MIPS_FOR_LOAD_STREAMED = 4, - MIPS_FOR_STORE_STREAMED, - MIPS_FOR_LOAD_RETAINED, - MIPS_FOR_STORE_RETAINED -}; - -/* coprocessors */ -enum { - MIPS_COP0, - MIPS_COP1, - MIPS_COP2, - MIPS_COP3 -}; - -enum { - MIPS_FMT_SINGLE = 16, - MIPS_FMT_DOUBLE = 17, - MIPS_FMT_WORD = 20, - MIPS_FMT_LONG = 21, - MIPS_FMT3_SINGLE = 0, - MIPS_FMT3_DOUBLE = 1 -}; - -/* fpu rounding mode */ -enum { - MIPS_ROUND_TO_NEAREST, - MIPS_ROUND_TO_ZERO, - MIPS_ROUND_TO_POSINF, - MIPS_ROUND_TO_NEGINF, - MIPS_ROUND_MASK = 3 -}; - -/* fpu enable/cause flags, cc */ -enum { - MIPS_FPU_C_MASK = 1 << 23, - MIPS_INEXACT = 1, - MIPS_UNDERFLOW = 2, - MIPS_OVERFLOW = 4, - MIPS_DIVZERO = 8, - MIPS_INVALID = 16, - MIPS_NOTIMPL = 32, - MIPS_FPU_FLAGS_OFFSET = 2, - MIPS_FPU_ENABLES_OFFSET = 7, - MIPS_FPU_CAUSES_OFFSET = 12 -}; - -/* fpu condition values - see manual entry for C.cond.fmt instructions */ -enum { - MIPS_FPU_F, - MIPS_FPU_UN, - MIPS_FPU_EQ, - MIPS_FPU_UEQ, - MIPS_FPU_OLT, - MIPS_FPU_ULT, - MIPS_FPU_OLE, - MIPS_FPU_ULE, - MIPS_FPU_SF, - MIPS_FPU_NGLE, - MIPS_FPU_SEQ, - MIPS_FPU_NGL, - MIPS_FPU_LT, - MIPS_FPU_NGE, - MIPS_FPU_LE, - MIPS_FPU_NGT -}; - -#if SIZEOF_REGISTER == 4 - -#define MIPS_SW mips_sw -#define MIPS_LW mips_lw -#define MIPS_ADDU mips_addu -#define MIPS_ADDIU mips_addiu -#define MIPS_SWC1 mips_swc1 -#define MIPS_LWC1 mips_lwc1 -#define MIPS_MOVE mips_move - -#elif SIZEOF_REGISTER == 8 - -#define MIPS_SW mips_sd -#define MIPS_LW mips_ld -#define MIPS_ADDU mips_daddu -#define MIPS_ADDIU mips_daddiu -#define MIPS_SWC1 mips_sdc1 -#define MIPS_LWC1 mips_ldc1 -#define MIPS_MOVE mips_dmove - -#else -#error Unknown SIZEOF_REGISTER -#endif - -#define mips_emit32(c,x) do { \ - *((guint32 *) (void *)(c)) = x; \ - (c) = (typeof(c))(((guint32 *)(void *)(c)) + 1); \ - } while (0) - -#define mips_format_i(code,op,rs,rt,imm) mips_emit32 ((code), (((op)<<26)|((rs)<<21)|((rt)<<16)|((imm)&0xffff))) -#define mips_format_j(code,op,imm) mips_emit32 ((code), (((op)<<26)|((imm)&0x03ffffff))) -#define mips_format_r(code,op,rs,rt,rd,sa,func) mips_emit32 ((code), (((op)<<26)|((rs)<<21)|((rt)<<16)|((rd)<<11)|((sa)<<6)|(func))) -#define mips_format_divmul(code,op,src1,src2,fun) mips_emit32 ((code), (((op)<<26)|((src1)<<21)|((src2)<<16)|(fun))) - -#define mips_is_imm16(val) ((gint)(gshort)(gint)(val) == (gint)(val)) - -/* Load always using lui/addiu pair (for later patching) */ -#define mips_load(c,D,v) do { \ - if (((guint32)(v)) & (1 << 15)) { \ - mips_lui ((c), (D), mips_zero, (((guint32)(v))>>16)+1); \ - } \ - else { \ - mips_lui ((c), (D), mips_zero, (((guint32)(v))>>16)); \ - } \ - mips_addiu ((c), (D), (D), ((guint32)(v)) & 0xffff); \ - } while (0) - -/* load constant - no patch-up */ -#define mips_load_const(c,D,v) do { \ - if (!mips_is_imm16 ((v))) { \ - if (((guint32)(v)) & (1 << 15)) { \ - mips_lui ((c), (D), mips_zero, (((guint32)(v))>>16)+1); \ - } \ - else { \ - mips_lui ((c), (D), mips_zero, (((guint32)(v))>>16)); \ - } \ - if (((guint32)(v)) & 0xffff) \ - mips_addiu ((c), (D), (D), ((guint32)(v)) & 0xffff); \ - } \ - else \ - mips_addiu ((c), (D), mips_zero, ((guint32)(v)) & 0xffff); \ - } while (0) - -/* arithmetric ops */ -#define mips_add(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,32) -#define mips_addi(c,dest,src1,imm) mips_format_i(c,8,src1,dest,imm) -#define mips_addu(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,33) -#define mips_addiu(c,dest,src1,imm) mips_format_i(c,9,src1,dest,imm) -#define mips_dadd(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,44) -#define mips_daddi(c,dest,src1,imm) mips_format_i(c,24,src1,dest,imm) -#define mips_daddu(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,45) -#define mips_daddiu(c,dest,src1,imm) mips_format_i(c,25,src1,dest,imm) -#define mips_dsub(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,46) -#define mips_dsubu(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,47) -#define mips_mul(c,dest,src1,src2) mips_format_r(c,28,src1,src2,dest,0,2) -#define mips_sub(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,34) -#define mips_subu(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,35) - -/* div and mul ops */ -#define mips_ddiv(c,src1,src2) mips_format_divmul(c,0,src1,src2,30) -#define mips_ddivu(c,src1,src2) mips_format_divmul(c,0,src1,src2,31) -#define mips_div(c,src1,src2) mips_format_divmul(c,0,src1,src2,26) -#define mips_divu(c,src1,src2) mips_format_divmul(c,0,src1,src2,27) -#define mips_dmult(c,src1,src2) mips_format_divmul(c,0,src1,src2,28) -#define mips_dmultu(c,src1,src2) mips_format_divmul(c,0,src1,src2,29) -#define mips_mult(c,src1,src2) mips_format_divmul(c,0,src1,src2,24) -#define mips_multu(c,src1,src2) mips_format_divmul(c,0,src1,src2,25) - -/* shift ops */ -#define mips_dsll(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,56) -#define mips_dsll32(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,60) -#define mips_dsllv(c,dest,src1,src2) mips_format_r(c,0,src2,src1,dest,0,20) -#define mips_dsra(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,59) -#define mips_dsra32(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,63) -#define mips_dsrav(c,dest,src1,src2) mips_format_r(c,0,src2,src1,dest,0,23) -#define mips_dsrl(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,58) -#define mips_dsrl32(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,62) -#define mips_dsrlv(c,dest,src1,src2) mips_format_r(c,0,src2,src1,dest,0,22) -#define mips_sll(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,0) -#define mips_sllv(c,dest,src1,src2) mips_format_r(c,0,src2,src1,dest,0,4) -#define mips_sra(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,3) -#define mips_srav(c,dest,src1,src2) mips_format_r(c,0,src2,src1,dest,0,7) -#define mips_srl(c,dest,src1,imm) mips_format_r(c,0,0,src1,dest,imm,2) -#define mips_srlv(c,dest,src1,src2) mips_format_r(c,0,src2,src1,dest,0,6) - -/* logical ops */ -#define mips_and(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,36) -#define mips_andi(c,dest,src1,imm) mips_format_i(c,12,src1,dest,imm) -#define mips_nor(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,39) -#define mips_or(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,37) -#define mips_ori(c,dest,src1,uimm) mips_format_i(c,13,src1,dest,uimm) -#define mips_xor(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,38) -#define mips_xori(c,dest,src1,uimm) mips_format_i(c,14,src1,dest,uimm) - -/* compares */ -#define mips_slt(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,42) -#define mips_slti(c,dest,src1,imm) mips_format_i(c,10,src1,dest,imm) -#define mips_sltiu(c,dest,src1,imm) mips_format_i(c,11,src1,dest,imm) -#define mips_sltu(c,dest,src1,src2) mips_format_r(c,0,src1,src2,dest,0,43) -/* missing traps: teq, teqi, tge, tgei, tgeiu, tgeu, tlt, tlti, tltiu, tltu, tne, tnei, */ - -/* conditional branches */ -#define mips_beq(c,src1,src2,offset) mips_format_i(c,4,src1,src2,offset) -#define mips_beql(c,src1,src2,offset) mips_format_i(c,20,src1,src2,offset) -#define mips_bgez(c,src1,offset) mips_format_i(c,1,src1,1,offset) -#define mips_bgezal(c,src1,offset) mips_format_i(c,1,src1,17,offset) -#define mips_bgezall(c,src1,offset) mips_format_i(c,1,src1,19,offset) -#define mips_bgezl(c,src1,offset) mips_format_i(c,1,src1,3,offset) -#define mips_bgtz(c,src1,offset) mips_format_i(c,7,src1,0,offset) -#define mips_bgtzl(c,src1,offset) mips_format_i(c,23,src1,0,offset) -#define mips_blez(c,src1,offset) mips_format_i(c,6,src1,0,offset) -#define mips_blezl(c,src1,offset) mips_format_i(c,22,src1,0,offset) -#define mips_bltz(c,src1,offset) mips_format_i(c,1,src1,0,offset) -#define mips_bltzal(c,src1,offset) mips_format_i(c,1,src1,16,offset) -#define mips_bltzall(c,src1,offset) mips_format_i(c,1,src1,18,offset) -#define mips_bltzl(c,src1,offset) mips_format_i(c,1,src1,2,offset) -#define mips_bne(c,src1,src2,offset) mips_format_i(c,5,src1,src2,offset) -#define mips_bnel(c,src1,src2,offset) mips_format_i(c,21,src1,src2,offset) - -/* uncond branches and calls */ -#define mips_jump(c,target) mips_format_j(c,2,target) -#define mips_jumpl(c,target) mips_format_j(c,3,target) -#define mips_jalr(c,src1,retreg) mips_format_r(c,0,src1,0,retreg,0,9) -#define mips_jr(c,src1) mips_emit32(c,((src1)<<21)|8) - -/* loads and stores */ -#define mips_lb(c,dest,base,offset) mips_format_i(c,32,base,dest,offset) -#define mips_lbu(c,dest,base,offset) mips_format_i(c,36,base,dest,offset) -#define mips_ld(c,dest,base,offset) mips_format_i(c,55,base,dest,offset) -#define mips_ldl(c,dest,base,offset) mips_format_i(c,26,base,dest,offset) -#define mips_ldr(c,dest,base,offset) mips_format_i(c,27,base,dest,offset) -#define mips_lh(c,dest,base,offset) mips_format_i(c,33,base,dest,offset) -#define mips_lhu(c,dest,base,offset) mips_format_i(c,37,base,dest,offset) -#define mips_ll(c,dest,base,offset) mips_format_i(c,48,base,dest,offset) -#define mips_lld(c,dest,base,offset) mips_format_i(c,52,base,dest,offset) -#define mips_lui(c,dest,base,uimm) mips_format_i(c,15,base,dest,uimm) -#define mips_lw(c,dest,base,offset) mips_format_i(c,35,base,dest,offset) -#define mips_lwl(c,dest,base,offset) mips_format_i(c,34,base,dest,offset) -#define mips_lwr(c,dest,base,offset) mips_format_i(c,38,base,dest,offset) -#define mips_lwu(c,dest,base,offset) mips_format_i(c,39,base,dest,offset) - -#define mips_sb(c,src,base,offset) mips_format_i(c,40,base,src,offset) -#define mips_sc(c,src,base,offset) mips_format_i(c,56,base,src,offset) -#define mips_scd(c,src,base,offset) mips_format_i(c,60,base,src,offset) -#define mips_sd(c,src,base,offset) mips_format_i(c,63,base,src,offset) -#define mips_sdl(c,src,base,offset) mips_format_i(c,44,base,src,offset) -#define mips_sdr(c,src,base,offset) mips_format_i(c,45,base,src,offset) -#define mips_sh(c,src,base,offset) mips_format_i(c,41,base,src,offset) -#define mips_sw(c,src,base,offset) mips_format_i(c,43,base,src,offset) -#define mips_swl(c,src,base,offset) mips_format_i(c,50,base,src,offset) -#define mips_swr(c,src,base,offset) mips_format_i(c,54,base,src,offset) - -/* misc and coprocessor ops */ -#define mips_move(c,dest,src) mips_addu(c,dest,src,mips_zero) -#define mips_dmove(c,dest,src) mips_daddu(c,dest,src,mips_zero) -#define mips_nop(c) mips_or(c,mips_at,mips_at,0) -#define mips_break(c,code) mips_emit32(c, ((code)<<6)|13) -#define mips_mfhi(c,dest) mips_format_r(c,0,0,0,dest,0,16) -#define mips_mflo(c,dest) mips_format_r(c,0,0,0,dest,0,18) -#define mips_mthi(c,src) mips_format_r(c,0,src,0,0,0,17) -#define mips_mtlo(c,src) mips_format_r(c,0,src,0,0,0,19) -#define mips_movn(c,dest,src,test) mips_format_r(c,0,src,test,dest,0,11) -#define mips_movz(c,dest,src,test) mips_format_r(c,0,src,test,dest,0,10) -#define mips_pref(c,hint,base,offset) mips_format_i(c,51,base,hint,offset) -#define mips_prefidx(c,hint,base,idx) mips_format_r(c,19,base,idx,hint,0,15) -#define mips_sync(c,stype) mips_emit32(c, ((stype)<<6)|15) -#define mips_syscall(c,code) mips_emit32(c, ((code)<<6)|12) - -#define mips_cop(c,cop,fun) mips_emit32(c, ((16|(cop))<<26)|(fun)) -#define mips_ldc(c,cop,dest,base,offset) mips_format_i(c,(52|(cop)),base,dest,offset) -#define mips_lwc(c,cop,dest,base,offset) mips_format_i(c,(48|(cop)),base,dest,offset) -#define mips_sdc(c,cop,src,base,offset) mips_format_i(c,(60|(cop)),base,src,offset) -#define mips_swc(c,cop,src,base,offset) mips_format_i(c,(56|(cop)),base,src,offset) -#define mips_cfc1(c,dest,src) mips_format_r(c,17,2,dest,src,0,0) -#define mips_ctc1(c,dest,src) mips_format_r(c,17,6,dest,src,0,0) - -/* fpu ops */ -#define mips_fabss(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,5) -#define mips_fabsd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,5) -#define mips_fadds(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_SINGLE,src2,src1,dest,0) -#define mips_faddd(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_DOUBLE,src2,src1,dest,0) -#define mips_fdivs(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_SINGLE,src2,src1,dest,3) -#define mips_fdivd(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_DOUBLE,src2,src1,dest,3) -#define mips_fmuls(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_SINGLE,src2,src1,dest,2) -#define mips_fmuld(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_DOUBLE,src2,src1,dest,2) -#define mips_fnegs(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,7) -#define mips_fnegd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,7) -#define mips_fsqrts(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,4) -#define mips_fsqrtd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,4) -#define mips_fsubs(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_SINGLE,src2,src1,dest,1) -#define mips_fsubd(c,dest,src1,src2) mips_format_r(c,17,MIPS_FMT_DOUBLE,src2,src1,dest,1) -#define mips_madds(c,dest,src1,src2,srcadd) mips_format_r(c,19,srcadd,src2,src1,dest,32|MIPS_FMT_SINGLE) -#define mips_maddd(c,dest,src1,src2,srcadd) mips_format_r(c,19,srcadd,src2,src1,dest,32|MIPS_FMT_DOUBLE) -#define mips_nmadds(c,dest,src1,src2,srcadd) mips_format_r(c,19,srcadd,src2,src1,dest,48|MIPS_FMT_SINGLE) -#define mips_nmaddd(c,dest,src1,src2,srcadd) mips_format_r(c,19,srcadd,src2,src1,dest,48|MIPS_FMT_DOUBLE) -#define mips_msubs(c,dest,src1,src2,srcsub) mips_format_r(c,19,srcsub,src2,src1,dest,40|MIPS_FMT_SINGLE) -#define mips_msubd(c,dest,src1,src2,srcsub) mips_format_r(c,19,srcsub,src2,src1,dest,40|MIPS_FMT_DOUBLE) -#define mips_nmsubs(c,dest,src1,src2,srcsub) mips_format_r(c,19,srcsub,src2,src1,dest,56|MIPS_FMT_SINGLE) -#define mips_nmsubd(c,dest,src1,src2,srcsub) mips_format_r(c,19,srcsub,src2,src1,dest,56|MIPS_FMT_DOUBLE) - -/* fp compare and branch */ -#define mips_fcmps(c,cond,src1,src2) mips_format_r(c,17,MIPS_FMT_SINGLE,src2,src1,0,(3<<4)|(cond)) -#define mips_fcmpd(c,cond,src1,src2) mips_format_r(c,17,MIPS_FMT_DOUBLE,src2,src1,0,(3<<4)|(cond)) -#define mips_fbfalse(c,offset) mips_format_i(c,17,8,0,offset) -#define mips_fbfalsel(c,offset) mips_format_i(c,17,8,2,offset) -#define mips_fbtrue(c,offset) mips_format_i(c,17,8,1,offset) -#define mips_fbtruel(c,offset) mips_format_i(c,17,8,3,offset) - -/* fp convert */ -#define mips_ceills(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,10) -#define mips_ceilld(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,10) -#define mips_ceilws(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,14) -#define mips_ceilwd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,14) -#define mips_cvtds(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,33) -#define mips_cvtdw(c,dest,src) mips_format_r(c,17,MIPS_FMT_WORD,0,src,dest,33) -#define mips_cvtdl(c,dest,src) mips_format_r(c,17,MIPS_FMT_LONG,0,src,dest,33) -#define mips_cvtls(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,37) -#define mips_cvtld(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,37) -#define mips_cvtsd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,32) -#define mips_cvtsw(c,dest,src) mips_format_r(c,17,MIPS_FMT_WORD,0,src,dest,32) -#define mips_cvtsl(c,dest,src) mips_format_r(c,17,MIPS_FMT_LONG,0,src,dest,32) -#define mips_cvtws(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,36) -#define mips_cvtwd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,36) -#define mips_floorls(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,11) -#define mips_floorld(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,11) -#define mips_floorws(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,15) -#define mips_floorwd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,15) -#define mips_roundls(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,8) -#define mips_roundld(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,8) -#define mips_roundws(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,12) -#define mips_roundwd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,12) -#define mips_truncls(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,9) -#define mips_truncld(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,9) -#define mips_truncws(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,13) -#define mips_truncwd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,13) - -/* fp moves, loads */ -#define mips_fmovs(c,dest,src) mips_format_r(c,17,MIPS_FMT_SINGLE,0,src,dest,6) -#define mips_fmovd(c,dest,src) mips_format_r(c,17,MIPS_FMT_DOUBLE,0,src,dest,6) -#define mips_mfc1(c,dest,src) mips_format_r(c,17,0,dest,src,0,0) -#define mips_mtc1(c,dest,src) mips_format_r(c,17,4,src,dest,0,0) -#define mips_dmfc1(c,dest,src) mips_format_r(c,17,1,0,dest,src,0) -#define mips_dmtc1(c,dest,src) mips_format_r(c,17,1,0,src,dest,0) -#define mips_ldc1(c,dest,base,offset) mips_ldc(c,1,dest,base,offset) -#define mips_ldxc1(c,dest,base,idx) mips_format_r(c,19,base,idx,0,dest,1) -#define mips_lwc1(c,dest,base,offset) mips_lwc(c,1,dest,base,offset) -#define mips_lwxc1(c,dest,base,idx) mips_format_r(c,19,base,idx,0,dest,0) -#define mips_sdc1(c,src,base,offset) mips_sdc(c,1,src,base,offset) -#define mips_sdxc1(c,src,base,idx) mips_format_r(c,19,base,idx,src,0,9) -#define mips_swc1(c,src,base,offset) mips_swc(c,1,src,base,offset) -#define mips_swxc1(c,src,base,idx) mips_format_r(c,19,base,idx,src,0,8) - -#endif /* __MIPS_CODEGEN_H__ */ - diff --git a/FFTS/Sources/FFTS/src/arch/mips/test.c b/FFTS/Sources/FFTS/src/arch/mips/test.c deleted file mode 100644 index 4f5e1ad..0000000 --- a/FFTS/Sources/FFTS/src/arch/mips/test.c +++ /dev/null @@ -1,159 +0,0 @@ -#include "config.h" -#include -#include - -#define NO_MIPS_JIT_DEBUG - -#include "mips-codegen.h" -#include "mono/metadata/class.h" - -/* don't run the resulting program, it will destroy your computer, - * just objdump -d it to inspect we generated the correct assembler. - */ - -int main (int argc, char *argv[]) { - guint32 *code, * p; - - code = p = (guint32 *) malloc (sizeof (guint32) * 1024); - - mips_add (p, 3, 4, 5); - mips_addi (p, 3, 4, 5); - mips_addu (p, 3, 4, 5); - mips_addiu (p, 3, 4, 5); - mips_sub (p, 3, 4, 5); - mips_subu (p, 3, 4, 5); - mips_dadd (p, 3, 4, 5); - mips_daddi (p, 3, 4, 5); - mips_daddu (p, 3, 4, 5); - mips_daddiu (p, 3, 4, 5); - mips_dsub (p, 3, 4, 5); - mips_dsubu (p, 3, 4, 5); - - mips_mult (p, 6, 7); - mips_multu (p, 6, 7); - mips_div (p, 6, 7); - mips_divu (p, 6, 7); - mips_dmult (p, 6, 7); - mips_dmultu (p, 6, 7); - mips_ddiv (p, 6, 7); - mips_ddivu (p, 6, 7); - - mips_sll (p, 3, 4, 5); - mips_sllv (p, 3, 4, 5); - mips_sra (p, 3, 4, 5); - mips_srav (p, 3, 4, 5); - mips_srl (p, 3, 4, 5); - mips_srlv (p, 3, 4, 5); - mips_dsll (p, 3, 4, 5); - mips_dsll32 (p, 3, 4, 5); - mips_dsllv (p, 3, 4, 5); - mips_dsra (p, 3, 4, 5); - mips_dsra32 (p, 3, 4, 5); - mips_dsrav (p, 3, 4, 5); - mips_dsrl (p, 3, 4, 5); - mips_dsrl32 (p, 3, 4, 5); - mips_dsrlv (p, 3, 4, 5); - - mips_and (p, 8, 9, 10); - mips_andi (p, 8, 9, 10); - mips_nor (p, 8, 9, 10); - mips_or (p, 8, 9, 10); - mips_ori (p, 8, 9, 10); - mips_xor (p, 8, 9, 10); - mips_xori (p, 8, 9, 10); - - mips_slt (p, 8, 9, 10); - mips_slti (p, 8, 9, 10); - mips_sltu (p, 8, 9, 10); - mips_sltiu (p, 8, 9, 10); - - mips_beq (p, 8, 9, 0xff1f); - mips_beql (p, 8, 9, 0xff1f); - mips_bne (p, 8, 9, 0xff1f); - mips_bnel (p, 8, 9, 0xff1f); - mips_bgez (p, 11, 0xff1f); - mips_bgezal (p, 11, 0xff1f); - mips_bgezall (p, 11, 0xff1f); - mips_bgezl (p, 11, 0xff1f); - mips_bgtz (p, 11, 0xff1f); - mips_bgtzl (p, 11, 0xff1f); - mips_blez (p, 11, 0xff1f); - mips_blezl (p, 11, 0xff1f); - mips_bltz (p, 11, 0xff1f); - mips_bltzal (p, 11, 0xff1f); - mips_bltzall (p, 11, 0xff1f); - mips_bltzl (p, 11, 0xff1f); - - mips_jump (p, 0xff1f); - mips_jumpl (p, 0xff1f); - mips_jalr (p, 12, mips_ra); - mips_jr (p, 12); - - mips_lb (p, 13, 14, 128); - mips_lbu (p, 13, 14, 128); - mips_ld (p, 13, 14, 128); - mips_ldl (p, 13, 14, 128); - mips_ldr (p, 13, 14, 128); - mips_lh (p, 13, 14, 128); - mips_lhu (p, 13, 14, 128); - mips_ll (p, 13, 14, 128); - mips_lld (p, 13, 14, 128); - mips_lui (p, 13, 14, 128); - mips_lw (p, 13, 14, 128); - mips_lwl (p, 13, 14, 128); - mips_lwr (p, 13, 14, 128); - mips_lwu (p, 13, 14, 128); - mips_sb (p, 13, 14, 128); - mips_sc (p, 13, 14, 128); - mips_scd (p, 13, 14, 128); - mips_sd (p, 13, 14, 128); - mips_sdl (p, 13, 14, 128); - mips_sdr (p, 13, 14, 128); - mips_sh (p, 13, 14, 128); - mips_sw (p, 13, 14, 128); - mips_swl (p, 13, 14, 128); - mips_swr (p, 13, 14, 128); - - mips_move (p, 15, 16); - mips_nop (p); - mips_break (p, 0); - mips_sync (p, 0); - mips_mfhi (p, 17); - mips_mflo (p, 17); - mips_mthi (p, 17); - mips_mtlo (p, 17); - - mips_fabsd (p, 16, 18); - mips_fnegd (p, 16, 18); - mips_fsqrtd (p, 16, 18); - mips_faddd (p, 16, 18, 20); - mips_fdivd (p, 16, 18, 20); - mips_fmuld (p, 16, 18, 20); - mips_fsubd (p, 16, 18, 20); - - mips_fcmpd (p, MIPS_FPU_EQ, 18, 20); - mips_fbfalse (p, 0xff1f); - mips_fbfalsel (p, 0xff1f); - mips_fbtrue (p, 0xff1f); - mips_fbtruel (p, 0xff1f); - - mips_ceilwd (p, 20, 22); - mips_ceilld (p, 20, 22); - mips_floorwd (p, 20, 22); - mips_floorld (p, 20, 22); - mips_roundwd (p, 20, 22); - mips_roundld (p, 20, 22); - mips_truncwd (p, 20, 22); - mips_truncld (p, 20, 22); - mips_cvtdw (p, 20, 22); - mips_cvtds (p, 20, 22); - mips_cvtdl (p, 20, 22); - mips_cvtld (p, 20, 22); - mips_cvtsd (p, 20, 22); - mips_cvtwd (p, 20, 22); - - mips_fmovd (p, 20, 22); - printf ("size: %d\n", p - code); - - return 0; -} diff --git a/FFTS/Sources/FFTS/src/arch/ppc/.gitignore b/FFTS/Sources/FFTS/src/arch/ppc/.gitignore deleted file mode 100644 index c577ff6..0000000 --- a/FFTS/Sources/FFTS/src/arch/ppc/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/Makefile -/Makefile.in -/.libs -/.deps -/*.la -/*.lo -/test diff --git a/FFTS/Sources/FFTS/src/arch/ppc/Makefile.am b/FFTS/Sources/FFTS/src/arch/ppc/Makefile.am deleted file mode 100644 index 9b209ef..0000000 --- a/FFTS/Sources/FFTS/src/arch/ppc/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -EXTRA_DIST = ppc-codegen.h \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/arch/ppc/ppc-codegen.h b/FFTS/Sources/FFTS/src/arch/ppc/ppc-codegen.h deleted file mode 100644 index 55b5060..0000000 --- a/FFTS/Sources/FFTS/src/arch/ppc/ppc-codegen.h +++ /dev/null @@ -1,953 +0,0 @@ -/* - Authors: - Radek Doulik - Christopher Taylor - Andreas Faerber - - Copyright (C) 2001 Radek Doulik - Copyright (C) 2007-2008 Andreas Faerber - - for testing do the following: ./test | as -o test.o -*/ - -#ifndef __MONO_PPC_CODEGEN_H__ -#define __MONO_PPC_CODEGEN_H__ -#include -#include - -typedef enum { - ppc_r0 = 0, - ppc_r1, - ppc_sp = ppc_r1, - ppc_r2, - ppc_r3, - ppc_r4, - ppc_r5, - ppc_r6, - ppc_r7, - ppc_r8, - ppc_r9, - ppc_r10, - ppc_r11, - ppc_r12, - ppc_r13, - ppc_r14, - ppc_r15, - ppc_r16, - ppc_r17, - ppc_r18, - ppc_r19, - ppc_r20, - ppc_r21, - ppc_r22, - ppc_r23, - ppc_r24, - ppc_r25, - ppc_r26, - ppc_r27, - ppc_r28, - ppc_r29, - ppc_r30, - ppc_r31 -} PPCIntRegister; - -typedef enum { - ppc_f0 = 0, - ppc_f1, - ppc_f2, - ppc_f3, - ppc_f4, - ppc_f5, - ppc_f6, - ppc_f7, - ppc_f8, - ppc_f9, - ppc_f10, - ppc_f11, - ppc_f12, - ppc_f13, - ppc_f14, - ppc_f15, - ppc_f16, - ppc_f17, - ppc_f18, - ppc_f19, - ppc_f20, - ppc_f21, - ppc_f22, - ppc_f23, - ppc_f24, - ppc_f25, - ppc_f26, - ppc_f27, - ppc_f28, - ppc_f29, - ppc_f30, - ppc_f31 -} PPCFloatRegister; - -typedef enum { - ppc_lr = 256, - ppc_ctr = 256 + 32, - ppc_xer = 32 -} PPCSpecialRegister; - -enum { - /* B0 operand for branches */ - PPC_BR_DEC_CTR_NONZERO_FALSE = 0, - PPC_BR_LIKELY = 1, /* can be or'ed with the conditional variants */ - PPC_BR_DEC_CTR_ZERO_FALSE = 2, - PPC_BR_FALSE = 4, - PPC_BR_DEC_CTR_NONZERO_TRUE = 8, - PPC_BR_DEC_CTR_ZERO_TRUE = 10, - PPC_BR_TRUE = 12, - PPC_BR_DEC_CTR_NONZERO = 16, - PPC_BR_DEC_CTR_ZERO = 18, - PPC_BR_ALWAYS = 20, - /* B1 operand for branches */ - PPC_BR_LT = 0, - PPC_BR_GT = 1, - PPC_BR_EQ = 2, - PPC_BR_SO = 3 -}; - -enum { - PPC_TRAP_LT = 1, - PPC_TRAP_GT = 2, - PPC_TRAP_EQ = 4, - PPC_TRAP_LT_UN = 8, - PPC_TRAP_GT_UN = 16, - PPC_TRAP_LE = 1 + PPC_TRAP_EQ, - PPC_TRAP_GE = 2 + PPC_TRAP_EQ, - PPC_TRAP_LE_UN = 8 + PPC_TRAP_EQ, - PPC_TRAP_GE_UN = 16 + PPC_TRAP_EQ -}; - -#define ppc_emit32(c,x) do { *((guint32 *) (c)) = GUINT32_TO_BE (x); (c) = (gpointer)((guint8 *)(c) + sizeof (guint32));} while (0) - -#define ppc_is_imm16(val) ((((val)>> 15) == 0) || (((val)>> 15) == -1)) -#define ppc_is_uimm16(val) ((glong)(val) >= 0L && (glong)(val) <= 65535L) -#define ppc_ha(val) (((val >> 16) + ((val & 0x8000) ? 1 : 0)) & 0xffff) - -#define ppc_load32(c,D,v) G_STMT_START { \ - ppc_lis ((c), (D), (guint32)(v) >> 16); \ - ppc_ori ((c), (D), (D), (guint32)(v) & 0xffff); \ - } G_STMT_END - -/* Macros to load/store pointer sized quantities */ - -#if defined(__mono_ppc64__) && !defined(__mono_ilp32__) - -#define ppc_ldptr(c,D,d,A) ppc_ld ((c), (D), (d), (A)) -#define ppc_ldptr_update(c,D,d,A) ppc_ldu ((c), (D), (d), (A)) -#define ppc_ldptr_indexed(c,D,A,B) ppc_ldx ((c), (D), (A), (B)) -#define ppc_ldptr_update_indexed(c,D,A,B) ppc_ldux ((c), (D), (A), (B)) - -#define ppc_stptr(c,S,d,A) ppc_std ((c), (S), (d), (A)) -#define ppc_stptr_update(c,S,d,A) ppc_stdu ((c), (S), (d), (A)) -#define ppc_stptr_indexed(c,S,A,B) ppc_stdx ((c), (S), (A), (B)) -#define ppc_stptr_update_indexed(c,S,A,B) ppc_stdux ((c), (S), (A), (B)) - -#else - -/* Same as ppc32 */ -#define ppc_ldptr(c,D,d,A) ppc_lwz ((c), (D), (d), (A)) -#define ppc_ldptr_update(c,D,d,A) ppc_lwzu ((c), (D), (d), (A)) -#define ppc_ldptr_indexed(c,D,A,B) ppc_lwzx ((c), (D), (A), (B)) -#define ppc_ldptr_update_indexed(c,D,A,B) ppc_lwzux ((c), (D), (A), (B)) - -#define ppc_stptr(c,S,d,A) ppc_stw ((c), (S), (d), (A)) -#define ppc_stptr_update(c,S,d,A) ppc_stwu ((c), (S), (d), (A)) -#define ppc_stptr_indexed(c,S,A,B) ppc_stwx ((c), (S), (A), (B)) -#define ppc_stptr_update_indexed(c,S,A,B) ppc_stwux ((c), (S), (A), (B)) - -#endif - -/* Macros to load pointer sized immediates */ -#define ppc_load_ptr(c,D,v) ppc_load ((c),(D),(gsize)(v)) -#define ppc_load_ptr_sequence(c,D,v) ppc_load_sequence ((c),(D),(gsize)(v)) - -/* Macros to load/store regsize quantities */ - -#ifdef __mono_ppc64__ -#define ppc_ldr(c,D,d,A) ppc_ld ((c), (D), (d), (A)) -#define ppc_ldr_indexed(c,D,A,B) ppc_ldx ((c), (D), (A), (B)) -#define ppc_str(c,S,d,A) ppc_std ((c), (S), (d), (A)) -#define ppc_str_update(c,S,d,A) ppc_stdu ((c), (S), (d), (A)) -#define ppc_str_indexed(c,S,A,B) ppc_stdx ((c), (S), (A), (B)) -#define ppc_str_update_indexed(c,S,A,B) ppc_stdux ((c), (S), (A), (B)) -#else -#define ppc_ldr(c,D,d,A) ppc_lwz ((c), (D), (d), (A)) -#define ppc_ldr_indexed(c,D,A,B) ppc_lwzx ((c), (D), (A), (B)) -#define ppc_str(c,S,d,A) ppc_stw ((c), (S), (d), (A)) -#define ppc_str_update(c,S,d,A) ppc_stwu ((c), (S), (d), (A)) -#define ppc_str_indexed(c,S,A,B) ppc_stwx ((c), (S), (A), (B)) -#define ppc_str_update_indexed(c,S,A,B) ppc_stwux ((c), (S), (A), (B)) -#endif - -#define ppc_str_multiple(c,S,d,A) ppc_store_multiple_regs((c),(S),(d),(A)) -#define ppc_ldr_multiple(c,D,d,A) ppc_load_multiple_regs((c),(D),(d),(A)) - -/* PPC32 macros */ - -#ifndef __mono_ppc64__ - -#define ppc_load_sequence(c,D,v) ppc_load32 ((c), (D), (guint32)(v)) - -#define PPC_LOAD_SEQUENCE_LENGTH 8 - -#define ppc_load(c,D,v) G_STMT_START { \ - if (ppc_is_imm16 ((guint32)(v))) { \ - ppc_li ((c), (D), (guint16)(guint32)(v)); \ - } else { \ - ppc_load32 ((c), (D), (guint32)(v)); \ - } \ - } G_STMT_END - -#define ppc_load_func(c,D,V) ppc_load_sequence ((c), (D), (V)) - -#define ppc_load_multiple_regs(c,D,d,A) ppc_lmw ((c), (D), (d), (A)) - -#define ppc_store_multiple_regs(c,S,d,A) ppc_stmw ((c), (S), (d), (A)) - -#define ppc_compare(c,cfrD,A,B) ppc_cmp((c), (cfrD), 0, (A), (B)) -#define ppc_compare_reg_imm(c,cfrD,A,B) ppc_cmpi((c), (cfrD), 0, (A), (B)) -#define ppc_compare_log(c,cfrD,A,B) ppc_cmpl((c), (cfrD), 0, (A), (B)) - -#define ppc_shift_left(c,A,S,B) ppc_slw((c), (S), (A), (B)) -#define ppc_shift_left_imm(c,A,S,n) ppc_slwi((c), (A), (S), (n)) - -#define ppc_shift_right_imm(c,A,S,B) ppc_srwi((c), (A), (S), (B)) -#define ppc_shift_right_arith_imm(c,A,S,B) ppc_srawi((c), (A), (S), (B)) - -#define ppc_multiply(c,D,A,B) ppc_mullw((c), (D), (A), (B)) - -#define ppc_clear_right_imm(c,A,S,n) ppc_clrrwi((c), (A), (S), (n)) - -#endif - -#define ppc_opcode(c) ((c) >> 26) -#define ppc_split_5_1_1(x) (((x) >> 5) & 0x1) -#define ppc_split_5_1_5(x) ((x) & 0x1F) -#define ppc_split_5_1(x) ((ppc_split_5_1_5(x) << 1) | ppc_split_5_1_1(x)) - -#define ppc_break(c) ppc_tw((c),31,0,0) -#define ppc_addi(c,D,A,i) ppc_emit32 (c, (14 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(i)) -#define ppc_addis(c,D,A,i) ppc_emit32 (c, (15 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(i)) -#define ppc_li(c,D,v) ppc_addi (c, D, 0, (guint16)(v)) -#define ppc_lis(c,D,v) ppc_addis (c, D, 0, (guint16)(v)) -#define ppc_lwz(c,D,d,A) ppc_emit32 (c, (32 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_lhz(c,D,d,A) ppc_emit32 (c, (40 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_lbz(c,D,d,A) ppc_emit32 (c, (34 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_stw(c,S,d,A) ppc_emit32 (c, (36 << 26) | ((S) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_sth(c,S,d,A) ppc_emit32 (c, (44 << 26) | ((S) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_stb(c,S,d,A) ppc_emit32 (c, (38 << 26) | ((S) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_stwu(c,s,d,A) ppc_emit32 (c, (37 << 26) | ((s) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_or(c,a,s,b) ppc_emit32 (c, (31 << 26) | ((s) << 21) | ((a) << 16) | ((b) << 11) | 888) -#define ppc_mr(c,a,s) ppc_or (c, a, s, s) -#define ppc_ori(c,S,A,ui) ppc_emit32 (c, (24 << 26) | ((S) << 21) | ((A) << 16) | (guint16)(ui)) -#define ppc_nop(c) ppc_ori (c, 0, 0, 0) -#define ppc_mfspr(c,D,spr) ppc_emit32 (c, (31 << 26) | ((D) << 21) | ((spr) << 11) | (339 << 1)) -#define ppc_mflr(c,D) ppc_mfspr (c, D, ppc_lr) -#define ppc_mtspr(c,spr,S) ppc_emit32 (c, (31 << 26) | ((S) << 21) | ((spr) << 11) | (467 << 1)) -#define ppc_mtlr(c,S) ppc_mtspr (c, ppc_lr, S) -#define ppc_mtctr(c,S) ppc_mtspr (c, ppc_ctr, S) -#define ppc_mtxer(c,S) ppc_mtspr (c, ppc_xer, S) - -#define ppc_b(c,li) ppc_emit32 (c, (18 << 26) | ((li) << 2)) -#define ppc_bl(c,li) ppc_emit32 (c, (18 << 26) | ((li) << 2) | 1) -#define ppc_ba(c,li) ppc_emit32 (c, (18 << 26) | ((li) << 2) | 2) -#define ppc_bla(c,li) ppc_emit32 (c, (18 << 26) | ((li) << 2) | 3) -#define ppc_blrl(c) ppc_emit32 (c, 0x4e800021) -#define ppc_blr(c) ppc_emit32 (c, 0x4e800020) - -#define ppc_lfs(c,D,d,A) ppc_emit32 (c, (48 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_lfd(c,D,d,A) ppc_emit32 (c, (50 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(d)) -#define ppc_stfs(c,S,d,a) ppc_emit32 (c, (52 << 26) | ((S) << 21) | ((a) << 16) | (guint16)(d)) -#define ppc_stfd(c,S,d,a) ppc_emit32 (c, (54 << 26) | ((S) << 21) | ((a) << 16) | (guint16)(d)) - -/*********************************************************************** -The macros below were tapped out by Christopher Taylor -from 18 November 2002 to 19 December 2002. - -Special thanks to rodo, lupus, dietmar, miguel, and duncan for patience, -and motivation. - -The macros found in this file are based on the assembler instructions found -in Motorola and Digital DNA's: - -"Programming Enviornments Manual For 32-bit Implementations of the PowerPC Architecture" - -MPCFPE32B/AD -12/2001 -REV2 - -see pages 326 - 524 for detailed information regarding each instruction - -Also see the "Ximian Copyright Agreement, 2002" for more information regarding -my and Ximian's copyright to this code. ;) -*************************************************************************/ - -#define ppc_addx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (OE << 10) | (266 << 1) | Rc) -#define ppc_add(c,D,A,B) ppc_addx(c,D,A,B,0,0) -#define ppc_addd(c,D,A,B) ppc_addx(c,D,A,B,0,1) -#define ppc_addo(c,D,A,B) ppc_addx(c,D,A,B,1,0) -#define ppc_addod(c,D,A,B) ppc_addx(c,D,A,B,1,1) - -#define ppc_addcx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (OE << 10) | (10 << 1) | Rc) -#define ppc_addc(c,D,A,B) ppc_addcx(c,D,A,B,0,0) -#define ppc_addcd(c,D,A,B) ppc_addcx(c,D,A,B,0,1) -#define ppc_addco(c,D,A,B) ppc_addcx(c,D,A,B,1,0) -#define ppc_addcod(c,D,A,B) ppc_addcx(c,D,A,B,1,1) - -#define ppc_addex(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (OE << 10) | (138 << 1) | Rc) -#define ppc_adde(c,D,A,B) ppc_addex(c,D,A,B,0,0) -#define ppc_added(c,D,A,B) ppc_addex(c,D,A,B,0,1) -#define ppc_addeo(c,D,A,B) ppc_addex(c,D,A,B,1,0) -#define ppc_addeod(c,D,A,B) ppc_addex(c,D,A,B,1,1) - -#define ppc_addic(c,D,A,i) ppc_emit32(c, (12 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(i)) -#define ppc_addicd(c,D,A,i) ppc_emit32(c, (13 << 26) | ((D) << 21) | ((A) << 16) | (guint16)(i)) - -#define ppc_addmex(c,D,A,OE,RC) ppc_emit32(c, (31 << 26) | ((D) << 21 ) | ((A) << 16) | (0 << 11) | ((OE) << 10) | (234 << 1) | RC) -#define ppc_addme(c,D,A) ppc_addmex(c,D,A,0,0) -#define ppc_addmed(c,D,A) ppc_addmex(c,D,A,0,1) -#define ppc_addmeo(c,D,A) ppc_addmex(c,D,A,1,0) -#define ppc_addmeod(c,D,A) ppc_addmex(c,D,A,1,1) - -#define ppc_addzex(c,D,A,OE,RC) ppc_emit32(c, (31 << 26) | ((D) << 21 ) | ((A) << 16) | (0 << 11) | ((OE) << 10) | (202 << 1) | RC) -#define ppc_addze(c,D,A) ppc_addzex(c,D,A,0,0) -#define ppc_addzed(c,D,A) ppc_addzex(c,D,A,0,1) -#define ppc_addzeo(c,D,A) ppc_addzex(c,D,A,1,0) -#define ppc_addzeod(c,D,A) ppc_addzex(c,D,A,1,1) - -#define ppc_andx(c,S,A,B,RC) ppc_emit32(c, (31 << 26) | ((S) << 21 ) | ((A) << 16) | ((B) << 11) | (28 << 1) | RC) -#define ppc_and(c,S,A,B) ppc_andx(c,S,A,B,0) -#define ppc_andd(c,S,A,B) ppc_andx(c,S,A,B,1) - -#define ppc_andcx(c,S,A,B,RC) ppc_emit32(c, (31 << 26) | ((S) << 21 ) | ((A) << 16) | ((B) << 11) | (60 << 1) | RC) -#define ppc_andc(c,S,A,B) ppc_andcx(c,S,A,B,0) -#define ppc_andcd(c,S,A,B) ppc_andcx(c,S,A,B,1) - -#define ppc_andid(c,S,A,ui) ppc_emit32(c, (28 << 26) | ((S) << 21 ) | ((A) << 16) | ((guint16)(ui))) -#define ppc_andisd(c,S,A,ui) ppc_emit32(c, (29 << 26) | ((S) << 21 ) | ((A) << 16) | ((guint16)(ui))) - -#define ppc_bcx(c,BO,BI,BD,AA,LK) ppc_emit32(c, (16 << 26) | (BO << 21 )| (BI << 16) | (BD << 2) | ((AA) << 1) | LK) -#define ppc_bc(c,BO,BI,BD) ppc_bcx(c,BO,BI,BD,0,0) -#define ppc_bca(c,BO,BI,BD) ppc_bcx(c,BO,BI,BD,1,0) -#define ppc_bcl(c,BO,BI,BD) ppc_bcx(c,BO,BI,BD,0,1) -#define ppc_bcla(c,BO,BI,BD) ppc_bcx(c,BO,BI,BD,1,1) - -#define ppc_bcctrx(c,BO,BI,LK) ppc_emit32(c, (19 << 26) | (BO << 21 )| (BI << 16) | (0 << 11) | (528 << 1) | LK) -#define ppc_bcctr(c,BO,BI) ppc_bcctrx(c,BO,BI,0) -#define ppc_bcctrl(c,BO,BI) ppc_bcctrx(c,BO,BI,1) - -#define ppc_bnectrp(c,BO,BI) ppc_bcctr(c,BO,BI) -#define ppc_bnectrlp(c,BO,BI) ppc_bcctr(c,BO,BI) - -#define ppc_bclrx(c,BO,BI,BH,LK) ppc_emit32(c, (19 << 26) | ((BO) << 21 )| ((BI) << 16) | (0 << 13) | ((BH) << 11) | (16 << 1) | (LK)) -#define ppc_bclr(c,BO,BI,BH) ppc_bclrx(c,BO,BI,BH,0) -#define ppc_bclrl(c,BO,BI,BH) ppc_bclrx(c,BO,BI,BH,1) - -#define ppc_bnelrp(c,BO,BI) ppc_bclr(c,BO,BI,0) -#define ppc_bnelrlp(c,BO,BI) ppc_bclr(c,BO,BI,0) - -#define ppc_cmp(c,cfrD,L,A,B) ppc_emit32(c, (31 << 26) | ((cfrD) << 23) | (0 << 22) | ((L) << 21) | ((A) << 16) | ((B) << 11) | (0 << 1) | 0) -#define ppc_cmpi(c,cfrD,L,A,B) ppc_emit32(c, (11 << 26) | (cfrD << 23) | (0 << 22) | (L << 21) | (A << 16) | (guint16)(B)) -#define ppc_cmpl(c,cfrD,L,A,B) ppc_emit32(c, (31 << 26) | ((cfrD) << 23) | (0 << 22) | ((L) << 21) | ((A) << 16) | ((B) << 11) | (32 << 1) | 0) -#define ppc_cmpli(c,cfrD,L,A,B) ppc_emit32(c, (10 << 26) | (cfrD << 23) | (0 << 22) | (L << 21) | (A << 16) | (guint16)(B)) -#define ppc_cmpw(c,cfrD,A,B) ppc_cmp(c, (cfrD), 0, (A), (B)) - -#define ppc_cntlzwx(c,S,A,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (0 << 11) | (26 << 1) | Rc) -#define ppc_cntlzw(c,S,A) ppc_cntlzwx(c,S,A,0) -#define ppc_cntlzwd(c,S,A) ppc_cntlzwx(c,S,A,1) - -#define ppc_crand(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (257 << 1) | 0) -#define ppc_crandc(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (129 << 1) | 0) -#define ppc_creqv(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (289 << 1) | 0) -#define ppc_crnand(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (225 << 1) | 0) -#define ppc_crnor(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (33 << 1) | 0) -#define ppc_cror(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (449 << 1) | 0) -#define ppc_crorc(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (417 << 1) | 0) -#define ppc_crxor(c,D,A,B) ppc_emit32(c, (19 << 26) | (D << 21) | (A << 16) | (B << 11) | (193 << 1) | 0) - -#define ppc_dcba(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (758 << 1) | 0) -#define ppc_dcbf(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (86 << 1) | 0) -#define ppc_dcbi(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (470 << 1) | 0) -#define ppc_dcbst(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (54 << 1) | 0) -#define ppc_dcbt(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (278 << 1) | 0) -#define ppc_dcbtst(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (246 << 1) | 0) -#define ppc_dcbz(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (1014 << 1) | 0) - -#define ppc_divwx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (OE << 10) | (491 << 1) | Rc) -#define ppc_divw(c,D,A,B) ppc_divwx(c,D,A,B,0,0) -#define ppc_divwd(c,D,A,B) ppc_divwx(c,D,A,B,0,1) -#define ppc_divwo(c,D,A,B) ppc_divwx(c,D,A,B,1,0) -#define ppc_divwod(c,D,A,B) ppc_divwx(c,D,A,B,1,1) - -#define ppc_divwux(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (OE << 10) | (459 << 1) | Rc) -#define ppc_divwu(c,D,A,B) ppc_divwux(c,D,A,B,0,0) -#define ppc_divwud(c,D,A,B) ppc_divwux(c,D,A,B,0,1) -#define ppc_divwuo(c,D,A,B) ppc_divwux(c,D,A,B,1,0) -#define ppc_divwuod(c,D,A,B) ppc_divwux(c,D,A,B,1,1) - -#define ppc_eciwx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (310 << 1) | 0) -#define ppc_ecowx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (438 << 1) | 0) -#define ppc_eieio(c) ppc_emit32(c, (31 << 26) | (0 << 21) | (0 << 16) | (0 << 11) | (854 << 1) | 0) - -#define ppc_eqvx(c,A,S,B,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (284 << 1) | Rc) -#define ppc_eqv(c,A,S,B) ppc_eqvx(c,A,S,B,0) -#define ppc_eqvd(c,A,S,B) ppc_eqvx(c,A,S,B,1) - -#define ppc_extsbx(c,A,S,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (0 << 11) | (954 << 1) | Rc) -#define ppc_extsb(c,A,S) ppc_extsbx(c,A,S,0) -#define ppc_extsbd(c,A,S) ppc_extsbx(c,A,S,1) - -#define ppc_extshx(c,A,S,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (0 << 11) | (922 << 1) | Rc) -#define ppc_extsh(c,A,S) ppc_extshx(c,A,S,0) -#define ppc_extshd(c,A,S) ppc_extshx(c,A,S,1) - -#define ppc_fabsx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (264 << 1) | Rc) -#define ppc_fabs(c,D,B) ppc_fabsx(c,D,B,0) -#define ppc_fabsd(c,D,B) ppc_fabsx(c,D,B,1) - -#define ppc_faddx(c,D,A,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 6) | (21 << 1) | Rc) -#define ppc_fadd(c,D,A,B) ppc_faddx(c,D,A,B,0) -#define ppc_faddd(c,D,A,B) ppc_faddx(c,D,A,B,1) - -#define ppc_faddsx(c,D,A,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 6) | (21 << 1) | Rc) -#define ppc_fadds(c,D,A,B) ppc_faddsx(c,D,A,B,0) -#define ppc_faddsd(c,D,A,B) ppc_faddsx(c,D,A,B,1) - -#define ppc_fcmpo(c,crfD,A,B) ppc_emit32(c, (63 << 26) | (crfD << 23) | (0 << 21) | (A << 16) | (B << 11) | (32 << 1) | 0) -#define ppc_fcmpu(c,crfD,A,B) ppc_emit32(c, (63 << 26) | (crfD << 23) | (0 << 21) | (A << 16) | (B << 11) | (0 << 1) | 0) - -#define ppc_fctiwx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (14 << 1) | Rc) -#define ppc_fctiw(c,D,B) ppc_fctiwx(c,D,B,0) -#define ppc_fctiwd(c,D,B) ppc_fctiwx(c,D,B,1) - -#define ppc_fctiwzx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (15 << 1) | Rc) -#define ppc_fctiwz(c,D,B) ppc_fctiwzx(c,D,B,0) -#define ppc_fctiwzd(c,D,B) ppc_fctiwzx(c,D,B,1) - -#define ppc_fdivx(c,D,A,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 6) | (18 << 1) | Rc) -#define ppc_fdiv(c,D,A,B) ppc_fdivx(c,D,A,B,0) -#define ppc_fdivd(c,D,A,B) ppc_fdivx(c,D,A,B,1) - -#define ppc_fdivsx(c,D,A,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 6) | (18 << 1) | Rc) -#define ppc_fdivs(c,D,A,B) ppc_fdivsx(c,D,A,B,0) -#define ppc_fdivsd(c,D,A,B) ppc_fdivsx(c,D,A,B,1) - -#define ppc_fmaddx(c,D,A,B,C,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (29 << 1) | Rc) -#define ppc_fmadd(c,D,A,B,C) ppc_fmaddx(c,D,A,B,C,0) -#define ppc_fmaddd(c,D,A,B,C) ppc_fmaddx(c,D,A,B,C,1) - -#define ppc_fmaddsx(c,D,A,B,C,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (29 << 1) | Rc) -#define ppc_fmadds(c,D,A,B,C) ppc_fmaddsx(c,D,A,B,C,0) -#define ppc_fmaddsd(c,D,A,B,C) ppc_fmaddsx(c,D,A,B,C,1) - -#define ppc_fmrx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (72 << 1) | Rc) -#define ppc_fmr(c,D,B) ppc_fmrx(c,D,B,0) -#define ppc_fmrd(c,D,B) ppc_fmrx(c,D,B,1) - -#define ppc_fmsubx(c,D,A,C,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (28 << 1) | Rc) -#define ppc_fmsub(c,D,A,C,B) ppc_fmsubx(c,D,A,C,B,0) -#define ppc_fmsubd(c,D,A,C,B) ppc_fmsubx(c,D,A,C,B,1) - -#define ppc_fmsubsx(c,D,A,C,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (28 << 1) | Rc) -#define ppc_fmsubs(c,D,A,C,B) ppc_fmsubsx(c,D,A,C,B,0) -#define ppc_fmsubsd(c,D,A,C,B) ppc_fmsubsx(c,D,A,C,B,1) - -#define ppc_fmulx(c,D,A,C,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (0 << 11) | (C << 6) | (25 << 1) | Rc) -#define ppc_fmul(c,D,A,C) ppc_fmulx(c,D,A,C,0) -#define ppc_fmuld(c,D,A,C) ppc_fmulx(c,D,A,C,1) - -#define ppc_fmulsx(c,D,A,C,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (0 << 11) | (C << 6) | (25 << 1) | Rc) -#define ppc_fmuls(c,D,A,C) ppc_fmulsx(c,D,A,C,0) -#define ppc_fmulsd(c,D,A,C) ppc_fmulsx(c,D,A,C,1) - -#define ppc_fnabsx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (136 << 1) | Rc) -#define ppc_fnabs(c,D,B) ppc_fnabsx(c,D,B,0) -#define ppc_fnabsd(c,D,B) ppc_fnabsx(c,D,B,1) - -#define ppc_fnegx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (40 << 1) | Rc) -#define ppc_fneg(c,D,B) ppc_fnegx(c,D,B,0) -#define ppc_fnegd(c,D,B) ppc_fnegx(c,D,B,1) - -#define ppc_fnmaddx(c,D,A,C,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (31 << 1) | Rc) -#define ppc_fnmadd(c,D,A,C,B) ppc_fnmaddx(c,D,A,C,B,0) -#define ppc_fnmaddd(c,D,A,C,B) ppc_fnmaddx(c,D,A,C,B,1) - -#define ppc_fnmaddsx(c,D,A,C,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (31 << 1) | Rc) -#define ppc_fnmadds(c,D,A,C,B) ppc_fnmaddsx(c,D,A,C,B,0) -#define ppc_fnmaddsd(c,D,A,C,B) ppc_fnmaddsx(c,D,A,C,B,1) - -#define ppc_fnmsubx(c,D,A,C,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (30 << 1) | Rc) -#define ppc_fnmsub(c,D,A,C,B) ppc_fnmsubx(c,D,A,C,B,0) -#define ppc_fnmsubd(c,D,A,C,B) ppc_fnmsubx(c,D,A,C,B,1) - -#define ppc_fnmsubsx(c,D,A,C,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (30 << 1) | Rc) -#define ppc_fnmsubs(c,D,A,C,B) ppc_fnmsubsx(c,D,A,C,B,0) -#define ppc_fnmsubsd(c,D,A,C,B) ppc_fnmsubsx(c,D,A,C,B,1) - -#define ppc_fresx(c,D,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (0 << 16) | (B << 11) | (0 << 6) | (24 << 1) | Rc) -#define ppc_fres(c,D,B) ppc_fresx(c,D,B,0) -#define ppc_fresd(c,D,B) ppc_fresx(c,D,B,1) - -#define ppc_frspx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (12 << 1) | Rc) -#define ppc_frsp(c,D,B) ppc_frspx(c,D,B,0) -#define ppc_frspd(c,D,B) ppc_frspx(c,D,B,1) - -#define ppc_frsqrtex(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (0 << 6) | (26 << 1) | Rc) -#define ppc_frsqrte(c,D,B) ppc_frsqrtex(c,D,B,0) -#define ppc_frsqrted(c,D,B) ppc_frsqrtex(c,D,B,1) - -#define ppc_fselx(c,D,A,C,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (C << 6) | (23 << 1) | Rc) -#define ppc_fsel(c,D,A,C,B) ppc_fselx(c,D,A,C,B,0) -#define ppc_fseld(c,D,A,C,B) ppc_fselx(c,D,A,C,B,1) - -#define ppc_fsqrtx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (B << 11) | (0 << 6) | (22 << 1) | Rc) -#define ppc_fsqrt(c,D,B) ppc_fsqrtx(c,D,B,0) -#define ppc_fsqrtd(c,D,B) ppc_fsqrtx(c,D,B,1) - -#define ppc_fsqrtsx(c,D,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (0 << 16) | (B << 11) | (0 << 6) | (22 << 1) | Rc) -#define ppc_fsqrts(c,D,B) ppc_fsqrtsx(c,D,B,0) -#define ppc_fsqrtsd(c,D,B) ppc_fsqrtsx(c,D,B,1) - -#define ppc_fsubx(c,D,A,B,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 6) | (20 << 1) | Rc) -#define ppc_fsub(c,D,A,B) ppc_fsubx(c,D,A,B,0) -#define ppc_fsubd(c,D,A,B) ppc_fsubx(c,D,A,B,1) - -#define ppc_fsubsx(c,D,A,B,Rc) ppc_emit32(c, (59 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 6) | (20 << 1) | Rc) -#define ppc_fsubs(c,D,A,B) ppc_fsubsx(c,D,A,B,0) -#define ppc_fsubsd(c,D,A,B) ppc_fsubsx(c,D,A,B,1) - -#define ppc_icbi(c,A,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (A << 16) | (B << 11) | (982 << 1) | 0) - -#define ppc_isync(c) ppc_emit32(c, (19 << 26) | (0 << 11) | (150 << 1) | 0) - -#define ppc_lbzu(c,D,d,A) ppc_emit32(c, (35 << 26) | (D << 21) | (A << 16) | (guint16)d) -#define ppc_lbzux(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (119 << 1) | 0) -#define ppc_lbzx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (87 << 1) | 0) - -#define ppc_lfdu(c,D,d,A) ppc_emit32(c, (51 << 26) | (D << 21) | (A << 16) | (guint16)d) -#define ppc_lfdux(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (631 << 1) | 0) -#define ppc_lfdx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (599 << 1) | 0) - -#define ppc_lfsu(c,D,d,A) ppc_emit32(c, (49 << 26) | (D << 21) | (A << 16) | (guint16)d) -#define ppc_lfsux(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (567 << 1) | 0) -#define ppc_lfsx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (535 << 1) | 0) - -#define ppc_lha(c,D,d,A) ppc_emit32(c, (42 << 26) | (D << 21) | (A << 16) | (guint16)d) -#define ppc_lhau(c,D,d,A) ppc_emit32(c, (43 << 26) | (D << 21) | (A << 16) | (guint16)d) -#define ppc_lhaux(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (375 << 1) | 0) -#define ppc_lhax(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (343 << 1) | 0) -#define ppc_lhbrx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (790 << 1) | 0) -#define ppc_lhzu(c,D,d,A) ppc_emit32(c, (41 << 26) | (D << 21) | (A << 16) | (guint16)d) - -#define ppc_lhzux(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (311 << 1) | 0) -#define ppc_lhzx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (279 << 1) | 0) - -#define ppc_lmw(c,D,d,A) ppc_emit32(c, (46 << 26) | (D << 21) | (A << 16) | (guint16)d) - -#define ppc_lswi(c,D,A,NB) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (NB << 11) | (597 << 1) | 0) -#define ppc_lswx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (533 << 1) | 0) -#define ppc_lwarx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (20 << 1) | 0) -#define ppc_lwbrx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (534 << 1) | 0) - -#define ppc_lwzu(c,D,d,A) ppc_emit32(c, (33 << 26) | (D << 21) | (A << 16) | (guint16)d) -#define ppc_lwzux(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (55 << 1) | 0) -#define ppc_lwzx(c,D,A,B) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (23 << 1) | 0) - -#define ppc_mcrf(c,crfD,crfS) ppc_emit32(c, (19 << 26) | (crfD << 23) | (0 << 21) | (crfS << 18) | 0) -#define ppc_mcrfs(c,crfD,crfS) ppc_emit32(c, (63 << 26) | (crfD << 23) | (0 << 21) | (crfS << 18) | (0 << 16) | (64 << 1) | 0) -#define ppc_mcrxr(c,crfD) ppc_emit32(c, (31 << 26) | (crfD << 23) | (0 << 16) | (512 << 1) | 0) - -#define ppc_mfcr(c,D) ppc_emit32(c, (31 << 26) | (D << 21) | (0 << 16) | (19 << 1) | 0) -#define ppc_mffsx(c,D,Rc) ppc_emit32(c, (63 << 26) | (D << 21) | (0 << 16) | (583 << 1) | Rc) -#define ppc_mffs(c,D) ppc_mffsx(c,D,0) -#define ppc_mffsd(c,D) ppc_mffsx(c,D,1) -#define ppc_mfmsr(c,D) ppc_emit32(c, (31 << 26) | (D << 21) | (0 << 16) | (83 << 1) | 0) -#define ppc_mfsr(c,D,SR) ppc_emit32(c, (31 << 26) | (D << 21) | (0 << 20) | (SR << 16) | (0 << 11) | (595 << 1) | 0) -#define ppc_mfsrin(c,D,B) ppc_emit32(c, (31 << 26) | (D << 21) | (0 << 16) | (B << 11) | (659 << 1) | 0) -#define ppc_mftb(c,D,TBR) ppc_emit32(c, (31 << 26) | (D << 21) | (TBR << 11) | (371 << 1) | 0) - -#define ppc_mtcrf(c,CRM,S) ppc_emit32(c, (31 << 26) | (S << 21) | (0 << 20) | (CRM << 12) | (0 << 11) | (144 << 1) | 0) - -#define ppc_mtfsb0x(c,CRB,Rc) ppc_emit32(c, (63 << 26) | (CRB << 21) | (0 << 11) | (70 << 1) | Rc) -#define ppc_mtfsb0(c,CRB) ppc_mtfsb0x(c,CRB,0) -#define ppc_mtfsb0d(c,CRB) ppc_mtfsb0x(c,CRB,1) - -#define ppc_mtfsb1x(c,CRB,Rc) ppc_emit32(c, (63 << 26) | (CRB << 21) | (0 << 11) | (38 << 1) | Rc) -#define ppc_mtfsb1(c,CRB) ppc_mtfsb1x(c,CRB,0) -#define ppc_mtfsb1d(c,CRB) ppc_mtfsb1x(c,CRB,1) - -#define ppc_mtfsfx(c,FM,B,Rc) ppc_emit32(c, (63 << 26) | (0 << 25) | (FM << 22) | (0 << 21) | (B << 11) | (711 << 1) | Rc) -#define ppc_mtfsf(c,FM,B) ppc_mtfsfx(c,FM,B,0) -#define ppc_mtfsfd(c,FM,B) ppc_mtfsfx(c,FM,B,1) - -#define ppc_mtfsfix(c,crfD,IMM,Rc) ppc_emit32(c, (63 << 26) | (crfD << 23) | (0 << 16) | (IMM << 12) | (0 << 11) | (134 << 1) | Rc) -#define ppc_mtfsfi(c,crfD,IMM) ppc_mtfsfix(c,crfD,IMM,0) -#define ppc_mtfsfid(c,crfD,IMM) ppc_mtfsfix(c,crfD,IMM,1) - -#define ppc_mtmsr(c, S) ppc_emit32(c, (31 << 26) | (S << 21) | (0 << 11) | (146 << 1) | 0) - -#define ppc_mtsr(c,SR,S) ppc_emit32(c, (31 << 26) | (S << 21) | (0 << 20) | (SR << 16) | (0 << 11) | (210 << 1) | 0) -#define ppc_mtsrin(c,S,B) ppc_emit32(c, (31 << 26) | (S << 21) | (0 << 16) | (B << 11) | (242 << 1) | 0) - -#define ppc_mulhwx(c,D,A,B,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 10) | (75 << 1) | Rc) -#define ppc_mulhw(c,D,A,B) ppc_mulhwx(c,D,A,B,0) -#define ppc_mulhwd(c,D,A,B) ppc_mulhwx(c,D,A,B,1) - -#define ppc_mulhwux(c,D,A,B,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (0 << 10) | (11 << 1) | Rc) -#define ppc_mulhwu(c,D,A,B) ppc_mulhwux(c,D,A,B,0) -#define ppc_mulhwud(c,D,A,B) ppc_mulhwux(c,D,A,B,1) - -#define ppc_mulli(c,D,A,SIMM) ppc_emit32(c, ((07) << 26) | (D << 21) | (A << 16) | (guint16)(SIMM)) - -#define ppc_mullwx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (OE << 10) | (235 << 1) | Rc) -#define ppc_mullw(c,D,A,B) ppc_mullwx(c,D,A,B,0,0) -#define ppc_mullwd(c,D,A,B) ppc_mullwx(c,D,A,B,0,1) -#define ppc_mullwo(c,D,A,B) ppc_mullwx(c,D,A,B,1,0) -#define ppc_mullwod(c,D,A,B) ppc_mullwx(c,D,A,B,1,1) - -#define ppc_nandx(c,A,S,B,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (476 << 1) | Rc) -#define ppc_nand(c,A,S,B) ppc_nandx(c,A,S,B,0) -#define ppc_nandd(c,A,S,B) ppc_nandx(c,A,S,B,1) - -#define ppc_negx(c,D,A,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (0 << 11) | (OE << 10) | (104 << 1) | Rc) -#define ppc_neg(c,D,A) ppc_negx(c,D,A,0,0) -#define ppc_negd(c,D,A) ppc_negx(c,D,A,0,1) -#define ppc_nego(c,D,A) ppc_negx(c,D,A,1,0) -#define ppc_negod(c,D,A) ppc_negx(c,D,A,1,1) - -#define ppc_norx(c,A,S,B,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (124 << 1) | Rc) -#define ppc_nor(c,A,S,B) ppc_norx(c,A,S,B,0) -#define ppc_nord(c,A,S,B) ppc_norx(c,A,S,B,1) - -#define ppc_not(c,A,S) ppc_norx(c,A,S,S,0) - -#define ppc_orx(c,A,S,B,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (444 << 1) | Rc) -#define ppc_ord(c,A,S,B) ppc_orx(c,A,S,B,1) - -#define ppc_orcx(c,A,S,B,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (412 << 1) | Rc) -#define ppc_orc(c,A,S,B) ppc_orcx(c,A,S,B,0) -#define ppc_orcd(c,A,S,B) ppc_orcx(c,A,S,B,1) - -#define ppc_oris(c,A,S,UIMM) ppc_emit32(c, (25 << 26) | (S << 21) | (A << 16) | (guint16)(UIMM)) - -#define ppc_rfi(c) ppc_emit32(c, (19 << 26) | (0 << 11) | (50 << 1) | 0) - -#define ppc_rlwimix(c,A,S,SH,MB,ME,Rc) ppc_emit32(c, (20 << 26) | (S << 21) | (A << 16) | (SH << 11) | (MB << 6) | (ME << 1) | Rc) -#define ppc_rlwimi(c,A,S,SH,MB,ME) ppc_rlwimix(c,A,S,SH,MB,ME,0) -#define ppc_rlwimid(c,A,S,SH,MB,ME) ppc_rlwimix(c,A,S,SH,MB,ME,1) - -#define ppc_rlwinmx(c,A,S,SH,MB,ME,Rc) ppc_emit32(c, (21 << 26) | ((S) << 21) | ((A) << 16) | ((SH) << 11) | ((MB) << 6) | ((ME) << 1) | (Rc)) -#define ppc_rlwinm(c,A,S,SH,MB,ME) ppc_rlwinmx(c,A,S,SH,MB,ME,0) -#define ppc_rlwinmd(c,A,S,SH,MB,ME) ppc_rlwinmx(c,A,S,SH,MB,ME,1) -#define ppc_extlwi(c,A,S,n,b) ppc_rlwinm(c,A,S, b, 0, (n) - 1) -#define ppc_extrwi(c,A,S,n,b) ppc_rlwinm(c,A,S, (b) + (n), 32 - (n), 31) -#define ppc_rotlwi(c,A,S,n) ppc_rlwinm(c,A,S, n, 0, 31) -#define ppc_rotrwi(c,A,S,n) ppc_rlwinm(c,A,S, 32 - (n), 0, 31) -#define ppc_slwi(c,A,S,n) ppc_rlwinm(c,A,S, n, 0, 31 - (n)) -#define ppc_srwi(c,A,S,n) ppc_rlwinm(c,A,S, 32 - (n), n, 31) -#define ppc_clrlwi(c,A,S,n) ppc_rlwinm(c,A,S, 0, n, 31) -#define ppc_clrrwi(c,A,S,n) ppc_rlwinm(c,A,S, 0, 0, 31 - (n)) -#define ppc_clrlslwi(c,A,S,b,n) ppc_rlwinm(c,A,S, n, (b) - (n), 31 - (n)) - -#define ppc_rlwnmx(c,A,S,SH,MB,ME,Rc) ppc_emit32(c, (23 << 26) | (S << 21) | (A << 16) | (SH << 11) | (MB << 6) | (ME << 1) | Rc) -#define ppc_rlwnm(c,A,S,SH,MB,ME) ppc_rlwnmx(c,A,S,SH,MB,ME,0) -#define ppc_rlwnmd(c,A,S,SH,MB,ME) ppc_rlwnmx(c,A,S,SH,MB,ME,1) - -#define ppc_sc(c) ppc_emit32(c, (17 << 26) | (0 << 2) | (1 << 1) | 0) - -#define ppc_slwx(c,S,A,B,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (24 << 1) | Rc) -#define ppc_slw(c,S,A,B) ppc_slwx(c,S,A,B,0) -#define ppc_slwd(c,S,A,B) ppc_slwx(c,S,A,B,1) - -#define ppc_srawx(c,A,S,B,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (792 << 1) | Rc) -#define ppc_sraw(c,A,S,B) ppc_srawx(c,A,S,B,0) -#define ppc_srawd(c,A,S,B) ppc_srawx(c,A,S,B,1) - -#define ppc_srawix(c,A,S,SH,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (SH << 11) | (824 << 1) | Rc) -#define ppc_srawi(c,A,S,B) ppc_srawix(c,A,S,B,0) -#define ppc_srawid(c,A,S,B) ppc_srawix(c,A,S,B,1) - -#define ppc_srwx(c,A,S,SH,Rc) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (SH << 11) | (536 << 1) | Rc) -#define ppc_srw(c,A,S,B) ppc_srwx(c,A,S,B,0) -#define ppc_srwd(c,A,S,B) ppc_srwx(c,A,S,B,1) - -#define ppc_stbu(c,S,d,A) ppc_emit32(c, (39 << 26) | (S << 21) | (A << 16) | (guint16)(d)) - -#define ppc_stbux(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (247 << 1) | 0) -#define ppc_stbx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (215 << 1) | 0) - -#define ppc_stfdu(c,S,d,A) ppc_emit32(c, (55 << 26) | (S << 21) | (A << 16) | (guint16)(d)) - -#define ppc_stfdx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (727 << 1) | 0) -#define ppc_stfiwx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (983 << 1) | 0) - -#define ppc_stfsu(c,S,d,A) ppc_emit32(c, (53 << 26) | (S << 21) | (A << 16) | (guint16)(d)) -#define ppc_stfsux(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (695 << 1) | 0) -#define ppc_stfsx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (663 << 1) | 0) -#define ppc_sthbrx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (918 << 1) | 0) -#define ppc_sthu(c,S,d,A) ppc_emit32(c, (45 << 26) | (S << 21) | (A << 16) | (guint16)(d)) -#define ppc_sthux(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (439 << 1) | 0) -#define ppc_sthx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (407 << 1) | 0) -#define ppc_stmw(c,S,d,A) ppc_emit32(c, (47 << 26) | (S << 21) | (A << 16) | (guint16)d) -#define ppc_stswi(c,S,A,NB) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (NB << 11) | (725 << 1) | 0) -#define ppc_stswx(c,S,A,NB) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (NB << 11) | (661 << 1) | 0) -#define ppc_stwbrx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (662 << 1) | 0) -#define ppc_stwcxd(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (150 << 1) | 1) -#define ppc_stwux(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (183 << 1) | 0) -#define ppc_stwx(c,S,A,B) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (151 << 1) | 0) - -#define ppc_subfx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (OE << 10) | (40 << 1) | Rc) -#define ppc_subf(c,D,A,B) ppc_subfx(c,D,A,B,0,0) -#define ppc_subfd(c,D,A,B) ppc_subfx(c,D,A,B,0,1) -#define ppc_subfo(c,D,A,B) ppc_subfx(c,D,A,B,1,0) -#define ppc_subfod(c,D,A,B) ppc_subfx(c,D,A,B,1,1) - -#define ppc_sub(c,D,A,B) ppc_subf(c,D,B,A) - -#define ppc_subfcx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (OE << 10) | (8 << 1) | Rc) -#define ppc_subfc(c,D,A,B) ppc_subfcx(c,D,A,B,0,0) -#define ppc_subfcd(c,D,A,B) ppc_subfcx(c,D,A,B,0,1) -#define ppc_subfco(c,D,A,B) ppc_subfcx(c,D,A,B,1,0) -#define ppc_subfcod(c,D,A,B) ppc_subfcx(c,D,A,B,1,1) - -#define ppc_subfex(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (B << 11) | (OE << 10) | (136 << 1) | Rc) -#define ppc_subfe(c,D,A,B) ppc_subfex(c,D,A,B,0,0) -#define ppc_subfed(c,D,A,B) ppc_subfex(c,D,A,B,0,1) -#define ppc_subfeo(c,D,A,B) ppc_subfex(c,D,A,B,1,0) -#define ppc_subfeod(c,D,A,B) ppc_subfex(c,D,A,B,1,1) - -#define ppc_subfic(c,D,A,SIMM) ppc_emit32(c, (8 << 26) | (D << 21) | (A << 16) | (guint16)(SIMM)) - -#define ppc_subfmex(c,D,A,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (0 << 11) | (OE << 10) | (232 << 1) | Rc) -#define ppc_subfme(c,D,A) ppc_subfmex(c,D,A,0,0) -#define ppc_subfmed(c,D,A) ppc_subfmex(c,D,A,0,1) -#define ppc_subfmeo(c,D,A) ppc_subfmex(c,D,A,1,0) -#define ppc_subfmeod(c,D,A) ppc_subfmex(c,D,A,1,1) - -#define ppc_subfzex(c,D,A,OE,Rc) ppc_emit32(c, (31 << 26) | (D << 21) | (A << 16) | (0 << 11) | (OE << 10) | (200 << 1) | Rc) -#define ppc_subfze(c,D,A) ppc_subfzex(c,D,A,0,0) -#define ppc_subfzed(c,D,A) ppc_subfzex(c,D,A,0,1) -#define ppc_subfzeo(c,D,A) ppc_subfzex(c,D,A,1,0) -#define ppc_subfzeod(c,D,A) ppc_subfzex(c,D,A,1,1) - -#define ppc_sync(c) ppc_emit32(c, (31 << 26) | (0 << 11) | (598 << 1) | 0) -#define ppc_tlbia(c) ppc_emit32(c, (31 << 26) | (0 << 11) | (370 << 1) | 0) -#define ppc_tlbie(c,B) ppc_emit32(c, (31 << 26) | (0 << 16) | (B << 11) | (306 << 1) | 0) -#define ppc_tlbsync(c) ppc_emit32(c, (31 << 26) | (0 << 11) | (566 << 1) | 0) - -#define ppc_tw(c,TO,A,B) ppc_emit32(c, (31 << 26) | (TO << 21) | (A << 16) | (B << 11) | (4 << 1) | 0) -#define ppc_twi(c,TO,A,SIMM) ppc_emit32(c, (3 << 26) | (TO << 21) | (A << 16) | (guint16)(SIMM)) - -#define ppc_xorx(c,A,S,B,RC) ppc_emit32(c, (31 << 26) | (S << 21) | (A << 16) | (B << 11) | (316 << 1) | RC) -#define ppc_xor(c,A,S,B) ppc_xorx(c,A,S,B,0) -#define ppc_xord(c,A,S,B) ppc_xorx(c,A,S,B,1) - -#define ppc_xori(c,S,A,UIMM) ppc_emit32(c, (26 << 26) | (S << 21) | (A << 16) | (guint16)(UIMM)) -#define ppc_xoris(c,S,A,UIMM) ppc_emit32(c, (27 << 26) | (S << 21) | (A << 16) | (guint16)(UIMM)) - -/* this marks the end of my work, ct */ - -/* PPC64 */ - -/* The following FP instructions are not are available to 32-bit - implementations (prior to PowerISA-V2.01 but are available to - 32-bit mode programs on 64-bit PowerPC implementations and all - processors compliant with PowerISA-2.01 or later. */ - -#define ppc_fcfidx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | ((D) << 21) | (0 << 16) | ((B) << 11) | (846 << 1) | (Rc)) -#define ppc_fcfid(c,D,B) ppc_fcfidx(c,D,B,0) -#define ppc_fcfidd(c,D,B) ppc_fcfidx(c,D,B,1) - -#define ppc_fctidx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | ((D) << 21) | (0 << 16) | ((B) << 11) | (814 << 1) | (Rc)) -#define ppc_fctid(c,D,B) ppc_fctidx(c,D,B,0) -#define ppc_fctidd(c,D,B) ppc_fctidx(c,D,B,1) - -#define ppc_fctidzx(c,D,B,Rc) ppc_emit32(c, (63 << 26) | ((D) << 21) | (0 << 16) | ((B) << 11) | (815 << 1) | (Rc)) -#define ppc_fctidz(c,D,B) ppc_fctidzx(c,D,B,0) -#define ppc_fctidzd(c,D,B) ppc_fctidzx(c,D,B,1) - -#ifdef __mono_ppc64__ - -#define ppc_load_sequence(c,D,v) G_STMT_START { \ - ppc_lis ((c), (D), ((guint64)(v) >> 48) & 0xffff); \ - ppc_ori ((c), (D), (D), ((guint64)(v) >> 32) & 0xffff); \ - ppc_sldi ((c), (D), (D), 32); \ - ppc_oris ((c), (D), (D), ((guint64)(v) >> 16) & 0xffff); \ - ppc_ori ((c), (D), (D), (guint64)(v) & 0xffff); \ - } G_STMT_END - -#define PPC_LOAD_SEQUENCE_LENGTH 20 - -#define ppc_is_imm32(val) (((((gint64)val)>> 31) == 0) || ((((gint64)val)>> 31) == -1)) -#define ppc_is_imm48(val) (((((gint64)val)>> 47) == 0) || ((((gint64)val)>> 47) == -1)) - -#define ppc_load48(c,D,v) G_STMT_START { \ - ppc_li ((c), (D), ((gint64)(v) >> 32) & 0xffff); \ - ppc_sldi ((c), (D), (D), 32); \ - ppc_oris ((c), (D), (D), ((guint64)(v) >> 16) & 0xffff); \ - ppc_ori ((c), (D), (D), (guint64)(v) & 0xffff); \ - } G_STMT_END - -#define ppc_load(c,D,v) G_STMT_START { \ - if (ppc_is_imm16 ((guint64)(v))) { \ - ppc_li ((c), (D), (guint16)(guint64)(v)); \ - } else if (ppc_is_imm32 ((guint64)(v))) { \ - ppc_load32 ((c), (D), (guint32)(guint64)(v)); \ - } else if (ppc_is_imm48 ((guint64)(v))) { \ - ppc_load48 ((c), (D), (guint64)(v)); \ - } else { \ - ppc_load_sequence ((c), (D), (guint64)(v)); \ - } \ - } G_STMT_END - -#define ppc_load_func(c,D,v) G_STMT_START { \ - ppc_load_sequence ((c), ppc_r11, (guint64)(gsize)(v)); \ - ppc_ldptr ((c), ppc_r2, sizeof (gpointer), ppc_r11); \ - ppc_ldptr ((c), (D), 0, ppc_r11); \ - } G_STMT_END - -#define ppc_load_multiple_regs(c,D,d,A) G_STMT_START { \ - int __i, __o = (d); \ - for (__i = (D); __i <= 31; ++__i) { \ - ppc_ldr ((c), __i, __o, (A)); \ - __o += sizeof (guint64); \ - } \ - } G_STMT_END - -#define ppc_store_multiple_regs(c,S,d,A) G_STMT_START { \ - int __i, __o = (d); \ - for (__i = (S); __i <= 31; ++__i) { \ - ppc_str ((c), __i, __o, (A)); \ - __o += sizeof (guint64); \ - } \ - } G_STMT_END - -#define ppc_compare(c,cfrD,A,B) ppc_cmp((c), (cfrD), 1, (A), (B)) -#define ppc_compare_reg_imm(c,cfrD,A,B) ppc_cmpi((c), (cfrD), 1, (A), (B)) -#define ppc_compare_log(c,cfrD,A,B) ppc_cmpl((c), (cfrD), 1, (A), (B)) - -#define ppc_shift_left(c,A,S,B) ppc_sld((c), (A), (S), (B)) -#define ppc_shift_left_imm(c,A,S,n) ppc_sldi((c), (A), (S), (n)) - -#define ppc_shift_right_imm(c,A,S,B) ppc_srdi((c), (A), (S), (B)) -#define ppc_shift_right_arith_imm(c,A,S,B) ppc_sradi((c), (A), (S), (B)) - -#define ppc_multiply(c,D,A,B) ppc_mulld((c), (D), (A), (B)) - -#define ppc_clear_right_imm(c,A,S,n) ppc_clrrdi((c), (A), (S), (n)) - -#define ppc_divdx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | ((OE) << 10) | (489 << 1) | (Rc)) -#define ppc_divd(c,D,A,B) ppc_divdx(c,D,A,B,0,0) -#define ppc_divdd(c,D,A,B) ppc_divdx(c,D,A,B,0,1) -#define ppc_divdo(c,D,A,B) ppc_divdx(c,D,A,B,1,0) -#define ppc_divdod(c,D,A,B) ppc_divdx(c,D,A,B,1,1) - -#define ppc_divdux(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | ((OE) << 10) | (457 << 1) | (Rc)) -#define ppc_divdu(c,D,A,B) ppc_divdux(c,D,A,B,0,0) -#define ppc_divdud(c,D,A,B) ppc_divdux(c,D,A,B,0,1) -#define ppc_divduo(c,D,A,B) ppc_divdux(c,D,A,B,1,0) -#define ppc_divduod(c,D,A,B) ppc_divdux(c,D,A,B,1,1) - -#define ppc_extswx(c,S,A,Rc) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | (0 << 11) | (986 << 1) | (Rc)) -#define ppc_extsw(c,A,S) ppc_extswx(c,S,A,0) -#define ppc_extswd(c,A,S) ppc_extswx(c,S,A,1) - -/* These move float to/from instuctions are only available on POWER6 in - native mode. These instruction are faster then the equivalent - store/load because they avoid the store queue and associated delays. - These instructions should only be used in 64-bit mode unless the - kernel preserves the 64-bit GPR on signals and dispatch in 32-bit - mode. The Linux kernel does not. */ -#define ppc_mftgpr(c,T,B) ppc_emit32(c, (31 << 26) | ((T) << 21) | (0 << 16) | ((B) << 11) | (735 << 1) | 0) -#define ppc_mffgpr(c,T,B) ppc_emit32(c, (31 << 26) | ((T) << 21) | (0 << 16) | ((B) << 11) | (607 << 1) | 0) - -#define ppc_ld(c,D,ds,A) ppc_emit32(c, (58 << 26) | ((D) << 21) | ((A) << 16) | ((guint32)(ds) & 0xfffc) | 0) -#define ppc_lwa(c,D,ds,A) ppc_emit32(c, (58 << 26) | ((D) << 21) | ((A) << 16) | ((ds) & 0xfffc) | 2) -#define ppc_ldarx(c,D,A,B) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (84 << 1) | 0) -#define ppc_ldu(c,D,ds,A) ppc_emit32(c, (58 << 26) | ((D) << 21) | ((A) << 16) | ((guint32)(ds) & 0xfffc) | 1) -#define ppc_ldux(c,D,A,B) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (53 << 1) | 0) -#define ppc_lwaux(c,D,A,B) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (373 << 1) | 0) -#define ppc_ldx(c,D,A,B) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (21 << 1) | 0) -#define ppc_lwax(c,D,A,B) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (341 << 1) | 0) - -#define ppc_mulhdx(c,D,A,B,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (0 << 10) | (73 << 1) | (Rc)) -#define ppc_mulhd(c,D,A,B) ppc_mulhdx(c,D,A,B,0) -#define ppc_mulhdd(c,D,A,B) ppc_mulhdx(c,D,A,B,1) -#define ppc_mulhdux(c,D,A,B,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | (0 << 10) | (9 << 1) | (Rc)) -#define ppc_mulhdu(c,D,A,B) ppc_mulhdux(c,D,A,B,0) -#define ppc_mulhdud(c,D,A,B) ppc_mulhdux(c,D,A,B,1) - -#define ppc_mulldx(c,D,A,B,OE,Rc) ppc_emit32(c, (31 << 26) | ((D) << 21) | ((A) << 16) | ((B) << 11) | ((OE) << 10) | (233 << 1) | (Rc)) -#define ppc_mulld(c,D,A,B) ppc_mulldx(c,D,A,B,0,0) -#define ppc_mulldd(c,D,A,B) ppc_mulldx(c,D,A,B,0,1) -#define ppc_mulldo(c,D,A,B) ppc_mulldx(c,D,A,B,1,0) -#define ppc_mulldod(c,D,A,B) ppc_mulldx(c,D,A,B,1,1) - -#define ppc_rldclx(c,A,S,B,MB,Rc) ppc_emit32(c, (30 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (ppc_split_5_1(MB) << 5) | (8 << 1) | (Rc)) -#define ppc_rldcl(c,A,S,B,MB) ppc_rldclx(c,A,S,B,MB,0) -#define ppc_rldcld(c,A,S,B,MB) ppc_rldclx(c,A,S,B,MB,1) -#define ppc_rotld(c,A,S,B) ppc_rldcl(c, A, S, B, 0) - -#define ppc_rldcrx(c,A,S,B,ME,Rc) ppc_emit32(c, (30 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (ppc_split_5_1(ME) << 5) | (9 << 1) | (Rc)) -#define ppc_rldcr(c,A,S,B,ME) ppc_rldcrx(c,A,S,B,ME,0) -#define ppc_rldcrd(c,A,S,B,ME) ppc_rldcrx(c,A,S,B,ME,1) - -#define ppc_rldicx(c,S,A,SH,MB,Rc) ppc_emit32(c, (30 << 26) | ((S) << 21) | ((A) << 16) | (ppc_split_5_1_5(SH) << 11) | (ppc_split_5_1(MB) << 5) | (2 << 2) | (ppc_split_5_1_1(SH) << 1) | (Rc)) -#define ppc_rldic(c,A,S,SH,MB) ppc_rldicx(c,S,A,SH,MB,0) -#define ppc_rldicd(c,A,S,SH,MB) ppc_rldicx(c,S,A,SH,MB,1) - -#define ppc_rldiclx(c,S,A,SH,MB,Rc) ppc_emit32(c, (30 << 26) | ((S) << 21) | ((A) << 16) | (ppc_split_5_1_5(SH) << 11) | (ppc_split_5_1(MB) << 5) | (0 << 2) | (ppc_split_5_1_1(SH) << 1) | (Rc)) -#define ppc_rldicl(c,A,S,SH,MB) ppc_rldiclx(c,S,A,SH,MB,0) -#define ppc_rldicld(c,A,S,SH,MB) ppc_rldiclx(c,S,A,SH,MB,1) -#define ppc_extrdi(c,A,S,n,b) ppc_rldicl(c,A,S, (b) + (n), 64 - (n)) -#define ppc_rotldi(c,A,S,n) ppc_rldicl(c,A,S, n, 0) -#define ppc_rotrdi(c,A,S,n) ppc_rldicl(c,A,S, 64 - (n), 0) -#define ppc_srdi(c,A,S,n) ppc_rldicl(c,A,S, 64 - (n), n) -#define ppc_clrldi(c,A,S,n) ppc_rldicl(c,A,S, 0, n) - -#define ppc_rldicrx(c,A,S,SH,ME,Rc) ppc_emit32(c, (30 << 26) | ((S) << 21) | ((A) << 16) | (ppc_split_5_1_5(SH) << 11) | (ppc_split_5_1(ME) << 5) | (1 << 2) | (ppc_split_5_1_1(SH) << 1) | (Rc)) -#define ppc_rldicr(c,A,S,SH,ME) ppc_rldicrx(c,A,S,SH,ME,0) -#define ppc_rldicrd(c,A,S,SH,ME) ppc_rldicrx(c,A,S,SH,ME,1) -#define ppc_extldi(c,A,S,n,b) ppc_rldicr(c, A, S, b, (n) - 1) -#define ppc_sldi(c,A,S,n) ppc_rldicr(c, A, S, n, 63 - (n)) -#define ppc_clrrdi(c,A,S,n) ppc_rldicr(c, A, S, 0, 63 - (n)) - -#define ppc_rldimix(c,S,A,SH,MB,Rc) ppc_emit32(c, (30 << 26) | ((S) << 21) | ((A) << 16) | (ppc_split_5_1_5(SH) << 11) | (ppc_split_5_1(MB) << 5) | (3 << 2) | (ppc_split_5_1_1(SH) << 1) | (Rc)) -#define ppc_rldimi(c,A,S,SH,MB) ppc_rldimix(c,S,A,SH,MB,0) -#define ppc_rldimid(c,A,S,SH,MB) ppc_rldimix(c,S,A,SH,MB,1) - -#define ppc_slbia(c) ppc_emit32(c, (31 << 26) | (0 << 21) | (0 << 16) | (0 << 11) | (498 << 1) | 0) -#define ppc_slbie(c,B) ppc_emit32(c, (31 << 26) | (0 << 21) | (0 << 16) | ((B) << 11) | (434 << 1) | 0) -#define ppc_sldx(c,S,A,B,Rc) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (27 << 1) | (Rc)) -#define ppc_sld(c,A,S,B) ppc_sldx(c,S,A,B,0) -#define ppc_sldd(c,A,S,B) ppc_sldx(c,S,A,B,1) - -#define ppc_sradx(c,S,A,B,Rc) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (794 << 1) | (Rc)) -#define ppc_srad(c,A,S,B) ppc_sradx(c,S,A,B,0) -#define ppc_sradd(c,A,S,B) ppc_sradx(c,S,A,B,1) -#define ppc_sradix(c,S,A,SH,Rc) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | (((SH) & 31) << 11) | (413 << 2) | (((SH) >> 5) << 1) | (Rc)) -#define ppc_sradi(c,A,S,SH) ppc_sradix(c,S,A,SH,0) -#define ppc_sradid(c,A,S,SH) ppc_sradix(c,S,A,SH,1) - -#define ppc_srdx(c,S,A,B,Rc) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (539 << 1) | (Rc)) -#define ppc_srd(c,A,S,B) ppc_srdx(c,S,A,B,0) -#define ppc_srdd(c,A,S,B) ppc_srdx(c,S,A,B,1) - -#define ppc_std(c,S,ds,A) ppc_emit32(c, (62 << 26) | ((S) << 21) | ((A) << 16) | ((guint32)(ds) & 0xfffc) | 0) -#define ppc_stdcxd(c,S,A,B) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (214 << 1) | 1) -#define ppc_stdu(c,S,ds,A) ppc_emit32(c, (62 << 26) | ((S) << 21) | ((A) << 16) | ((guint32)(ds) & 0xfffc) | 1) -#define ppc_stdux(c,S,A,B) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (181 << 1) | 0) -#define ppc_stdx(c,S,A,B) ppc_emit32(c, (31 << 26) | ((S) << 21) | ((A) << 16) | ((B) << 11) | (149 << 1) | 0) - -#else -/* Always true for 32-bit */ -#define ppc_is_imm32(val) (1) -#endif - -#endif diff --git a/FFTS/Sources/FFTS/src/arch/s390x/.gitignore b/FFTS/Sources/FFTS/src/arch/s390x/.gitignore deleted file mode 100644 index 341daec..0000000 --- a/FFTS/Sources/FFTS/src/arch/s390x/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/Makefile -/Makefile.in -/.libs -/.deps -/*.la -/*.lo diff --git a/FFTS/Sources/FFTS/src/arch/s390x/ChangeLog b/FFTS/Sources/FFTS/src/arch/s390x/ChangeLog deleted file mode 100644 index e756d35..0000000 --- a/FFTS/Sources/FFTS/src/arch/s390x/ChangeLog +++ /dev/null @@ -1,35 +0,0 @@ -2010-03-23 Neale Ferguson - - * s390x-codegen.h: Remove duplicate - -2009-06-24 Neale Ferguson - - * s390x-codegen.h: Add some new instructions. - -2007-04-12 Neale Ferguson - - * tramp.c: Add MONO_TYPE_PTR case. - -2007-01-23 Neale Ferguson - - * s390x-codegen.h: Add packed attribute to several instruction structures. - -2006-03-13 Neale Ferguson - - * s390x-codegen.h: Fix immediate checks. - -2006-01-06 Neale Ferguson - - * s390x-codegen.h: Add lpdbr instruction (OP_ABS). - -2006-01-03 Neale Ferguson - - * s390x-codegen.h: Add some new instructions. - -2004-12-15 Neale Ferguson - - * s390x-codegen.h: Add some new instructions (CS, CSG, CSY, CDS, CDSG, CDSY) - -2004-08-03 Neale Ferguson - - * s390x-codegen.h Makefile.am tramp.c: S/390 64-bit interpreter diff --git a/FFTS/Sources/FFTS/src/arch/s390x/Makefile.am b/FFTS/Sources/FFTS/src/arch/s390x/Makefile.am deleted file mode 100644 index ce7f470..0000000 --- a/FFTS/Sources/FFTS/src/arch/s390x/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ - -AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir) - -noinst_LTLIBRARIES = libmonoarch-s390x.la - -libmonoarch_s390x_la_SOURCES = tramp.c s390x-codegen.h - diff --git a/FFTS/Sources/FFTS/src/arch/s390x/s390x-codegen.h b/FFTS/Sources/FFTS/src/arch/s390x/s390x-codegen.h deleted file mode 100644 index 47e6564..0000000 --- a/FFTS/Sources/FFTS/src/arch/s390x/s390x-codegen.h +++ /dev/null @@ -1,997 +0,0 @@ -/* - Copyright (C) 2001 Radek Doulik -*/ - -#ifndef S390X_H -#define S390X_H -#include -#include -#include - -#define FLOAT_REGS 2 /* No. float registers for parms */ -#define GENERAL_REGS 5 /* No. general registers for parms */ - -#define ARG_BASE s390_r10 /* Register for addressing arguments*/ -#define STKARG \ - (i*(sizeof(stackval))) /* Displacement of ith argument */ - -#define MINV_POS 160 /* MonoInvocation stack offset */ -#define STACK_POS (MINV_POS - sizeof (stackval) * sig->param_count) -#define OBJ_POS 8 -#define TYPE_OFFSET (G_STRUCT_OFFSET (stackval, type)) - -#define MIN_CACHE_LINE 256 - -/*------------------------------------------------------------------*/ -/* Sequence to add an int/long long to parameters to stack_from_data*/ -/*------------------------------------------------------------------*/ -#define ADD_ISTACK_PARM(r, i) \ - if (reg_param < GENERAL_REGS-(r)) { \ - s390_lay (p, s390_r4, 0, STK_BASE, \ - local_start + (reg_param - this_flag) * sizeof(long)); \ - reg_param += (i); \ - } else { \ - s390_lay (p, s390_r4, 0, STK_BASE, \ - sz.stack_size + MINV_POS + stack_param * sizeof(long)); \ - stack_param += (i); \ - } - -/*------------------------------------------------------------------*/ -/* Sequence to add a float/double to parameters to stack_from_data */ -/*------------------------------------------------------------------*/ -#define ADD_RSTACK_PARM(i) \ - if (fpr_param < FLOAT_REGS) { \ - s390_lay (p, s390_r4, 0, STK_BASE, \ - float_pos + (fpr_param * sizeof(float) * (i))); \ - fpr_param++; \ - } else { \ - stack_param += (stack_param % (i)); \ - s390_lay (p, s390_r4, 0, STK_BASE, \ - sz.stack_size + MINV_POS + stack_param * sizeof(float) * (i)); \ - stack_param += (i); \ - } - -/*------------------------------------------------------------------*/ -/* Sequence to add a structure ptr to parameters to stack_from_data */ -/*------------------------------------------------------------------*/ -#define ADD_TSTACK_PARM \ - if (reg_param < GENERAL_REGS) { \ - s390_ly (p, s390_r4, 0, STK_BASE, \ - local_start + (reg_param - this_flag) * sizeof(long)); \ - reg_param++; \ - } else { \ - s390_ly (p, s390_r4, 0, STK_BASE, \ - sz.stack_size + MINV_POS + stack_param * sizeof(long)); \ - stack_param++; \ - } - -#define ADD_PSTACK_PARM(r, i) \ - if (reg_param < GENERAL_REGS-(r)) { \ - s390_lay (p, s390_r4, 0, STK_BASE, \ - local_start + (reg_param - this_flag) * sizeof(long)); \ - reg_param += (i); \ - } else { \ - s390_ly (p, s390_r4, 0, STK_BASE, \ - sz.stack_size + MINV_POS + stack_param * sizeof(long)); \ - stack_param++; \ - } - -typedef enum { - s390_r0 = 0, - s390_r1, - s390_r2, - s390_r3, - s390_r4, - s390_r5, - s390_r6, - s390_r7, - s390_r8, - s390_r9, - s390_r10, - s390_r11, - s390_r12, - s390_r13, - s390_r14, - s390_r15, -} S390IntRegister; - -typedef enum { - s390_f0 = 0, - s390_f1, - s390_f2, - s390_f3, - s390_f4, - s390_f5, - s390_f6, - s390_f7, - s390_f8, - s390_f9, - s390_f10, - s390_f11, - s390_f12, - s390_f13, - s390_f14, - s390_f15, -} S390FloatRegister; - -typedef enum { - s390_a0 = 0, - s390_a1, - s390_a2, - s390_a3, - s390_a4, - s390_a5, - s390_a6, - s390_a7, - s390_a8, - s390_a9, - s390_a10, - s390_a11, - s390_a12, - s390_a13, - s390_a14, - s390_a15, -} S390AccRegister; - -typedef enum { - s390_fpc = 256, -} S390SpecialRegister; - -#define s390_is_imm16(val) ((glong)val >= (glong) SHRT_MIN && \ - (glong)val <= (glong) SHRT_MAX) -#define s390_is_imm32(val) ((glong)val >= (glong) INT_MIN && \ - (glong)val <= (glong) INT_MAX) -#define s390_is_uimm16(val) ((glong)val >= 0 && (glong)val <= (glong) USHRT_MAX) -#define s390_is_uimm32(val) ((glong)val >= 0 && (glong)val <= (glong) UINT_MAX) -#define s390_is_uimm20(val) ((glong)val >= 0 && (glong)val <= 1048575) -#define s390_is_imm20(val) ((glong)val >= -524288 && (glong)val <= 524287) -#define s390_is_imm12(val) ((glong)val >= (glong)-4096 && \ - (glong)val <= (glong)4095) -#define s390_is_uimm12(val) ((glong)val >= 0 && (glong)val <= 4095) - -#define STK_BASE s390_r15 -#define S390_SP s390_r15 -#define S390_FP s390_r11 -#define S390_MINIMAL_STACK_SIZE 160 -#define S390_REG_SAVE_OFFSET 48 -#define S390_PARM_SAVE_OFFSET 16 -#define S390_RET_ADDR_OFFSET 112 -#define S390_FLOAT_SAVE_OFFSET 128 - -#define S390_CC_ZR 8 -#define S390_CC_NE 7 -#define S390_CC_NZ 7 -#define S390_CC_LT 4 -#define S390_CC_GT 2 -#define S390_CC_GE 11 -#define S390_CC_NM 11 -#define S390_CC_LE 13 -#define S390_CC_OV 1 -#define S390_CC_NO 14 -#define S390_CC_CY 3 -#define S390_CC_NC 12 -#define S390_CC_UN 15 - -#define s390_word(addr, value) do \ -{ \ - * (guint32 *) addr = (guint32) value; \ - addr += sizeof(guint32); \ -} while (0) - -#define s390_float(addr, value) do \ -{ \ - * (gfloat *) addr = (gfloat) value; \ - addr += sizeof(gfloat); \ -} while (0) - -#define s390_llong(addr, value) do \ -{ \ - * (guint64 *) addr = (guint64) value; \ - addr += sizeof(guint64); \ -} while (0) - -#define s390_double(addr, value) do \ -{ \ - * (gdouble *) addr = (gdouble) value; \ - addr += sizeof(gdouble); \ -} while (0) - -typedef struct { - short op; -} E_Format; - -typedef struct { - char op; - int im; -} I_Format; - -typedef struct { - char op; - char r1 : 4; - char r2 : 4; -} RR_Format; - -typedef struct { - short op; - char xx; - char r1 : 4; - char r2 : 4; -} RRE_Format; - -typedef struct { - short op; - char r1 : 4; - char xx : 4; - char r3 : 4; - char r2 : 4; -} RRF_Format_1; - -typedef struct { - short op; - char m3 : 4; - char xx : 4; - char r1 : 4; - char r2 : 4; -} RRF_Format_2; - -typedef struct { - short op; - char r3 : 4; - char m4 : 4; - char r1 : 4; - char r2 : 4; -} RRF_Format_3; - -typedef struct { - char op; - char r1 : 4; - char x2 : 4; - char b2 : 4; - short d2 : 12; -} RX_Format; - -typedef struct { - char op1; - char r1 : 4; - char x2 : 4; - char b2 : 4; - int d2 : 12; - char xx; - char op2; -} RXE_Format; - -typedef struct { - char op1; - char r3 : 4; - char x2 : 4; - char b2 : 4; - int d2 : 12; - char r1 : 4; - char xx : 4; - char op2; -} RXF_Format; - -typedef struct { - char op1; - char r1 : 4; - char x2 : 4; - char b2 : 4; - int d2 : 20; - char op2; -} __attribute__ ((packed)) RXY_Format; - -typedef struct { - char op; - char r1 : 4; - char r3 : 4; - char b2 : 4; - int d2 : 12; -} RS_Format_1; - -typedef struct { - char op; - char r1 : 4; - char m3 : 4; - char b2 : 4; - int d2 : 12; -} RS_Format_2; - -typedef struct { - char op; - char r1 : 4; - char xx : 4; - char b2 : 4; - int d2 : 12; -} RS_Format_3; - -typedef struct { - char op1; - char r1 : 4; - char r3 : 4; - char b2 : 4; - int d2 : 20; - char op2; -} __attribute__ ((packed)) RSY_Format_1; - -typedef struct { - char op1; - char r1 : 4; - char m3 : 4; - char b2 : 4; - int d2 : 20; - char op2; -} __attribute__ ((packed)) RSY_Format_2; - -typedef struct { - char op1; - char l1 : 4; - char xx : 4; - char b1 : 4; - int d1 : 12; - char yy; - char op2; -} RSL_Format; - -typedef struct { - char op; - char r1 : 4; - char r3 : 4; - short i2; -} RSI_Format; - -typedef struct { - char op1; - char m1 : 4; - char op2 : 4; - short i2; -} RI_Format; - -typedef struct { - char op1; - char r1 : 4; - char r3 : 4; - short i2; - char xx; - char op2; -} RIE_Format_1; - -typedef struct { - char op1; - char r1 : 4; - char r3 : 4; - short i2; - char m2 : 4; - char xx : 4; - char op2; -} RIE_Format_2; - -typedef struct { - char op1; - char r1 : 4; - char r3 : 4; - short d; - char i; - char op2; -} RIE_Format_3; - -typedef struct { - char op1; - char r1 : 4; - char yy : 4; - short i2; - char m3 : 4; - char xx : 4; - char op2; -} RIE_Format_4; - -typedef struct { - char op1; - char r1 : 4; - char op2 : 4; - int i2; -} __attribute__ ((packed)) RIL_Format_1; - -typedef struct { - char op1; - char m1 : 4; - char op2 : 4; - int i2; -} __attribute__ ((packed)) RIL_Format_2; - -typedef struct { - char op; - char i2; - char b1 : 4; - short d1 : 12; -} SI_Format; - -typedef struct { - char op1; - char i2; - char b1 : 4; - int d1 : 20; - char op2; -} __attribute__ ((packed)) SIY_Format; - -typedef struct { - short op; - char b2 : 4; - short d2 : 12; -} S_Format; - -typedef struct { - char op; - char ll; - char b1 : 4; - short d1 : 12; - char b2 : 4; - short d2 : 12; -} SS_Format_1; - -typedef struct { - char op; - char l1 : 4; - char l2 : 4; - char b1 : 4; - short d1 : 12; - char b2 : 4; - short d2 : 12; -} SS_Format_2; - -typedef struct { - char op; - char r1 : 4; - char r3 : 4; - char b1 : 4; - short d1 : 12; - char b2 : 4; - short d2 : 12; -} SS_Format_3; - -typedef struct { - char op; - char r1 : 4; - char r3 : 4; - char b2 : 4; - short d2 : 12; - char b4 : 4; - short d4 : 12; -} SS_Format_4; - -typedef struct { - short op; - short tb1 : 4; - short d1 : 12; - short b2 : 4; - short d2 : 12; -} __attribute__ ((packed)) SSE_Format; - -typedef struct { - short op; - char r3 : 4; - char o2 : 4; - short b1 : 4; - short d1 : 12; - short b2 : 4; - short d2 : 12; -} __attribute__ ((packed)) SSF_Format; - -#define s390_emit16(c, x) do \ -{ \ - *((guint16 *) c) = (guint16) x; \ - c += sizeof(guint16); \ -} while(0) - -#define s390_emit32(c, x) do \ -{ \ - *((guint32 *) c) = (guint32) x; \ - c += sizeof(guint32); \ -} while(0) - -#define S390_E(c,opc) s390_emit16(c,opc) - -#define S390_I(c,opc,imm) s390_emit16(c, (opc << 8 | imm)) - -#define S390_RR(c,opc,g1,g2) s390_emit16(c, (opc << 8 | (g1) << 4 | g2)) - -#define S390_RRE(c,opc,g1,g2) s390_emit32(c, (opc << 16 | (g1) << 4 | g2)) - -#define S390_RRF_1(c,opc,g1,g2,g3) s390_emit32(c, (opc << 16 | (g1) << 12 | (g3) << 4 | g2)) - -#define S390_RRF_2(c,opc,g1,k3,g2) s390_emit32(c, (opc << 16 | (k3) << 12 | (g1) << 4 | g2)) - -#define S390_RRF_3(c,opc,g1,g2,k4,g3) s390_emit32(c, (opc << 16 | (g3) << 12 | (k4) << 8 | (g1) << 4 | g2)) - -#define S390_RX(c,opc,g1,n2,s2,p2) s390_emit32(c, (opc << 24 | (g1) << 20 | (n2) << 16 | (s2) << 12 | ((p2) & 0xfff))) - -#define S390_RXE(c,opc,g1,n2,s2,p2) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2)); \ - s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) | \ - (opc & 0xff))); \ -} while (0) - -#define S390_RXY(c,opc,g1,n2,s2,p2) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2)); \ - s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) | \ - ((((p2) & 0xff000) >> 12) << 8) | \ - (opc & 0xff))); \ -} while (0) - -#define S390_RS_1(c,opc,g1,g3,s2,p2) s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (s2) << 12 | ((p2) & 0xfff))) - -#define S390_RS_2(c,opc,g1,k3,s2,p2) s390_emit32(c, (opc << 24 | (g1) << 20 | (k3) << 16 | (s2) << 12 | ((p2) & 0xfff))) - -#define S390_RS_3(c,opc,g1,s2,p2) s390_emit32(c, (opc << 24 | (g1) << 20 | (s2) << 12 | ((p2) & 0xfff))) - -#define S390_RSY_1(c,opc,g1,g3,s2,p2) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3)); \ - s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) | \ - ((((p2) & 0xff000) >> 12) << 8) | \ - (opc & 0xff))); \ -} while (0) - -#define S390_RSY_2(c,opc,g1,k3,s2,p2) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | k3)); \ - s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) | \ - ((((p2) & 0xff000) >> 12) << 8) | \ - (opc & 0xff))); \ -} while (0) - -#define S390_RSL(c,opc,ln,s1,p1) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (ln) << 4)); \ - s390_emit32(c, ((s1) << 28 | ((s1 & 0xfff) << 16) | \ - (opc & 0xff))); \ -} while (0) - -#define S390_RSI(c,opc,g1,g3,m2) s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (m2 & 0xffff))) - -#define S390_RI(c,opc,g1,m2) s390_emit32(c, ((opc >> 4) << 24 | (g1) << 20 | (opc & 0x0f) << 16 | (m2 & 0xffff))) - -#define S390_RIE_1(c,opc,g1,g3,m2) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3)); \ - s390_emit32(c, ((m2) << 16 | (opc & 0xff))); \ -} while (0) - -#define S390_RIE_2(c,opc,g1,g2,m3,v) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3)); \ - s390_emit16(c, (v)); \ - s390_emit16(c, ((m2) << 12 | (opc & 0xff))); \ -} while (0) - -#define S390_RIE_3(c,opc,g1,i,m3,d) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | m3)); \ - s390_emit16(c, (d)); \ - s390_emit16(c, ((i) << 8 | (opc & 0xff))); \ -} while (0) - -#define S390_RIE_4(c,opc,g1,i2,m3) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | (g1) << 4); \ - s390_emit16(c, (i2)); \ - s390_emit16(c, ((m3) << 12 | (opc & 0xff))); \ -} while (0) - -#define S390_RIL_1(c,opc,g1,m2) do \ -{ \ - s390_emit16(c, ((opc >> 4) << 8 | (g1) << 4 | (opc & 0xf))); \ - s390_emit32(c, m2); \ -} while (0) - -#define S390_RIL_2(c,opc,k1,m2) do \ -{ \ - s390_emit16(c, ((opc >> 4) << 8 | (k1) << 4 | (opc & 0xf))); \ - s390_emit32(c, m2); \ -} while (0) - -#define S390_RIS(c,opc,r,i,m3,b,d) do \ -{ \ - s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2)); \ - s390_emit16(c, ((b) << 12) | (d)); \ - s390_emit16(c, ((i) << 4) | ((opc) & 0xff)); \ -} - -#define S390_RRS(c,opc,r1,r2,m3,b,d) do \ -{ \ - s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2)); \ - s390_emit16(c, ((b) << 12) | (d)); \ - s390_emit16(c, ((m3) << 12) | ((opc) & 0xff)); \ -} - -#define S390_SI(c,opc,s1,p1,m2) s390_emit32(c, (opc << 24 | (m2) << 16 | (s1) << 12 | ((p1) & 0xfff))); - -#define S390_SIY(c,opc,s1,p1,m2) do \ -{ \ - s390_emit16(c, ((opc & 0xff00) | m2)); \ - s390_emit32(c, ((s1) << 24 | (((p2) & 0xfffff) << 8) | \ - (opc & 0xff))); \ -} while (0) - -#define S390_S(c,opc,s2,p2) s390_emit32(c, (opc << 16 | (s2) << 12 | ((p2) & 0xfff))) - -#define S390_SS_1(c,opc,ln,s1,p1,s2,p2) do \ -{ \ - s390_emit32(c, (opc << 24 | ((ln-1) & 0xff) << 16 | \ - (s1) << 12 | ((p1) & 0xfff))); \ - s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff))); \ -} while (0) - -#define S390_SS_2(c,opc,n1,n2,s1,p1,s2,p2) do \ -{ \ - s390_emit32(c, (opc << 24 | (n1) << 16 | (n2) << 12 | \ - (s1) << 12 | ((p1) & 0xfff))); \ - s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff))); \ -} while (0) - -#define S390_SS_3(c,opc,g1,g3,s1,p1,s2,p2) do \ -{ \ - s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 | \ - (s1) << 12 | ((p1) & 0xfff))); \ - s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff))); \ -} while (0) - -#define S390_SS_4(c,opc,g1,g3,s2,p2,s4,p4) do \ -{ \ - s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 | \ - (s2) << 12 | ((p2) & 0xfff))); \ - s390_emit16(c, ((s4) << 12 | ((p4) & 0xfff))); \ -} while (0) - -#define S390_SSE(c,opc,s1,p1,s2,p2) do \ -{ \ - s390_emit16(c, opc); \ - s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff))); \ - s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff))); \ -} while (0) - -#define S390_SSF(c,opc,r3,s1,p1,s2,p2) do \ -{ \ - s390_emit16(c, (((opc) & 0xff00) << 8) | ((r3) << 4) | \ - ((opc) & 0xf)); \ - s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff))); \ - s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff))); \ -} while (0) - -#define s390_a(c, r, x, b, d) S390_RX(c, 0x5a, r, x, b, d) -#define s390_adb(c, r, x, b, d) S390_RXE(c, 0xed1a, r, x, b, d) -#define s390_adbr(c, r1, r2) S390_RRE(c, 0xb31a, r1, r2) -#define s390_aebr(c, r1, r2) S390_RRE(c, 0xb30a, r1, r2) -#define s390_afi(c, r, v) S390_RIL_1(c, 0xc29, r, v); -#define s390_ag(c, r, x, b, d) S390_RXY(c, 0xe308, r, x, b, d) -#define s390_agf(c, r, x, b, d) S390_RXY(c, 0xe318, r, x, b, d) -#define s390_agfi(c, r, v) S390_RIL_1(c, 0xc28, r, v) -#define s390_afgr(c, r1, r2) S390_RRE(c, 0xb918, r1, r2) -#define s390_aghi(c, r, v) S390_RI(c, 0xa7b, r, v) -#define s390_aghik(c, r, v) S390_RIE_1(c, 0xecd9, r, v) -#define s390_agr(c, r1, r2) S390_RRE(c, 0xb908, r1, r2) -#define s390_agrk(c, r1, r2, r3) S390_RRF_1(c, 0xb9e8, r1, r2, r3) -#define s390_agsi(c, r, v) S390_SIY(c, 0xeb7a, r v) -#define s390_ahhhr(c, r1, r2, r3) S390_RRF_1(c, 0xb9c8, r1, r2, r3) -#define s390_ahhlr(c, r1, r2, r3) S390_RRF_1(c, 0xb9d8, r1, r2, r3) -#define s390_ahi(c, r, v) S390_RI(c, 0xa7a, r, v) -#define s390_ahik(c, r, v) S390_RIE_1(c, 0xecd8, r, v) -#define s390_ahy(c, r, x, b, d) S390_RXY(c, 0xe37a, r, b, d) -#define s390_aih(c, r, v) S390_RIL_1(c, 0xcc8, r, v) -#define s390_al(c, r, x, b, d) S390_RX(c, 0x5e, r, x, b, d) -#define s390_alc(c, r, x, b, d) S390_RXY(c, 0xe398, r, x, b, d) -#define s390_alcg(c, r, x, b, d) S390_RXY(c, 0xe388, r, x, b, d) -#define s390_alcgr(c, r1, r2) S390_RRE(c, 0xb988, r1, r2) -#define s390_alcr(c, r1, r2) S390_RRE(c, 0xb998, r1, r2) -#define s390_alfi(c, r, v) S390_RIL_1(c, 0xc2b, r, v) -#define s390_alg(c, r, x, b, d) S390_RXY(c, 0xe30a, r, x, b, d) -#define s390_algf(c, r, x, b, d) S390_RXY(c, 0xe31a, r, x, b, d) -#define s390_algfi(c, r, v) S390_RIL_1(c, 0xc2a, r, v) -#define s390_algfr(c, r1, r2) S390_RRE(c, 0xb91a, r1, r2) -#define s390_alghsik(c, r, v) S390_RIE_1(c, 0xecd8, r, v) -#define s390_algr(c, r1, r2) S390_RRE(c, 0xb90a, r1, r2) -#define s390_algsi(c, r, v) S390_SIY(c, 0xeb7e, r, v) -#define s390_alhhhr(c, r1, r2, r3) S390_RRF_1(c, 0xb9ca, r1, r2, r3) -#define s390_alhhlr(c, r1, r2, r3) S390_RRF_1(c, 0xb9da, r1, r2, r3) -#define s390_alhsik(c, r, v) S390_RIE_1(c, 0xecda, r, v) -#define s390_alr(c, r1, r2) S390_RR(c, 0x1e, r1, r2) -#define s390_alrk(c, r1, r2) S390_RRF(c, 0xb9fa, r1, r2) -#define s390_alsi(c, r, v) S390_SIY(c, 0xeb6e, r, v) -#define s390_alsih(c, r, v) S390_RIL_1(c, 0xcca, r, v) -#define s390_alsihn(c, r, v) S390_RIL_1(c, 0xccb, r, v) -#define s390_aly(c, r, x, b, d) S390_RXY(c, 0xe35e, r, x, b, d) -#define s390_ar(c, r1, r2) S390_RR(c, 0x1a, r1, r2) -#define s390_ark(c, r1, r2, r3) S390_RRF_1(c, 0xb9f8, r1, r2, r3) -#define s390_asi(c, r, v) S390_SIY(c, 0xeb6a, r, v) -#define s390_ay(c, r, x, b, d) S390_RXY(c, 0xe35a, r, x, b, d) -#define s390_basr(c, r1, r2) S390_RR(c, 0x0d, r1, r2) -#define s390_bctr(c, r1, r2) S390_RR(c, 0x06, r1, r2) -#define s390_bctrg(c, r1, r2) S390_RRE(c, 0xb946, r1, r2) -#define s390_bnzr(c, r) S390_RR(c, 0x07, 0x07, r) -#define s390_bras(c, r, o) S390_RI(c, 0xa75, r, o) -#define s390_brasl(c, r, o) S390_RIL_1(c, 0xc05, r, o) -#define s390_brc(c, m, d) S390_RI(c, 0xa74, m, d) -#define s390_brcl(c, m, d) S390_RIL_2(c, 0xc04, m, d) -#define s390_br(c, r) S390_RR(c, 0x07, 0xf, r) -#define s390_break(c) S390_RR(c, 0, 0, 0) -#define s390_bzr(c, r) S390_RR(c, 0x07, 0x08, r) -#define s390_c(c, r, x, b, d) S390_RX(c, 0x59, r, x, b, d) -#define s390_cdb(c, r, x, b, d) S390_RXE(c, 0xed19, r, x, b, d) -#define s390_cdbr(c, r1, r2) S390_RRE(c, 0xb319, r1, r2) -#define s390_cdfbr(c, r1, r2) S390_RRE(c, 0xb395, r1, r2) -#define s390_cdgbr(c, r1, r2) S390_RRE(c, 0xb3a5, r1, r2) -#define s390_cds(c, r1, r2, b, d) S390_RX(c, 0xbb, r1, r2, b, d) -#define s390_cdsg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb3e, r1, r2, b, d) -#define s390_cdsy(c, r1, r2, b, d) S390_RSY_1(c, 0xeb31, r1, r2, b, d) -#define s390_cebr(c, r1, r2) S390_RRE(c, 0xb309, r1, r2) -#define s390_cegbr(c, r1, r2) S390_RRE(c, 0xb3a4, r1, r2) -#define s390_cfdbr(c, r1, m, r2) S390_RRF_2(c, 0xb399, r1, m, r2) -#define s390_cfi(c, r, v) S390_RIL_1(c, 0xc2d, r, v) -#define s390_cgdbr(c, r1, m, r2) S390_RRF_2(c, 0xb3a9, r1, m, r2) -#define s390_cg(c, r, x, b, d) S390_RXY(c, 0xe320, r, x, b, d) -#define s390_cgfi(c, r, v) S390_RIL_1(c, 0xc2c, r, v) -#define s390_cgfrl(c, r, v) S390_RIL_1(c, 0xc6c, r, v) -#define s390_cghi(c, r, i) S390_RI(c, 0xa7f, r, i) -#define s390_cgib(c, r, i, m, b, d) S390_RIS(c, 0xecfc, r, i, m, b, d) -#define s390_cgij(c, r, i, m, d) S390_RIE_3(c, 0xec7c, r, i, m, d) -#define s390_cgit(c, r, i, m) S390_RIE_4(c, 0xec70, r, i m); -#define s390_cgr(c, r1, r2) S390_RRE(c, 0xb920, r1, r2) -#define s390_cgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece4, r1, r2, m3, b, d) -#define s390_cgrj(c, r1, r2, m3, v) S390_RIE_2(c, 0xec64, r1, r2, m3, v) -#define s390_cgrl(c, r, v) S390_RIL_1(c, 0xc68, r, v) -#define s390_chi(c, r, i) S390_RI(c, 0xa7e, r, i) -#define s390_cib(c, r, i, m, b, d) S390_RIS(c, 0xecfe, r, i, m, b, d) -#define s390_cij(c, r, i, m, d) S390_RIE_3(c, 0xec7e, r, i, m, d) -#define s390_cit(c, r, i, m) S390_RIE_4(c, 0xec72, r, i m); -#define s390_cl(c, r, x, b, d) S390_RX(c, 0x55, r, x, b, d) -#define s390_clg(c, r, x, b, d) S390_RXY(c, 0xe321, r, x, b, d) -#define s390_clgib(c, r, i, m, b, d) S390_RIS(c, 0xecfd, r, i, m, b, d) -#define s390_clgij(c, r, i, b) S390_RIE_3(c, 0xec7d, r, i, m, d) -#define s390_clgr(c, r1, r2) S390_RRE(c, 0xb921, r1, r2) -#define s390_clgrj(c, r1, r2, m, v) S390_RIE_2(c, 0xec65, r1, r2, m, v) -#define s390_clgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece5, r1, r2, m3, b, d) -#define s390_clib(c, r, i, m, b, d) S390_RIS(c, 0xecff, r, i, m, b, d) -#define s390_clij(c, r, i, b) S390_RIE_3(c, 0xec7f, r, i, m, d) -#define s390_clr(c, r1, r2) S390_RR(c, 0x15, r1, r2) -#define s390_clrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xecf7, r1, r2, m3, b, d) -#define s390_clrj(c, r1, r2, m, v) S390_RIE_2(c, 0xec77, r1, r2, m, v) -#define s390_cr(c, r1, r2) S390_RR(c, 0x19, r1, r2) -#define s390_crb(c, r1, r2, m3, b, d) S390_RRS(c, 0xecf6, r1, r2, m3, b, d) -#define s390_crj(c, r1, r2, m3, v) S390_RIE_2(c, 0xec76, r1, r2, m3, v) -#define s390_crl(c, r, v) S390_RIL_1(c, 0xc6d, r, v) -#define s390_crt(c, r1, r2, m3) S390_RRF_2(c, 0xb972, r1, r2, m3); -#define s390_cgrt(c, r1, r2, m3) S390_RRF_2(c, 0xb960, r1, r2, m3); -#define s390_cs(c, r1, r2, b, d) S390_RX(c, 0xba, r1, r2, b, d) -#define s390_csg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb30, r1, r2, b, d) -#define s390_csst(c, d1, b1, d2, b2, r) S390_SSF(c, 0xc82, b1, d1, b2, d2, r) -#define s390_csy(c, r1, r2, b, d) S390_RSY_1(c, 0xeb14, r1, r2, b, d) -#define s390_ddbr(c, r1, r2) S390_RRE(c, 0xb31d, r1, r2) -#define s390_debr(c, r1, r2) S390_RRE(c, 0xb30d, r1, r2) -#define s390_didbr(c, r1, r2, m, r3) S390_RRF_3(c, 0xb35b, r1, r2, m, r3) -#define s390_dlgr(c, r1, r2) S390_RRE(c, 0xb987, r1, r2) -#define s390_dlr(c, r1, r2) S390_RRE(c, 0xb997, r1, r2) -#define s390_dr(c, r1, r2) S390_RR(c, 0x1d, r1, r2) -#define s390_dsgfr(c, r1, r2) S390_RRE(c, 0xb91d, r1, r2) -#define s390_dsgr(c, r1, r2) S390_RRE(c, 0xb90d, r1, r2) -#define s390_ear(c, r1, r2) S390_RRE(c, 0xb24f, r1, r2) -#define s390_ic(c, r, x, b, d) S390_RX(c, 0x43, r, x, b, d) -#define s390_icm(c, r, m, b, d) S390_RX(c, 0xbf, r, m, b, d) -#define s390_icmy(c, r, x, b, d) S390_RXY(c, 0xeb81, r, x, b, d) -#define s390_icy(c, r, x, b, d) S390_RXY(c, 0xe373, r, x, b, d) -#define s390_iihf(c, r, v) S390_RIL_1(c, 0xc08, r, v) -#define s390_iihh(c, r, v) S390_RI(c, 0xa50, r, v) -#define s390_iihl(c, r, v) S390_RI(c, 0xa51, r, v) -#define s390_iilf(c, r, v) S390_RIL_1(c, 0xc09, r, v) -#define s390_iilh(c, r, v) S390_RI(c, 0xa52, r, v) -#define s390_iill(c, r, v) S390_RI(c, 0xa53, r, v) -#define s390_j(c,d) s390_brc(c, S390_CC_UN, d) -#define s390_jc(c, m, d) s390_brc(c, m, d) -#define s390_jcl(c, m, d) s390_brcl(c, m, d) -#define s390_jcy(c, d) s390_brc(c, S390_CC_CY, d) -#define s390_je(c, d) s390_brc(c, S390_CC_EQ, d) -#define s390_jeo(c, d) s390_brc(c, S390_CC_ZR|S390_CC_OV, d) -#define s390_jh(c, d) s390_brc(c, S390_CC_GT, d) -#define s390_jho(c, d) s390_brc(c, S390_CC_GT|S390_CC_OV, d) -#define s390_jl(c, d) s390_brc(c, S390_CC_LT, d) -#define s390_jlo(c, d) s390_brc(c, S390_CC_LT|S390_CC_OV, d) -#define s390_jm(c, d) s390_brc(c, S390_CC_LT, d) -#define s390_jnc(c, d) s390_brc(c, S390_CC_NC, d) -#define s390_jne(c, d) s390_brc(c, S390_CC_NZ, d) -#define s390_jnh(c, d) s390_brc(c, S390_CC_LE, d) -#define s390_jnl(c, d) s390_brc(c, S390_CC_GE, d) -#define s390_jnz(c, d) s390_brc(c, S390_CC_NZ, d) -#define s390_jo(c, d) s390_brc(c, S390_CC_OV, d) -#define s390_jno(c, d) s390_brc(c, S390_CC_NO, d) -#define s390_jp(c, d) s390_brc(c, S390_CC_GT, d) -#define s390_jz(c, d) s390_brc(c, S390_CC_ZR, d) -#define s390_jg(c,d) s390_brcl(c, S390_CC_UN, d) -#define s390_jgcy(c, d) s390_brcl(c, S390_CC_CY, d) -#define s390_jge(c, d) s390_brcl(c, S390_CC_EQ, d) -#define s390_jgeo(c, d) s390_brcl(c, S390_CC_ZR|S390_CC_OV, d) -#define s390_jgh(c, d) s390_brcl(c, S390_CC_GT, d) -#define s390_jgho(c, d) s390_brcl(c, S390_CC_GT|S390_CC_OV, d) -#define s390_jgl(c, d) s390_brcl(c, S390_CC_LT, d) -#define s390_jglo(c, d) s390_brcl(c, S390_CC_LT|S390_CC_OV, d) -#define s390_jgm(c, d) s390_brcl(c, S390_CC_LT, d) -#define s390_jgnc(c, d) s390_brcl(c, S390_CC_NC, d) -#define s390_jgne(c, d) s390_brcl(c, S390_CC_NZ, d) -#define s390_jgnh(c, d) s390_brcl(c, S390_CC_LE, d) -#define s390_jgnl(c, d) s390_brcl(c, S390_CC_GE, d) -#define s390_jgnz(c, d) s390_brcl(c, S390_CC_NZ, d) -#define s390_jgo(c, d) s390_brcl(c, S390_CC_OV, d) -#define s390_jgno(c, d) s390_brcl(c, S390_CC_NO, d) -#define s390_jgp(c, d) s390_brcl(c, S390_CC_GT, d) -#define s390_jgz(c, d) s390_brcl(c, S390_CC_ZR, d) -#define s390_l(c, r, x, b, d) S390_RX(c, 0x58, r, x, b, d) -#define s390_ly(c, r, x, b, d) S390_RXY(c, 0xe358, r, x, b, d) -#define s390_la(c, r, x, b, d) S390_RX(c, 0x41, r, x, b, d) -#define s390_lay(c, r, x, b, d) S390_RXY(c, 0xe371, r, x, b, d) -#define s390_lam(c, r1, r2, b, d) S390_RS_1(c, 0x9a, r1, r2, b, d) -#define s390_larl(c, r, o) S390_RIL_1(c, 0xc00, r, o) -#define s390_lb(c, r, x, b, d) S390_RXY(c, 0xe376, r, x, b, d) -#define s390_lbr(c, r1, r2) S390_RRE(c, 0xb926, r1, r2) -#define s390_lcdbr(c, r1, r2) S390_RRE(c, 0xb313, r1, r2) -#define s390_lcgr(c, r1, r2) S390_RRE(c, 0xb903, r1, r2) -#define s390_lcr(c, r1, r2) S390_RR(c, 0x13, r1, r2) -#define s390_ld(c, f, x, b, d) S390_RX(c, 0x68, f, x, b, d) -#define s390_ldy(c, r, x, b, d) S390_RXY(c, 0xed65, r, x, b, d) -#define s390_ldeb(c, r, x, b, d) S390_RXE(c, 0xed04, r, x, b, d) -#define s390_ldebr(c, r1, r2) S390_RRE(c, 0xb304, r1, r2) -#define s390_ldgr(c, r1, r2) S390_RRE(c, 0xb3c1, r1, r2) -#define s390_ldr(c, r1, r2) S390_RR(c, 0x28, r1, r2) -#define s390_le(c, f, x, b, d) S390_RX(c, 0x78, f, x, b, d) -#define s390_ledbr(c, r1, r2) S390_RRE(c, 0xb344, r1, r2) -#define s390_ler(c, r1, r2) S390_RR(c, 0x38, r1, r2) -#define s390_ley(c, r, x, b, d) S390_RXY(c, 0xed64, r, x, b, d) -#define s390_lg(c, r, x, b, d) S390_RXY(c, 0xe304, r, x, b, d) -#define s390_lgb(c, r, x, b, d) S390_RXY(c, 0xe377, r, x, b, d) -#define s390_lgbr(c, r1, r2) S390_RRE(c, 0xb906, r1, r2) -#define s390_lgdr(c, r1, r2) S390_RRE(c, 0xb3cd, r1, r2) -#define s390_lgf(c, r, x, b, d) S390_RXY(c, 0xe314, r, x, b, d) -#define s390_lgfi(c, r, v) S390_RIL_1(c, 0xc01, r, v) -#define s390_lgfrl(c, r1, d) S390_RIL_1(c, 0xc4c, r1, d) -#define s390_lgfr(c, r1, r2) S390_RRE(c, 0xb914, r1, r2) -#define s390_lgh(c, r, x, b, d) S390_RXY(c, 0xe315, r, x, b, d) -#define s390_lghi(c, r, v) S390_RI(c, 0xa79, r, v) -#define s390_lghr(c, r1, r2) S390_RRE(c, 0xb907, r1, r2) -#define s390_lgr(c, r1, r2) S390_RRE(c, 0xb904, r1, r2) -#define s390_lgrl(c, r1, d) S390_RIL_1(c, 0xc48, r1, d) -#define s390_lh(c, r, x, b, d) S390_RX(c, 0x48, r, x, b, d) -#define s390_lhr(c, r1, r2) S390_RRE(c, 0xb927, r1, r2) -#define s390_lhg(c, r, x, b, d) S390_RXY(c, 0xe315, r, x, b, d) -#define s390_lhi(c, r, v) S390_RI(c, 0xa78, r, v) -#define s390_lhy(c, r, x, b, d) S390_RXY(c, 0xe378, r, x, b, d) -#define s390_llcr(c, r1, r2) S390_RRE(c, 0xb994, r1, r2) -#define s390_llgc(c, r, x, b, d) S390_RXY(c, 0xe390, r, x, b, d) -#define s390_llgcr(c, r1, r2) S390_RRE(c, 0xb984, r1, r2) -#define s390_llgf(c, r, x, b, d) S390_RXY(c, 0xe316, r, x, b, d) -#define s390_llgfr(c, r1, r2) S390_RRE(c, 0xb916, r1, r2) -#define s390_llgh(c, r, x, b, d) S390_RXY(c, 0xe391, r, x, b, d) -#define s390_llghr(c, r1, r2) S390_RRE(c, 0xb985, r1, r2) -#define s390_llhr(c, r1, r2) S390_RRE(c, 0xb995, r1, r2) -#define s390_llihf(c, r, v) S390_RIL_1(c, 0xc0e, r, v) -#define s390_llihh(c, r, v) S390_RI(c, 0xa5c, r, v) -#define s390_llihl(c, r, v) S390_RI(c, 0xa5d, r, v) -#define s390_llilf(c, r, v) S390_RIL_1(c, 0xc0f, r, v) -#define s390_llilh(c, r, v) S390_RI(c, 0xa5e, r, v) -#define s390_llill(c, r, v) S390_RI(c, 0xa5f, r, v) -#define s390_lm(c, r1, r2, b, d) S390_RS_1(c, 0x98, r1, r2, b, d) -#define s390_lmg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb04, r1, r2, b, d) -#define s390_lndbr(c, r1, r2) S390_RRE(c, 0xb311, r1, r2) -#define s390_lngr(c, r1, r2) S390_RRE(c, 0xb901, r1, r2) -#define s390_lnr(c, r1, r2) S390_RR(c, 0x11, r1, r2) -#define s390_lpdbr(c, r1, r2) S390_RRE(c, 0xb310, r1, r2) -#define s390_lpgr(c, r1, r2) S390_RRE(c, 0xb900, r1, r2) -#define s390_lpr(c, r1, r2) S390_RR(c, 0x10, r1, r2) -#define s390_lr(c, r1, r2) S390_RR(c, 0x18, r1, r2) -#define s390_lrl(c, r1, d) S390_RIL_1(c, 0xc4d, r1, d) -#define s390_ltgfr(c, r1, r2) S390_RRE(c, 0xb912, r1, r2) -#define s390_ltgr(c, r1, r2) S390_RRE(c, 0xb902, r1, r2) -#define s390_ltr(c, r1, r2) S390_RR(c, 0x12, r1, r2) -#define s390_lzdr(c, r) S390_RRE(c, 0xb375, r, 0) -#define s390_lzer(c, r) S390_RRE(c, 0xb374, r, 0) -#define s390_m(c, r, x, b, d) S390_RX(c, 0x5c, r, x, b, d) -#define s390_mdbr(c, r1, r2) S390_RRE(c, 0xb31c, r1, r2) -#define s390_meebr(c, r1, r2) S390_RRE(c, 0xb317, r1, r2) -#define s390_mfy(c, r, x, b, d) S390_RXY(c, 0xe35c, r, x, b, d) -#define s390_mlgr(c, r1, r2) S390_RRE(c, 0xb986, r1, r2) -#define s390_mlr(c, r1, r2) S390_RRE(c, 0xb996, r1, r2) -#define s390_mr(c, r1, r2) S390_RR(c, 0x1c, r1, r2) -#define s390_ms(c, r, x, b, d) S390_RX(c, 0x71, r, x, b, d) -#define s390_msi(c, r, v) S390_RIL_1(c, 0xc21, r, v) -#define s390_msgfr(c, r1, r2) S390_RRE(c, 0xb91c, r1, r2) -#define s390_msgi(c, r, v) S390_RIL_1(c, 0xc20, r, v) -#define s390_msgr(c, r1, r2) S390_RRE(c, 0xb90c, r1, r2) -#define s390_msr(c, r1, r2) S390_RRE(c, 0xb252, r1, r2) -#define s390_mvc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2) -#define s390_mvcl(c, r1, r2) S390_RR(c, 0x0e, r1, r2) -#define s390_mvcle(c, r1, r3, d2, b2) S390_RS_1(c, 0xa8, r1, r3, d2, b2) -#define s390_n(c, r, x, b, d) S390_RX(c, 0x54, r, x, b, d) -#define s390_nc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd4, l, b1, d1, b2, d2) -#define s390_ng(c, r, x, b, d) S390_RXY(c, 0xe380, r, x, b, d) -#define s390_ngr(c, r1, r2) S390_RRE(c, 0xb980, r1, r2) -#define s390_ngrk(c, r1, r2, r3) S390_RRF_1(c, 0xb9e4, r1, r2, r3) -#define s390_ni(c, b, d, v) S390_SI(c, 0x94, b, d, v) -#define s390_nihf(c, r, v) S390_RIL_1(c, 0xc0a, r, v) -#define s390_nihh(c, r, v) S390_RI(c, 0xa54, r, v) -#define s390_nihl(c, r, v) S390_RI(c, 0xa55, r, v) -#define s390_nilf(c, r, v) S390_RIL_1(c, 0xc0b, r, v) -#define s390_nilh(c, r, v) S390_RI(c, 0xa56, r, v) -#define s390_nill(c, r, v) S390_RI(c, 0xa57, r, v) -#define s390_niy(c, b, d, v) S390_SIY(c, 0xeb54, b, d, v) -#define s390_nop(c) S390_RR(c, 0x07, 0x0, 0) -#define s390_nr(c, r1, r2) S390_RR(c, 0x14, r1, r2) -#define s390_nrk(c, r1, r2) S390_RRF_1(c, 0xb9f4, r1, r2) -#define s390_ny(c, r, x, b, d) S390_RRY(c, 0xe354, r1, r2) -#define s390_o(c, r, x, b, d) S390_RX(c, 0x56, r, x, b, d) -#define s390_oihf(c, r, v) S390_RIL_1(c, 0xc0c, r, v) -#define s390_oihh(c, r, v) S390_RI(c, 0xa58, r, v) -#define s390_oihl(c, r, v) S390_RI(c, 0xa59, r, v) -#define s390_oilf(c, r, v) S390_RIL_1(c, 0xc0d, r, v) -#define s390_oilh(c, r, v) S390_RI(c, 0xa5a, r, v) -#define s390_oill(c, r, v) S390_RI(c, 0xa5b` r, v) -#define s390_oiy(c, b, d, v) S390_SIY(c, 0xeb56 b, d, v) -#define s390_og(c, r, x, b, d) S390_RXY(c, 0xe381, r, x, b, d) -#define s390_ogr(c, r1, r2) S390_RRE(c, 0xb981, r1, r2) -#define s390_or(c, r1, r2) S390_RR(c, 0x16, r1, r2) -#define s390_s(c, r, x, b, d) S390_RX(c, 0x5b, r, x, b, d) -#define s390_sdb(c, r, x, b, d) S390_RXE(c, 0xed1b, r, x, b, d) -#define s390_sdbr(c, r1, r2) S390_RRE(c, 0xb31b, r1, r2) -#define s390_sebr(c, r1, r2) S390_RRE(c, 0xb30b, r1, r2) -#define s390_sg(c, r, x, b, d) S390_RXY(c, 0xe309, r, x, b, d) -#define s390_sgf(c, r, x, b, d) S390_RXY(c, 0xe319, r, x, b, d) -#define s390_sgr(c, r1, r2) S390_RRE(c, 0xb909, r1, r2) -#define s390_sl(c, r, x, b, d) S390_RX(c, 0x5f, r, x, b, d) -#define s390_sla(c, r, b, d) S390_RS_3(c, 0x8b, r, b, d) -#define s390_slag(c, r1, r2, b, d) S390_RSY_1(c, 0xeb0b, r1, r2, b, d) -#define s390_slbg(c, r, x, b, d) S390_RXY(c, 0xe389, r, x, b, d) -#define s390_slbgr(c, r1, r2) S390_RRE(c, 0xb989, r1, r2) -#define s390_slbr(c, r1, r2) S390_RRE(c, 0xb999, r1, r2) -#define s390_slda(c, r, b, d) S390_RS_3(c, 0x8f, r, b, d) -#define s390_sldl(c, r, b, d) S390_RS_3(c, 0x8d, r, b, d) -#define s390_slfi(c, r, v) S390_RIL_1(c, 0xc25, r, v) -#define s390_slg(c, r, x, b, d) S390_RXY(c, 0xe30b, r, x, b, d) -#define s390_slgf(c, r, x, b, d) S390_RXY(c, 0xe31b, r, x, b, d) -#define s390_slgfr(c, r1, r2) S390_RRE(c, 0xb91b, r1, r2) -#define s390_slgfi(c, r, v) S390_RIL_1(c, 0xc24, r, v) -#define s390_slgr(c, r1, r2) S390_RRE(c, 0xb90b, r1, r2) -#define s390_sll(c, r, b, d) S390_RS_3(c, 0x89, r, b, d) -#define s390_sllg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb0d, r1, r2, b, d) -#define s390_slr(c, r1, r2) S390_RR(c, 0x1f, r1, r2) -#define s390_sqdbr(c, r1, r2) S390_RRE(c, 0xb315, r1, r2) -#define s390_sqebr(c, r1, r2) S390_RRE(c, 0xb314, r1, r2) -#define s390_sra(c, r, b, d) S390_RS_3(c, 0x8a, r, b, d) -#define s390_srag(c, r1, r2, b, d) S390_RSY_1(c, 0xeb0a, r1, r2, b, d) -#define s390_sr(c, r1, r2) S390_RR(c, 0x1b, r1, r2) -#define s390_srda(c, r, b, d) S390_RS_3(c, 0x8e, r, b, d) -#define s390_srdl(c, r, b, d) S390_RS_3(c, 0x8c, r, b, d) -#define s390_srl(c, r, b, d) S390_RS_3(c, 0x88, r, b, d) -#define s390_srlg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb0c, r1, r2, b, d) -#define s390_st(c, r, x, b, d) S390_RX(c, 0x50, r, x, b, d) -#define s390_stam(c, r1, r2, b, d) S390_RS_1(c, 0x9b, r1, r2, b, d) -#define s390_stc(c, r, x, b, d) S390_RX(c, 0x42, r, x, b, d) -#define s390_stcm(c, r, m, b, d) S390_RX(c, 0xbe, r, m, b, d) -#define s390_stcmy(c, r, x, b, d) S390_RXY(c, 0xeb2d, r, x, b, d) -#define s390_stcy(c, r, x, b, d) S390_RXY(c, 0xe372, r, x, b, d) -#define s390_std(c, f, x, b, d) S390_RX(c, 0x60, f, x, b, d) -#define s390_stdy(c, r, x, b, d) S390_RXY(c, 0xed67, r, x, b, d) -#define s390_ste(c, f, x, b, d) S390_RX(c, 0x70, f, x, b, d) -#define s390_stey(c, r, x, b, d) S390_RXY(c, 0xed66, r, x, b, d) -#define s390_stfpc(c, b, d) S390_S(c, 0xb29c, b, d) -#define s390_stg(c, r, x, b, d) S390_RXY(c, 0xe324, r, x, b, d) -#define s390_sth(c, r, x, b, d) S390_RX(c, 0x40, r, x, b, d) -#define s390_sthy(c, r, x, b, d) S390_RXY(c, 0xe370, r, x, b, d) -#define s390_stm(c, r1, r2, b, d) S390_RS_1(c, 0x90, r1, r2, b, d) -#define s390_stmg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb24, r1, r2, b, d) -#define s390_sty(c, r, x, b, d) S390_RXY(c, 0xe350, r, x, b, d) -#define s390_tcdb(c, r, x, b, d) S390_RXE(c, 0xed11, r, x, b, d) -#define s390_tceb(c, r, x, b, d) S390_RXE(c, 0xed10, r, x, b, d) -#define s390_x(c, r, x, b, d) S390_RX(c, 0x57, r, x, b, d) -#define s390_xihf(c, r, v) S390_RIL_1(c, 0xc06, r, v) -#define s390_xilf(c, r, v) S390_RIL_1(c, 0xc07, r, v) -#define s390_xg(c, r, x, b, d) S390_RXY(c, 0xe382, r, x, b, d) -#define s390_xgr(c, r1, r2) S390_RRE(c, 0xb982, r1, r2) -#define s390_xr(c, r1, r2) S390_RR(c, 0x17, r1, r2) -#define s390_xy(c, r, x, b, d) S390_RXY(c, 0xe357, r, x, b, d) -#endif diff --git a/FFTS/Sources/FFTS/src/arch/s390x/tramp.c b/FFTS/Sources/FFTS/src/arch/s390x/tramp.c deleted file mode 100644 index fe9f310..0000000 --- a/FFTS/Sources/FFTS/src/arch/s390x/tramp.c +++ /dev/null @@ -1,1149 +0,0 @@ -/*------------------------------------------------------------------*/ -/* */ -/* Name - tramp.c */ -/* */ -/* Function - Create trampolines to invoke arbitrary functions. */ -/* */ -/* Name - Neale Ferguson. */ -/* */ -/* Date - October, 2002 */ -/* */ -/* */ -/*------------------------------------------------------------------*/ - -/*------------------------------------------------------------------*/ -/* D e f i n e s */ -/*------------------------------------------------------------------*/ - -#define PROLOG_INS 24 /* Size of emitted prolog */ -#define CALL_INS 4 /* Size of emitted call */ -#define EPILOG_INS 18 /* Size of emitted epilog */ - -#define DEBUG(x) - -/*========================= End of Defines =========================*/ - -/*------------------------------------------------------------------*/ -/* I n c l u d e s */ -/*------------------------------------------------------------------*/ - -#ifdef NEED_MPROTECT -# include -# include /* for PAGESIZE */ -# ifndef PAGESIZE -# define PAGESIZE 4096 -# endif -#endif - -#include "config.h" -#include -#include -#include "s390x-codegen.h" -#include "mono/metadata/class.h" -#include "mono/metadata/tabledefs.h" -#include "mono/interpreter/interp.h" -#include "mono/metadata/appdomain.h" -#include "mono/metadata/marshal.h" - -/*========================= End of Includes ========================*/ - -/*------------------------------------------------------------------*/ -/* T y p e d e f s */ -/*------------------------------------------------------------------*/ - -/*------------------------------------------------------------------*/ -/* Structure used to accummulate size of stack, code, and locals */ -/*------------------------------------------------------------------*/ -typedef struct { - guint stack_size, - local_size, - code_size, - retStruct; -} size_data; - -/*========================= End of Typedefs ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - add_general */ -/* */ -/* Function - Determine code and stack size incremements for a */ -/* parameter. */ -/* */ -/*------------------------------------------------------------------*/ - -static void inline -add_general (guint *gr, size_data *sz, gboolean simple) -{ - if (simple) { - if (*gr >= GENERAL_REGS) { - sz->stack_size += sizeof(long); - sz->code_size += 12; - } else { - sz->code_size += 8; - } - } else { - if (*gr >= GENERAL_REGS - 1) { - sz->stack_size += 8 + (sz->stack_size % 8); - sz->code_size += 10; - } else { - sz->code_size += 8; - } - (*gr) ++; - } - (*gr) ++; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - calculate_sizes */ -/* */ -/* Function - Determine the amount of space required for code */ -/* and stack. In addition determine starting points */ -/* for stack-based parameters, and area for struct- */ -/* ures being returned on the stack. */ -/* */ -/*------------------------------------------------------------------*/ - -static void inline -calculate_sizes (MonoMethodSignature *sig, size_data *sz, - gboolean string_ctor) -{ - guint i, fr, gr, size; - guint32 simpletype, align; - - fr = 0; - gr = 2; - sz->retStruct = 0; - sz->stack_size = S390_MINIMAL_STACK_SIZE; - sz->code_size = (PROLOG_INS + CALL_INS + EPILOG_INS); - sz->local_size = 0; - - if (sig->hasthis) { - add_general (&gr, sz, TRUE); - } - - /*----------------------------------------------------------*/ - /* We determine the size of the return code/stack in case we*/ - /* need to reserve a register to be used to address a stack */ - /* area that the callee will use. */ - /*----------------------------------------------------------*/ - - if (sig->ret->byref || string_ctor) { - sz->code_size += 8; - } else { - simpletype = sig->ret->type; -enum_retvalue: - switch (simpletype) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_CHAR: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_R4: - case MONO_TYPE_R8: - case MONO_TYPE_PTR: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_ARRAY: - case MONO_TYPE_STRING: - sz->code_size += 4; - break; - case MONO_TYPE_I8: - sz->code_size += 4; - break; - case MONO_TYPE_VALUETYPE: - if (sig->ret->data.klass->enumtype) { - simpletype = sig->ret->data.klass->enum_basetype->type; - goto enum_retvalue; - } - gr++; - if (sig->pinvoke) - size = mono_class_native_size (sig->ret->data.klass, &align); - else - size = mono_class_value_size (sig->ret->data.klass, &align); - if (align > 1) - sz->code_size += 10; - switch (size) { - /*----------------------------------*/ - /* On S/390, structures of size 1, */ - /* 2, 4, and 8 bytes are returned */ - /* in (a) register(s). */ - /*----------------------------------*/ - case 1: - case 2: - case 4: - case 8: - sz->code_size += 16; - sz->stack_size += 4; - break; - default: - sz->retStruct = 1; - sz->code_size += 32; - } - break; - case MONO_TYPE_VOID: - break; - default: - g_error ("Can't handle as return value 0x%x", sig->ret->type); - } - } - - /*----------------------------------------------------------*/ - /* We determine the size of the parameter code and stack */ - /* requirements by checking the types and sizes of the */ - /* parameters. */ - /*----------------------------------------------------------*/ - - for (i = 0; i < sig->param_count; ++i) { - if (sig->params [i]->byref) { - add_general (&gr, sz, TRUE); - continue; - } - simpletype = sig->params [i]->type; - enum_calc_size: - switch (simpletype) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_CHAR: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_PTR: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - add_general (&gr, sz, TRUE); - break; - case MONO_TYPE_SZARRAY: - add_general (&gr, sz, TRUE); - break; - case MONO_TYPE_VALUETYPE: - if (sig->params [i]->data.klass->enumtype) { - simpletype = sig->params [i]->data.klass->enum_basetype->type; - goto enum_calc_size; - } - if (sig->pinvoke) - size = mono_class_native_size (sig->params [i]->data.klass, &align); - else - size = mono_class_value_size (sig->params [i]->data.klass, &align); - DEBUG(printf("%d typesize: %d (%d)\n",i,size,align)); - switch (size) { - /*----------------------------------*/ - /* On S/390, structures of size 1, */ - /* 2, 4, and 8 bytes are passed in */ - /* (a) register(s). */ - /*----------------------------------*/ - case 0: - case 1: - case 2: - case 4: - add_general(&gr, sz, TRUE); - break; - case 8: - add_general(&gr, sz, FALSE); - break; - default: - sz->local_size += (size + (size % align)); - sz->code_size += 40; - } - break; - case MONO_TYPE_I8: - add_general (&gr, sz, FALSE); - break; - case MONO_TYPE_R4: - if (fr < FLOAT_REGS) { - sz->code_size += 4; - fr++; - } - else { - sz->code_size += 4; - sz->stack_size += 8; - } - break; - case MONO_TYPE_R8: - if (fr < FLOAT_REGS) { - sz->code_size += 4; - fr++; - } else { - sz->code_size += 4; - sz->stack_size += 8 + (sz->stack_size % 8); - } - break; - default: - g_error ("Can't trampoline 0x%x", sig->params [i]->type); - } - } - - - /* align stack size to 8 */ - DEBUG (printf (" stack size: %d (%d)\n" - " code size: %d\n" - " local size: %d\n", - (sz->stack_size + 8) & ~8, sz->stack_size, - (sz->code_size),(sz->local_size + 8) & ~8)); - sz->stack_size = (sz->stack_size + 8) & ~8; - sz->local_size = (sz->local_size + 8) & ~8; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - emit_prolog */ -/* */ -/* Function - Create the instructions that implement the stand- */ -/* ard function prolog according to the S/390 ABI. */ -/* */ -/*------------------------------------------------------------------*/ - -static inline guint8 * -emit_prolog (guint8 *p, MonoMethodSignature *sig, size_data *sz) -{ - guint stack_size; - - stack_size = sz->stack_size + sz->local_size; - - /* function prolog */ - s390_stmg(p, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET); - s390_lg (p, s390_r7, 0, STK_BASE, MINV_POS); - s390_lgr (p, s390_r11, STK_BASE); - s390_aghi(p, STK_BASE, -stack_size); - s390_stg (p, s390_r11, 0, STK_BASE, 0); - - /*-----------------------------------------*/ - /* Save: */ - /* - address of "callme" */ - /* - address of "retval" */ - /* - address of "arguments" */ - /*-----------------------------------------*/ - s390_lgr (p, s390_r9, s390_r2); - s390_lgr (p, s390_r8, s390_r3); - s390_lgr (p, s390_r10, s390_r5); - - return p; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - emit_save_parameters */ -/* */ -/* Function - Create the instructions that load registers with */ -/* parameters, place others on the stack according */ -/* to the S/390 ABI. */ -/* */ -/* The resulting function takes the form: */ -/* void func (void (*callme)(), void *retval, */ -/* void *this_obj, stackval *arguments); */ -/* */ -/*------------------------------------------------------------------*/ - -inline static guint8* -emit_save_parameters (guint8 *p, MonoMethodSignature *sig, size_data *sz) -{ - guint i, fr, gr, act_strs, align, - stack_par_pos, size, local_pos; - guint32 simpletype; - - /*----------------------------------------------------------*/ - /* If a structure on stack is being returned, reserve r2 */ - /* to point to an area where it can be passed. */ - /*----------------------------------------------------------*/ - if (sz->retStruct) - gr = 1; - else - gr = 0; - fr = 0; - act_strs = 0; - stack_par_pos = S390_MINIMAL_STACK_SIZE; - local_pos = sz->stack_size; - - if (sig->hasthis) { - s390_lr (p, s390_r2 + gr, s390_r4); - gr++; - } - - act_strs = 0; - for (i = 0; i < sig->param_count; ++i) { - DEBUG(printf("par: %d type: %d ref: %d\n",i,sig->params[i]->type,sig->params[i]->byref)); - if (sig->params [i]->byref) { - if (gr < GENERAL_REGS) { - s390_lg (p, s390_r2 + gr, 0, ARG_BASE, STKARG); - gr ++; - } else { - s390_lg (p, s390_r0, 0, ARG_BASE, STKARG); - s390_stg(p, s390_r0, 0, STK_BASE, stack_par_pos); - stack_par_pos += sizeof(long); - } - continue; - } - simpletype = sig->params [i]->type; - enum_calc_size: - switch (simpletype) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_CHAR: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_PTR: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - case MONO_TYPE_SZARRAY: - if (gr < GENERAL_REGS) { - s390_lg (p, s390_r2 + gr, 0, ARG_BASE, STKARG); - gr ++; - } else { - s390_lg (p, s390_r0, 0, ARG_BASE, STKARG); - s390_stg(p, s390_r0, 0, STK_BASE, stack_par_pos); - stack_par_pos += sizeof(long); - } - break; - case MONO_TYPE_VALUETYPE: - if (sig->params [i]->data.klass->enumtype) { - simpletype = sig->params [i]->data.klass->enum_basetype->type; - goto enum_calc_size; - } - if (sig->pinvoke) - size = mono_class_native_size (sig->params [i]->data.klass, &align); - else - size = mono_class_value_size (sig->params [i]->data.klass, &align); - DEBUG(printf("parStruct - size %d pinvoke: %d\n",size,sig->pinvoke)); - switch (size) { - case 0: - case 1: - case 2: - case 4: - if (gr < GENERAL_REGS) { - s390_lg (p, s390_r2 + gr, 0,ARG_BASE, STKARG); - s390_lgf(p, s390_r2 + gr, 0, s390_r2 + gr, 0); - gr++; - } else { - stack_par_pos += (stack_par_pos % align); - s390_lg (p, s390_r10, 0,ARG_BASE, STKARG); - s390_lgf(p, s390_r10, 0, s390_r10, 0); - s390_st (p, s390_r10, 0, STK_BASE, stack_par_pos); - stack_par_pos += sizeof(long); - } - break; - case 8: - if (gr < GENERAL_REGS) { - s390_lg (p, s390_r2 + gr, 0, ARG_BASE, STKARG); - s390_lg (p, s390_r2 + gr, 0, s390_r2 + gr, 0); - } else { - stack_par_pos += (stack_par_pos % align); - s390_lg (p, s390_r10, 0, ARG_BASE, STKARG); - s390_mvc (p, sizeof(long long), STK_BASE, stack_par_pos, s390_r10, 0); - stack_par_pos += sizeof(long long); - } - break; - default: - if (size <= 256) { - local_pos += (local_pos % align); - s390_lg (p, s390_r13, 0, ARG_BASE, STKARG); - s390_mvc (p, size, STK_BASE, local_pos, s390_r13, 0); - s390_la (p, s390_r13, 0, STK_BASE, local_pos); - local_pos += size; - } else { - local_pos += (local_pos % align); - s390_bras (p, s390_r13, 4); - s390_llong(p, size); - s390_lg (p, s390_r1, 0, s390_r13, 0); - s390_lg (p, s390_r0, 0, ARG_BASE, STKARG); - s390_lgr (p, s390_r14, s390_r12); - s390_la (p, s390_r12, 0, STK_BASE, local_pos); - s390_lgr (p, s390_r13, s390_r1); - s390_mvcl (p, s390_r12, s390_r0); - s390_lgr (p, s390_r12, s390_r14); - s390_la (p, s390_r13, 0, STK_BASE, local_pos); - local_pos += size; - } - if (gr < GENERAL_REGS) { - s390_lgr(p, s390_r2 + gr, s390_r13); - gr++; - } else { - s390_stg(p, s390_r13, 0, STK_BASE, stack_par_pos); - stack_par_pos += sizeof(long); - } - } - break; - case MONO_TYPE_I8: - if (gr < GENERAL_REGS) { - s390_lg (p, s390_r2 + gr, 0, ARG_BASE, STKARG); - gr += 2; - } else { - *(guint32 *) p += 7; - *(guint32 *) p &= ~7; - s390_mvc (p, sizeof(long long), STK_BASE, stack_par_pos, ARG_BASE, STKARG); - stack_par_pos += sizeof(long long) + (stack_par_pos % sizeof(long long)); - } - break; - case MONO_TYPE_R4: - if (fr < FLOAT_REGS) { - s390_le (p, s390_r0 + fr, 0, ARG_BASE, STKARG); - fr++; - } else { - s390_mvc (p, sizeof(float), STK_BASE, stack_par_pos, ARG_BASE, STKARG); - stack_par_pos += sizeof(float); - } - break; - case MONO_TYPE_R8: - if (fr < FLOAT_REGS) { - s390_ld (p, s390_r0 + fr, 0, ARG_BASE, STKARG); - fr++; - } else { - *(guint32 *) p += 7; - *(guint32 *) p &= ~7; - s390_mvc (p, sizeof(double), STK_BASE, stack_par_pos, ARG_BASE, STKARG); - stack_par_pos += sizeof(long long) + (stack_par_pos % sizeof(long long)); - } - break; - default: - g_error ("Can't trampoline 0x%x", sig->params [i]->type); - } - } - - /*----------------------------------------------------------*/ - /* If we're returning a structure but not in a register */ - /* then point the result area for the called routine */ - /*----------------------------------------------------------*/ - if (sz->retStruct) { - s390_lg (p, s390_r2, 0, s390_r8, 0); - } - - return p; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - alloc_code_memory */ -/* */ -/* Function - Allocate space to place the emitted code. */ -/* */ -/*------------------------------------------------------------------*/ - -static inline guint8 * -alloc_code_memory (guint code_size) -{ - guint8 *p; - -#ifdef NEED_MPROTECT - p = g_malloc (code_size + PAGESIZE - 1); - - /* Align to a multiple of PAGESIZE, assumed to be a power of two */ - p = (char *)(((int) p + PAGESIZE-1) & ~(PAGESIZE-1)); -#else - p = g_malloc (code_size); -#endif - DEBUG (printf (" align: %p (%d)\n", p, (guint)p % 4)); - - return p; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - emit_call_and_store_retval */ -/* */ -/* Function - Emit code that will implement the call to the */ -/* desired function, and unload the result according */ -/* to the S390 ABI for the type of value returned */ -/* */ -/*------------------------------------------------------------------*/ - -static inline guint8 * -emit_call_and_store_retval (guint8 *p, MonoMethodSignature *sig, - size_data *sz, gboolean string_ctor) -{ - guint32 simpletype; - guint retSize, align; - - /* call "callme" */ - s390_basr (p, s390_r14, s390_r9); - - /* get return value */ - if (sig->ret->byref || string_ctor) { - s390_stg(p, s390_r2, 0, s390_r8, 0); - } else { - simpletype = sig->ret->type; -enum_retvalue: - switch (simpletype) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - s390_stc (p, s390_r2, 0, s390_r8, 0); - break; - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_CHAR: - s390_sth (p, s390_r2, 0, s390_r8, 0); - break; - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_ARRAY: - case MONO_TYPE_STRING: - s390_st (p, s390_r2, 0, s390_r8, 0); - break; - case MONO_TYPE_R4: - s390_ste (p, s390_f0, 0, s390_r8, 0); - break; - case MONO_TYPE_R8: - s390_std (p, s390_f0, 0, s390_r8, 0); - break; - case MONO_TYPE_I8: - s390_stg (p, s390_r2, 0, s390_r8, 0); - break; - case MONO_TYPE_VALUETYPE: - if (sig->ret->data.klass->enumtype) { - simpletype = sig->ret->data.klass->enum_basetype->type; - goto enum_retvalue; - } - if (sig->pinvoke) - retSize = mono_class_native_size (sig->ret->data.klass, &align); - else - retSize = mono_class_value_size (sig->ret->data.klass, &align); -printf("Returning %d bytes for type %d (%d)\n",retSize,simpletype,sig->pinvoke); - switch(retSize) { - case 0: - break; - case 1: - s390_stc (p, s390_r2, 0, s390_r8, 0); - break; - case 2: - s390_sth (p, s390_r2, 0, s390_r8, 0); - break; - case 4: - s390_st (p, s390_r2, 0, s390_r8, 0); - break; - case 8: - s390_stg (p, s390_r2, 0, s390_r8, 0); - break; - default: ; - /*------------------------------------------*/ - /* The callee has already placed the result */ - /* in the required area */ - /*------------------------------------------*/ - } - break; - case MONO_TYPE_VOID: - break; - default: - g_error ("Can't handle as return value 0x%x", - sig->ret->type); - } - } - - return p; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - emit_epilog */ -/* */ -/* Function - Create the instructions that implement the stand- */ -/* ard function epilog according to the S/390 ABI. */ -/* */ -/*------------------------------------------------------------------*/ - -static inline guint8 * -emit_epilog (guint8 *p, MonoMethodSignature *sig, size_data *sz) -{ - /* function epilog */ - s390_lg (p, STK_BASE, 0, STK_BASE, 0); - s390_lg (p, s390_r4, 0, STK_BASE, S390_RET_ADDR_OFFSET); - s390_lmg (p, s390_r6, STK_BASE, STK_BASE, S390_REG_SAVE_OFFSET); - s390_br (p, s390_r4); - - return p; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - mono_arch_create_trampoline. */ -/* */ -/* Function - Create the code that will allow a mono method to */ -/* invoke a system subroutine. */ -/* */ -/*------------------------------------------------------------------*/ - -MonoPIFunc -mono_arch_create_trampoline (MonoMethodSignature *sig, gboolean string_ctor) -{ - guint8 *p, *code_buffer; - size_data sz; - - DEBUG (printf ("\nPInvoke [start emiting]\n")); - calculate_sizes (sig, &sz, string_ctor); - - p = code_buffer = alloc_code_memory (sz.code_size); - p = emit_prolog (p, sig, &sz); - p = emit_save_parameters (p, sig, &sz); - p = emit_call_and_store_retval (p, sig, &sz, string_ctor); - p = emit_epilog (p, sig, &sz); - -#ifdef NEED_MPROTECT - if (mprotect (code_buffer, 1024, PROT_READ | PROT_WRITE | PROT_EXEC)) { - g_error ("Cannot mprotect trampoline\n"); - } -#endif - - DEBUG (printf ("emited code size: %d\n", p - code_buffer)); - - DEBUG (printf ("PInvoke [end emiting]\n")); - - return (MonoPIFunc) code_buffer; -} - -/*========================= End of Function ========================*/ - -/*------------------------------------------------------------------*/ -/* */ -/* Name - mono_arch_create_method_pointer */ -/* */ -/* Function - Returns a pointer to a native function that can */ -/* be used to call the specified method. */ -/* */ -/* The function created will receive the arguments */ -/* according to the calling convention specified in */ -/* in the method. */ -/* */ -/* This function works by creating a MonoInvocation */ -/* structure, filling the fields in and calling */ -/* ves_exec_method() on it. */ -/* */ -/* Logic: */ -/* ------ */ -/* mono_arch_create_method_pointer (MonoMethod *method) */ -/* create the unmanaged->managed wrapper */ -/* register it with mono_jit_info_table_add() */ -/* */ -/* What does the unmanaged->managed wrapper do? */ -/* allocate a MonoInvocation structure (inv) on the stack */ -/* allocate an array of stackval on the stack with length = */ -/* method->signature->param_count + 1 [call it stack_args] */ -/* set inv->ex, inv->ex_handler, inv->parent to NULL */ -/* set inv->method to method */ -/* if method is an instance method, set inv->obj to the */ -/* 'this' argument (the first argument) else set to NULL */ -/* for each argument to the method call: */ -/* stackval_from_data (sig->params[i], &stack_args[i], */ -/* arg, sig->pinvoke); */ -/* Where: */ -/* ------ */ -/* sig - is method->signature */ -/* &stack_args[i] - is the pointer to the ith element */ -/* in the stackval array */ -/* arg - is a pointer to the argument re- */ -/* ceived by the function according */ -/* to the call convention. If it */ -/* gets passed in a register, save */ -/* on the stack first. */ -/* */ -/* set inv->retval to the address of the last element of */ -/* stack_args [recall we allocated param_count+1 of them] */ -/* call ves_exec_method(inv) */ -/* copy the returned value from inv->retval where the calling */ -/* convention expects to find it on return from the wrap- */ -/* per [if it's a structure, use stackval_to_data] */ -/* */ -/*------------------------------------------------------------------*/ - -void * -mono_arch_create_method_pointer (MonoMethod *method) -{ - MonoMethodSignature *sig; - MonoJitInfo *ji; - guint8 *p, *code_buffer; - guint i, align = 0, simple_type, retSize, reg_save = 0, - stackval_arg_pos, local_pos, float_pos, - local_start, reg_param = 0, stack_param, - this_flag, arg_pos, fpr_param, parSize; - guint32 simpletype; - size_data sz; - int *vtbuf, cpos, vt_cur; - - sz.code_size = 1024; - sz.stack_size = 1024; - stack_param = 0; - fpr_param = 0; - arg_pos = 0; - - sig = method->signature; - - p = code_buffer = g_malloc (sz.code_size); - - DEBUG (printf ("\nDelegate [start emiting] %s at 0x%08x\n", - method->name,p)); - - /*----------------------------------------------------------*/ - /* prolog */ - /*----------------------------------------------------------*/ - s390_stmg(p, s390_r6, STK_BASE, STK_BASE, S390_REG_SAVE_OFFSET); - s390_lg (p, s390_r7, 0, STK_BASE, MINV_POS); - s390_lgr (p, s390_r0, STK_BASE); - s390_aghi(p, STK_BASE, -(sz.stack_size+MINV_POS)); - s390_stg (p, s390_r0, 0, STK_BASE, 0); - s390_la (p, s390_r8, 0, STK_BASE, 4); - s390_lgr (p, s390_r10, s390_r8); - s390_lghi(p, s390_r9, sz.stack_size+92); - s390_lghi(p, s390_r11, 0); - s390_mvcl(p, s390_r8, s390_r10); - - /*----------------------------------------------------------*/ - /* Let's fill MonoInvocation - first zero some fields */ - /*----------------------------------------------------------*/ - s390_lghi (p, s390_r0, 0); - s390_stg (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, ex))); - s390_stg (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, ex_handler))); - s390_stg (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, parent))); - s390_lghi (p, s390_r0, 1); - s390_stg (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, invoke_trap))); - - /*----------------------------------------------------------*/ - /* set method pointer */ - /*----------------------------------------------------------*/ - s390_bras (p, s390_r13, 4); - s390_llong(p, method); - s390_lg (p, s390_r0, 0, s390_r13, 0); - s390_stg (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, method))); - - local_start = local_pos = MINV_POS + - sizeof (MonoInvocation) + (sig->param_count + 1) * sizeof (stackval); - this_flag = (sig->hasthis ? 1 : 0); - - /*----------------------------------------------------------*/ - /* if we are returning a structure, checks it's length to */ - /* see if there's a "hidden" parameter that points to the */ - /* area. If necessary save this hidden parameter for later */ - /*----------------------------------------------------------*/ - if (MONO_TYPE_ISSTRUCT(sig->ret)) { - if (sig->pinvoke) - retSize = mono_class_native_size (sig->ret->data.klass, &align); - else - retSize = mono_class_value_size (sig->ret->data.klass, &align); - switch(retSize) { - case 0: - case 1: - case 2: - case 4: - case 8: - sz.retStruct = 0; - break; - default: - sz.retStruct = 1; - s390_lgr(p, s390_r8, s390_r2); - reg_save = 1; - } - } else { - reg_save = 0; - } - - if (this_flag) { - s390_stg (p, s390_r2 + reg_save, 0, STK_BASE, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, obj))); - reg_param++; - } else { - s390_stg (p, s390_r2 + reg_save, 0, STK_BASE, local_pos); - local_pos += sizeof(int); - s390_stg (p, s390_r0, 0, STK_BASE, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, obj))); - } - - s390_stmg (p, s390_r3 + reg_param, s390_r6, STK_BASE, local_pos); - local_pos += 4 * sizeof(long); - float_pos = local_pos; - s390_std (p, s390_f0, 0, STK_BASE, local_pos); - local_pos += sizeof(double); - s390_std (p, s390_f2, 0, STK_BASE, local_pos); - local_pos += sizeof(double); - - /*----------------------------------------------------------*/ - /* prepare space for valuetypes */ - /*----------------------------------------------------------*/ - vt_cur = local_pos; - vtbuf = alloca (sizeof(int)*sig->param_count); - cpos = 0; - for (i = 0; i < sig->param_count; i++) { - MonoType *type = sig->params [i]; - vtbuf [i] = -1; - DEBUG(printf("par: %d type: %d ref: %d\n",i,type->type,type->byref)); - if (type->type == MONO_TYPE_VALUETYPE) { - MonoClass *klass = type->data.klass; - gint size; - - if (klass->enumtype) - continue; - size = mono_class_native_size (klass, &align); - cpos += align - 1; - cpos &= ~(align - 1); - vtbuf [i] = cpos; - cpos += size; - } - } - cpos += 3; - cpos &= ~3; - - local_pos += cpos; - - /*----------------------------------------------------------*/ - /* set MonoInvocation::stack_args */ - /*----------------------------------------------------------*/ - stackval_arg_pos = MINV_POS + sizeof (MonoInvocation); - s390_la (p, s390_r0, 0, STK_BASE, stackval_arg_pos); - s390_stg (p, s390_r0, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, stack_args))); - - /*----------------------------------------------------------*/ - /* add stackval arguments */ - /*----------------------------------------------------------*/ - for (i = 0; i < sig->param_count; ++i) { - if (sig->params [i]->byref) { - ADD_ISTACK_PARM(0, 1); - } else { - simple_type = sig->params [i]->type; - enum_savechk: - switch (simple_type) { - case MONO_TYPE_I8: - ADD_ISTACK_PARM(-1, 2); - break; - case MONO_TYPE_R4: - ADD_RSTACK_PARM(1); - break; - case MONO_TYPE_R8: - ADD_RSTACK_PARM(2); - break; - case MONO_TYPE_VALUETYPE: - if (sig->params [i]->data.klass->enumtype) { - simple_type = sig->params [i]->data.klass->enum_basetype->type; - goto enum_savechk; - } - if (sig->pinvoke) - parSize = mono_class_native_size (sig->params [i]->data.klass, &align); - else - parSize = mono_class_value_size (sig->params [i]->data.klass, &align); - switch(parSize) { - case 0: - case 1: - case 2: - case 4: - ADD_PSTACK_PARM(0, 1); - break; - case 8: - ADD_PSTACK_PARM(-1, 2); - break; - default: - ADD_TSTACK_PARM; - } - break; - default: - ADD_ISTACK_PARM(0, 1); - } - } - - if (vtbuf [i] >= 0) { - s390_la (p, s390_r3, 0, STK_BASE, vt_cur); - s390_stg (p, s390_r3, 0, STK_BASE, stackval_arg_pos); - s390_la (p, s390_r3, 0, STK_BASE, stackval_arg_pos); - vt_cur += vtbuf [i]; - } else { - s390_la (p, s390_r3, 0, STK_BASE, stackval_arg_pos); - } - - /*--------------------------------------*/ - /* Load the parameter registers for the */ - /* call to stackval_from_data */ - /*--------------------------------------*/ - s390_bras (p, s390_r13, 8); - s390_llong(p, sig->params [i]); - s390_llong(p, sig->pinvoke); - s390_llong(p, stackval_from_data); - s390_lg (p, s390_r2, 0, s390_r13, 0); - s390_lg (p, s390_r5, 0, s390_r13, 4); - s390_lg (p, s390_r1, 0, s390_r13, 8); - s390_basr (p, s390_r14, s390_r1); - - stackval_arg_pos += sizeof(stackval); - - /* fixme: alignment */ - DEBUG (printf ("arg_pos %d --> ", arg_pos)); - if (sig->pinvoke) - arg_pos += mono_type_native_stack_size (sig->params [i], &align); - else - arg_pos += mono_type_stack_size (sig->params [i], &align); - - DEBUG (printf ("%d\n", stackval_arg_pos)); - } - - /*----------------------------------------------------------*/ - /* Set return area pointer. */ - /*----------------------------------------------------------*/ - s390_la (p, s390_r10, 0, STK_BASE, stackval_arg_pos); - s390_stg(p, s390_r10, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, retval))); - if (sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->byref) { - MonoClass *klass = sig->ret->data.klass; - if (!klass->enumtype) { - s390_la (p, s390_r9, 0, s390_r10, sizeof(stackval)); - s390_st (p, s390_r9, 0,STK_BASE, stackval_arg_pos); - stackval_arg_pos += sizeof(stackval); - } - } - - /*----------------------------------------------------------*/ - /* call ves_exec_method */ - /*----------------------------------------------------------*/ - s390_bras (p, s390_r13, 4); - s390_llong(p, ves_exec_method); - s390_lg (p, s390_r1, 0, s390_r13, 0); - s390_la (p, s390_r2, 0, STK_BASE, MINV_POS); - s390_basr (p, s390_r14, s390_r1); - - /*----------------------------------------------------------*/ - /* move retval from stackval to proper place (r3/r4/...) */ - /*----------------------------------------------------------*/ - DEBUG(printf("retType: %d byRef: %d\n",sig->ret->type,sig->ret->byref)); - if (sig->ret->byref) { - DEBUG (printf ("ret by ref\n")); - s390_stg(p, s390_r2, 0, s390_r10, 0); - } else { - enum_retvalue: - switch (sig->ret->type) { - case MONO_TYPE_VOID: - break; - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_U1: - s390_lghi(p, s390_r2, 0); - s390_ic (p, s390_r2, 0, s390_r10, 0); - break; - case MONO_TYPE_I2: - case MONO_TYPE_U2: - s390_lh (p, s390_r2, 0,s390_r10, 0); - break; - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - s390_lgf(p, s390_r2, 0, s390_r10, 0); - break; - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - case MONO_TYPE_CLASS: - case MONO_TYPE_I8: - s390_lg (p, s390_r2, 0, s390_r10, 0); - break; - case MONO_TYPE_R4: - s390_le (p, s390_f0, 0, s390_r10, 0); - break; - case MONO_TYPE_R8: - s390_ld (p, s390_f0, 0, s390_r10, 0); - break; - case MONO_TYPE_VALUETYPE: - if (sig->ret->data.klass->enumtype) { - simpletype = sig->ret->data.klass->enum_basetype->type; - goto enum_retvalue; - } - /*---------------------------------*/ - /* Call stackval_to_data to return */ - /* the structure */ - /*---------------------------------*/ - s390_bras (p, s390_r13, 8); - s390_llong(p, sig->ret); - s390_llong(p, sig->pinvoke); - s390_llong(p, stackval_to_data); - s390_lg (p, s390_r2, 0, s390_r13, 0); - s390_lg (p, s390_r3, 0, STK_BASE, (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, retval))); - if (sz.retStruct) { - /*------------------------------------------*/ - /* Get stackval_to_data to set result area */ - /*------------------------------------------*/ - s390_lgr (p, s390_r4, s390_r8); - } else { - /*------------------------------------------*/ - /* Give stackval_to_data a temp result area */ - /*------------------------------------------*/ - s390_la (p, s390_r4, 0, STK_BASE, stackval_arg_pos); - } - s390_lg (p, s390_r5, 0,s390_r13, 4); - s390_lg (p, s390_r1, 0, s390_r13, 8); - s390_basr (p, s390_r14, s390_r1); - switch (retSize) { - case 0: - break; - case 1: - s390_lghi(p, s390_r2, 0); - s390_ic (p, s390_r2, 0, s390_r10, 0); - break; - case 2: - s390_lh (p, s390_r2, 0, s390_r10, 0); - break; - case 4: - s390_lgf(p, s390_r2, 0, s390_r10, 0); - break; - case 8: - s390_lg (p, s390_r2, 0, s390_r10, 0); - break; - default: ; - /*-------------------------------------------------*/ - /* stackval_to_data has placed data in result area */ - /*-------------------------------------------------*/ - } - break; - default: - g_error ("Type 0x%x not handled yet in thunk creation", - sig->ret->type); - break; - } - } - - /*----------------------------------------------------------*/ - /* epilog */ - /*----------------------------------------------------------*/ - s390_lg (p, STK_BASE, 0, STK_BASE, 0); - s390_lg (p, s390_r4, 0, STK_BASE, S390_RET_ADDR_OFFSET); - s390_lmg (p, s390_r6, STK_BASE, STK_BASE, S390_REG_SAVE_OFFSET); - s390_br (p, s390_r4); - - DEBUG (printf ("emited code size: %d\n", p - code_buffer)); - - DEBUG (printf ("Delegate [end emiting]\n")); - - ji = g_new0 (MonoJitInfo, 1); - ji->method = method; - ji->code_size = p - code_buffer; - ji->code_start = code_buffer; - - mono_jit_info_table_add (mono_get_root_domain (), ji); - - return ji->code_start; -} - -/*========================= End of Function ========================*/ diff --git a/FFTS/Sources/FFTS/src/arch/sparc/.gitignore b/FFTS/Sources/FFTS/src/arch/sparc/.gitignore deleted file mode 100644 index dc1ebd2..0000000 --- a/FFTS/Sources/FFTS/src/arch/sparc/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/Makefile -/Makefile.in -/.deps diff --git a/FFTS/Sources/FFTS/src/arch/sparc/Makefile.am b/FFTS/Sources/FFTS/src/arch/sparc/Makefile.am deleted file mode 100644 index a888904..0000000 --- a/FFTS/Sources/FFTS/src/arch/sparc/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ - -AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir) - -noinst_LTLIBRARIES = libmonoarch-sparc.la - -libmonoarch_sparc_la_SOURCES = tramp.c sparc-codegen.h - diff --git a/FFTS/Sources/FFTS/src/arch/sparc/sparc-codegen.h b/FFTS/Sources/FFTS/src/arch/sparc/sparc-codegen.h deleted file mode 100644 index eb421bb..0000000 --- a/FFTS/Sources/FFTS/src/arch/sparc/sparc-codegen.h +++ /dev/null @@ -1,955 +0,0 @@ -#ifndef __SPARC_CODEGEN_H__ -#define __SPARC_CODEGEN_H__ - -#if SIZEOF_VOID_P == 8 -#define SPARCV9 1 -#else -#endif - -typedef enum { - sparc_r0 = 0, - sparc_r1 = 1, - sparc_r2 = 2, - sparc_r3 = 3, - sparc_r4 = 4, - sparc_r5 = 5, - sparc_r6 = 6, - sparc_r7 = 7, - sparc_r8 = 8, - sparc_r9 = 9, - sparc_r10 = 10, - sparc_r11 = 11, - sparc_r12 = 12, - sparc_r13 = 13, - sparc_r14 = 14, - sparc_r15 = 15, - sparc_r16 = 16, - sparc_r17 = 17, - sparc_r18 = 18, - sparc_r19 = 19, - sparc_r20 = 20, - sparc_r21 = 21, - sparc_r22 = 22, - sparc_r23 = 23, - sparc_r24 = 24, - sparc_r25 = 25, - sparc_r26 = 26, - sparc_r27 = 27, - sparc_r28 = 28, - sparc_r29 = 29, - sparc_r30 = 30, - sparc_r31 = 31, - /* aliases */ - /* global registers */ - sparc_g0 = 0, sparc_zero = 0, - sparc_g1 = 1, - sparc_g2 = 2, - sparc_g3 = 3, - sparc_g4 = 4, - sparc_g5 = 5, - sparc_g6 = 6, - sparc_g7 = 7, - /* out registers */ - sparc_o0 = 8, - sparc_o1 = 9, - sparc_o2 = 10, - sparc_o3 = 11, - sparc_o4 = 12, - sparc_o5 = 13, - sparc_o6 = 14, sparc_sp = 14, - sparc_o7 = 15, sparc_callsite = 15, - /* local registers */ - sparc_l0 = 16, - sparc_l1 = 17, - sparc_l2 = 18, - sparc_l3 = 19, - sparc_l4 = 20, - sparc_l5 = 21, - sparc_l6 = 22, - sparc_l7 = 23, - /* in registers */ - sparc_i0 = 24, - sparc_i1 = 25, - sparc_i2 = 26, - sparc_i3 = 27, - sparc_i4 = 28, - sparc_i5 = 29, - sparc_i6 = 30, sparc_fp = 30, - sparc_i7 = 31, - sparc_nreg = 32, - /* floating point registers */ - sparc_f0 = 0, - sparc_f1 = 1, - sparc_f2 = 2, - sparc_f3 = 3, - sparc_f4 = 4, - sparc_f5 = 5, - sparc_f6 = 6, - sparc_f7 = 7, - sparc_f8 = 8, - sparc_f9 = 9, - sparc_f10 = 10, - sparc_f11 = 11, - sparc_f12 = 12, - sparc_f13 = 13, - sparc_f14 = 14, - sparc_f15 = 15, - sparc_f16 = 16, - sparc_f17 = 17, - sparc_f18 = 18, - sparc_f19 = 19, - sparc_f20 = 20, - sparc_f21 = 21, - sparc_f22 = 22, - sparc_f23 = 23, - sparc_f24 = 24, - sparc_f25 = 25, - sparc_f26 = 26, - sparc_f27 = 27, - sparc_f28 = 28, - sparc_f29 = 29, - sparc_f30 = 30, - sparc_f31 = 31, -} SparcRegister; - -typedef enum { - sparc_bn = 0, sparc_bnever = 0, - sparc_be = 1, - sparc_ble = 2, - sparc_bl = 3, - sparc_bleu = 4, - sparc_bcs = 5, sparc_blu = 5, - sparc_bneg = 6, - sparc_bvs = 7, sparc_boverflow = 7, - sparc_ba = 8, sparc_balways = 8, - sparc_bne = 9, - sparc_bg = 10, - sparc_bge = 11, - sparc_bgu = 12, - sparc_bcc = 13, sparc_beu = 13, - sparc_bpos = 14, - sparc_bvc = 15 -} SparcCond; - -typedef enum { - /* with fcmp */ - sparc_feq = 0, - sparc_fl = 1, - sparc_fg = 2, - sparc_unordered = 3, - /* branch ops */ - sparc_fba = 8, - sparc_fbn = 0, - sparc_fbu = 7, - sparc_fbg = 6, - sparc_fbug = 5, - sparc_fbl = 4, - sparc_fbul = 3, - sparc_fblg = 2, - sparc_fbne = 1, - sparc_fbe = 9, - sparc_fbue = 10, - sparc_fbge = 11, - sparc_fbuge = 12, - sparc_fble = 13, - sparc_fbule = 14, - sparc_fbo = 15 -} SparcFCond; - -typedef enum { - sparc_icc = 4, - sparc_xcc = 6, - sparc_fcc0 = 0, - sparc_fcc1 = 1, - sparc_fcc2 = 2, - sparc_fcc3 = 3 -} SparcCC; - -typedef enum { - sparc_icc_short = 0, - sparc_xcc_short = 2 -} SparcCCShort; - -typedef enum { - /* fop1 format */ - sparc_fitos_val = 196, - sparc_fitod_val = 200, - sparc_fitoq_val = 204, - sparc_fxtos_val = 132, - sparc_fxtod_val = 136, - sparc_fxtoq_val = 140, - sparc_fstoi_val = 209, - sparc_fdtoi_val = 210, - sparc_fqtoi_val = 211, - sparc_fstod_val = 201, - sparc_fstoq_val = 205, - sparc_fdtos_val = 198, - sparc_fdtoq_val = 206, - sparc_fqtos_val = 199, - sparc_fqtod_val = 203, - sparc_fmovs_val = 1, - sparc_fmovd_val = 2, - sparc_fnegs_val = 5, - sparc_fnegd_val = 6, - sparc_fabss_val = 9, - sparc_fabsd_val = 10, - sparc_fsqrts_val = 41, - sparc_fsqrtd_val = 42, - sparc_fsqrtq_val = 43, - sparc_fadds_val = 65, - sparc_faddd_val = 66, - sparc_faddq_val = 67, - sparc_fsubs_val = 69, - sparc_fsubd_val = 70, - sparc_fsubq_val = 71, - sparc_fmuls_val = 73, - sparc_fmuld_val = 74, - sparc_fmulq_val = 75, - sparc_fsmuld_val = 105, - sparc_fdmulq_val = 111, - sparc_fdivs_val = 77, - sparc_fdivd_val = 78, - sparc_fdivq_val = 79, - /* fop2 format */ - sparc_fcmps_val = 81, - sparc_fcmpd_val = 82, - sparc_fcmpq_val = 83, - sparc_fcmpes_val = 85, - sparc_fcmped_val = 86, - sparc_fcmpeq_val = 87 -} SparcFOp; - -typedef enum { - sparc_membar_load_load = 0x1, - sparc_membar_store_load = 0x2, - sparc_membar_load_store = 0x4, - sparc_membar_store_store = 0x8, - - sparc_membar_lookaside = 0x10, - sparc_membar_memissue = 0x20, - sparc_membar_sync = 0x40, - - sparc_membar_all = 0x4f -} SparcMembarFlags; - -typedef struct { - unsigned int op : 2; /* always 1 */ - unsigned int disp : 30; -} sparc_format1; - -typedef struct { - unsigned int op : 2; /* always 0 */ - unsigned int rd : 5; - unsigned int op2 : 3; - unsigned int disp : 22; -} sparc_format2a; - -typedef struct { - unsigned int op : 2; /* always 0 */ - unsigned int a : 1; - unsigned int cond : 4; - unsigned int op2 : 3; - unsigned int disp : 22; -} sparc_format2b; - -typedef struct { - unsigned int op : 2; /* always 0 */ - unsigned int a : 1; - unsigned int cond : 4; - unsigned int op2 : 3; - unsigned int cc01 : 2; - unsigned int p : 1; - unsigned int d19 : 19; -} sparc_format2c; - -typedef struct { - unsigned int op : 2; /* always 0 */ - unsigned int a : 1; - unsigned int res : 1; - unsigned int rcond: 3; - unsigned int op2 : 3; - unsigned int d16hi: 2; - unsigned int p : 1; - unsigned int rs1 : 5; - unsigned int d16lo: 14; -} sparc_format2d; - -typedef struct { - unsigned int op : 2; /* 2 or 3 */ - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int rs1 : 5; - unsigned int i : 1; - unsigned int asi : 8; - unsigned int rs2 : 5; -} sparc_format3a; - -typedef struct { - unsigned int op : 2; /* 2 or 3 */ - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int rs1 : 5; - unsigned int i : 1; - unsigned int x : 1; - unsigned int asi : 7; - unsigned int rs2 : 5; -} sparc_format3ax; - -typedef struct { - unsigned int op : 2; /* 2 or 3 */ - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int rs1 : 5; - unsigned int i : 1; - unsigned int imm : 13; -} sparc_format3b; - -typedef struct { - unsigned int op : 2; /* 2 or 3 */ - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int rs1 : 5; - unsigned int i : 1; - unsigned int x : 1; - unsigned int imm : 12; -} sparc_format3bx; - -typedef struct { - unsigned int op : 2; /* 2 or 3 */ - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int rs1 : 5; - unsigned int opf : 9; - unsigned int rs2 : 5; -} sparc_format3c; - -typedef struct { - unsigned int op : 2; - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int rs1 : 5; - unsigned int i : 1; - unsigned int cc01 : 2; - unsigned int res : 6; - unsigned int rs2 : 5; -} sparc_format4a; - -typedef struct { - unsigned int op : 2; - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int rs1 : 5; - unsigned int i : 1; - unsigned int cc01 : 2; - unsigned int simm : 11; -} sparc_format4b; - -typedef struct { - unsigned int op : 2; - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int cc2 : 1; - unsigned int cond : 4; - unsigned int i : 1; - unsigned int cc01 : 2; - unsigned int res : 6; - unsigned int rs2 : 5; -} sparc_format4c; - -typedef struct { - unsigned int op : 2; - unsigned int rd : 5; - unsigned int op3 : 6; - unsigned int cc2 : 1; - unsigned int cond : 4; - unsigned int i : 1; - unsigned int cc01 : 2; - unsigned int simm : 11; -} sparc_format4d; - -/* for use in logical ops, use 0 to not set flags */ -#define sparc_cc 16 - -#define sparc_is_imm13(val) ((glong)val >= (glong)-(1<<12) && (glong)val <= (glong)((1<<12)-1)) -#define sparc_is_imm22(val) ((glong)val >= (glong)-(1<<21) && (glong)val <= (glong)((1<<21)-1)) -#define sparc_is_imm16(val) ((glong)val >= (glong)-(1<<15) && (glong)val <= (glong)((1<<15)-1)) -#define sparc_is_imm19(val) ((glong)val >= (glong)-(1<<18) && (glong)val <= (glong)((1<<18)-1)) -#define sparc_is_imm30(val) ((glong)val >= (glong)-(1<<29) && (glong)val <= (glong)((1<<29)-1)) - -/* disassembly */ -#define sparc_inst_op(inst) ((inst) >> 30) -#define sparc_inst_op2(inst) (((inst) >> 22) & 0x7) -#define sparc_inst_rd(inst) (((inst) >> 25) & 0x1f) -#define sparc_inst_op3(inst) (((inst) >> 19) & 0x3f) -#define sparc_inst_i(inst) (((inst) >> 13) & 0x1) -#define sparc_inst_rs1(inst) (((inst) >> 14) & 0x1f) -#define sparc_inst_rs2(inst) (((inst) >> 0) & 0x1f) -#define sparc_inst_imm(inst) (((inst) >> 13) & 0x1) -#define sparc_inst_imm13(inst) (((inst) >> 0) & 0x1fff) - -#define sparc_encode_call(ins,addr) \ - do { \ - sparc_format1 *__f = (sparc_format1*)(ins); \ - __f->op = 1; \ - __f->disp = ((unsigned int)(addr) >> 2); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format2a(ins,val,oper,dest) \ - do { \ - sparc_format2a *__f = (sparc_format2a*)(ins); \ - __f->op = 0; \ - __f->rd = (dest); \ - __f->op2 = (oper); \ - __f->disp = (val) & 0x3fffff; \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format2b(ins,aval,bcond,oper,disp22) \ - do { \ - sparc_format2b *__f = (sparc_format2b*)(ins); \ - __f->op = 0; \ - __f->a = (aval); \ - __f->cond = (bcond); \ - __f->op2 = (oper); \ - __f->disp = (disp22); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format2c(ins,aval,bcond,oper,xcc,predict,disp19) \ - do { \ - sparc_format2c *__f = (sparc_format2c*)(ins); \ - __f->op = 0; \ - __f->a = (aval); \ - __f->cond = (bcond); \ - __f->op2 = (oper); \ - __f->cc01 = (xcc); \ - __f->p = (predict); \ - __f->d19 = (disp19); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format2d(ins,aval,bcond,oper,predict,r1,disp16) \ - do { \ - sparc_format2d *__f = (sparc_format2d*)(ins); \ - __f->op = 0; \ - __f->a = (aval); \ - __f->res = 0; \ - __f->rcond = (bcond); \ - __f->op2 = (oper); \ - __f->d16hi = ((disp16) >> 14); \ - __f->p = (predict); \ - __f->rs1 = (r1); \ - __f->d16lo = ((disp16) & 0x3fff); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format3a(ins,opval,asival,r1,r2,oper,dest) \ - do { \ - sparc_format3a *__f = (sparc_format3a*)(ins); \ - __f->op = (opval); \ - __f->asi = (asival); \ - __f->i = 0; \ - __f->rd = (dest); \ - __f->rs1 = (r1); \ - __f->rs2 = (r2); \ - __f->op3 = (oper); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format3ax(ins,opval,asival,r1,r2,oper,dest) \ - do { \ - sparc_format3ax *__f = (sparc_format3ax*)(ins); \ - __f->op = (opval); \ - __f->asi = (asival); \ - __f->i = 0; \ - __f->x = 1; \ - __f->rd = (dest); \ - __f->rs1 = (r1); \ - __f->rs2 = (r2); \ - __f->op3 = (oper); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format3b(ins,opval,r1,val,oper,dest) \ - do { \ - sparc_format3b *__f = (sparc_format3b*)(ins); \ - __f->op = (opval); \ - __f->imm = (val); \ - __f->i = 1; \ - __f->rd = (dest); \ - __f->rs1 = (r1); \ - __f->op3 = (oper); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format3bx(ins,opval,r1,val,oper,dest) \ - do { \ - sparc_format3bx *__f = (sparc_format3bx*)(ins); \ - __f->op = (opval); \ - __f->imm = (val); \ - __f->i = 1; \ - __f->x = 1; \ - __f->rd = (dest); \ - __f->rs1 = (r1); \ - __f->op3 = (oper); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format3c(ins,opval,opfval,r1,oper,r2,dest) \ - do { \ - sparc_format3c *__f = (sparc_format3c*)(ins); \ - __f->op = (opval); \ - __f->opf = (opfval); \ - __f->rd = (dest); \ - __f->rs1 = (r1); \ - __f->rs2 = (r2); \ - __f->op3 = (oper); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format4a(ins,opval,oper,cc,r1,r2,dest) \ - do { \ - sparc_format4a *__f = (sparc_format4a*)(ins); \ - __f->op = (opval); \ - __f->rd = (dest); \ - __f->op3 = (oper); \ - __f->rs1 = (r1); \ - __f->i = 0; \ - __f->cc01= (cc) & 0x3; \ - __f->res = 0; \ - __f->rs2 = (r2); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format4b(ins,opval,oper,cc,r1,imm,dest) \ - do { \ - sparc_format4b *__f = (sparc_format4b*)(ins); \ - __f->op = (opval); \ - __f->rd = (dest); \ - __f->op3 = (oper); \ - __f->rs1 = (r1); \ - __f->i = 1; \ - __f->cc01= (cc) & 0x3; \ - __f->simm = (imm); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format4c(ins,opval,oper,cc,bcond,r2,dest) \ - do { \ - sparc_format4c *__f = (sparc_format4c*)(ins); \ - __f->op = (opval); \ - __f->rd = (dest); \ - __f->op3 = (oper); \ - __f->cc2 = ((xcc) >> 2) & 0x1; \ - __f->cond = bcond; \ - __f->i = 0; \ - __f->cc01= (xcc) & 0x3; \ - __f->res = 0; \ - __f->rs2 = (r2); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -#define sparc_encode_format4d(ins,opval,oper,xcc,bcond,imm,dest) \ - do { \ - sparc_format4d *__f = (sparc_format4d*)(ins); \ - __f->op = (opval); \ - __f->rd = (dest); \ - __f->op3 = (oper); \ - __f->cc2 = ((xcc) >> 2) & 0x1; \ - __f->cond = bcond; \ - __f->i = 1; \ - __f->cc01= (xcc) & 0x3; \ - __f->simm = (imm); \ - (ins) = (unsigned int*)__f + 1; \ - } while (0) - -/* is it useful to provide a non-default value? */ -#define sparc_asi 0x0 - -/* load */ -#define sparc_ldsb(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),9,(dest)) -#define sparc_ldsb_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),9,(dest)) - -#define sparc_ldsh(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),10,(dest)) -#define sparc_ldsh_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),10,(dest)) - -#define sparc_ldub(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),1,(dest)) -#define sparc_ldub_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),1,(dest)) - -#define sparc_lduh(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),2,(dest)) -#define sparc_lduh_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),2,(dest)) - -#define sparc_ld(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),0,(dest)) -#define sparc_ld_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),0,(dest)) - -/* Sparc V9 */ -#define sparc_ldx(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),11,(dest)) -#define sparc_ldx_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),11,(dest)) - -#define sparc_ldsw(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),8,(dest)) -#define sparc_ldsw_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),8,(dest)) - -#define sparc_ldd(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),3,(dest)) -#define sparc_ldd_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),3,(dest)) - -#define sparc_ldf(ins,base,disp,dest) sparc_encode_format3a((ins),3,0,(base),(disp),32,(dest)) -#define sparc_ldf_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),32,(dest)) - -#define sparc_lddf(ins,base,disp,dest) sparc_encode_format3a((ins),3,0,(base),(disp),35,(dest)) -#define sparc_lddf_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),35,(dest)) - -/* store */ -#define sparc_stb(ins,src,base,disp) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),5,(src)) -#define sparc_stb_imm(ins,src,base,disp) sparc_encode_format3b((ins),3,(base),(disp),5,(src)) - -#define sparc_sth(ins,src,base,disp) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),6,(src)) -#define sparc_sth_imm(ins,src,base,disp) sparc_encode_format3b((ins),3,(base),(disp),6,(src)) - -#define sparc_st(ins,src,base,disp) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),4,(src)) -#define sparc_st_imm(ins,src,base,disp) sparc_encode_format3b((ins),3,(base),(disp),4,(src)) - -/* Sparc V9 */ -#define sparc_stx(ins,src,base,disp) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),14,(src)) -#define sparc_stx_imm(ins,src,base,disp) sparc_encode_format3b((ins),3,(base),(disp),14,(src)) - -#define sparc_std(ins,src,base,disp) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),7,(src)) -#define sparc_std_imm(ins,src,base,disp) sparc_encode_format3b((ins),3,(base),(disp),7,(src)) - -#define sparc_stf(ins,src,base,disp) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),36,(src)) -#define sparc_stf_imm(ins,src,base,disp) sparc_encode_format3b((ins),3,(base),(disp),36,(src)) - -#define sparc_stdf(ins,src,base,disp) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),39,(src)) -#define sparc_stdf_imm(ins,src,base,disp) sparc_encode_format3b((ins),3,(base),(disp),39,(src)) - -/* swap */ -#define sparc_ldstub(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),13,(dest)) -#define sparc_ldstub_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),13,(dest)) - -#define sparc_swap(ins,base,disp,dest) sparc_encode_format3a((ins),3,sparc_asi,(base),(disp),15,(dest)) -#define sparc_swap_imm(ins,base,disp,dest) sparc_encode_format3b((ins),3,(base),(disp),15,(dest)) - -/* misc */ -/* note: with sethi val is the full 32 bit value (think of it as %hi(val)) */ -#define sparc_sethi(ins,val,dest) sparc_encode_format2a((ins),((val)>>10),4,(dest)) - -#define sparc_nop(ins) sparc_sethi((ins),0,sparc_zero) - -#define sparc_save(ins,src,disp,dest) sparc_encode_format3a((ins),2,0,(src),(disp),60,(dest)) -#define sparc_save_imm(ins,src,disp,dest) sparc_encode_format3b((ins),2,(src),(disp),60,(dest)) - -#define sparc_restore(ins,src,disp,dest) sparc_encode_format3a((ins),2,0,(src),(disp),61,(dest)) -#define sparc_restore_imm(ins,src,disp,dest) sparc_encode_format3b((ins),2,(src),(disp),61,(dest)) - -#define sparc_rett(ins,src,disp) sparc_encode_format3a((ins),2,0,(src),(disp),0x39,0) -#define sparc_rett_imm(ins,src,disp) sparc_encode_format3b((ins),2,(src),(disp),0x39,0) - -#define sparc_jmpl(ins,base,disp,dest) sparc_encode_format3a((ins),2,0,(base),(disp),56,(dest)) -#define sparc_jmpl_imm(ins,base,disp,dest) sparc_encode_format3b((ins),2,(base),(disp),56,(dest)) - -#define sparc_call_simple(ins,disp) sparc_encode_call((ins),((unsigned int)(disp))) - -#define sparc_rdy(ins,dest) sparc_encode_format3a((ins),2,0,0,0,40,(dest)) - -#define sparc_wry(ins,base,disp) sparc_encode_format3a((ins),2,0,(base),(disp),48,0) -#define sparc_wry_imm(ins,base,disp) sparc_encode_format3b((ins),2,(base),(disp),48,0) - -/* stbar, unimp, flush */ -#define sparc_stbar(ins) sparc_encode_format3a((ins),2,0,15,0,40,0) -#define sparc_unimp(ins,val) sparc_encode_format2b((ins),0,0,0,(val)) - -#define sparc_flush(ins,base,disp) sparc_encode_format3a((ins),2,0,(base),(disp),59,0) -#define sparc_flush_imm(ins,base,disp) sparc_encode_format3b((ins),2,(base),(disp),59,0) - -#define sparc_flushw(ins) sparc_encode_format3a((ins),2,0,0,0,43,0) - -#define sparc_membar(ins,flags) sparc_encode_format3b ((ins), 2, 0xf, (flags), 0x28, 0) - -/* trap */ - -#define sparc_ta(ins,tt) sparc_encode_format3b((ins),2,0,(tt),58,0x8) - -/* alu fop */ -/* provide wrappers for: fitos, fitod, fstoi, fdtoi, fstod, fdtos, fmov, fneg, fabs */ - -#define sparc_fop(ins,r1,op,r2,dest) sparc_encode_format3c((ins),2,(op),(r1),52,(r2),(dest)) -#define sparc_fcmp(ins,r1,op,r2) sparc_encode_format3c((ins),2,(op),(r1),53,(r2),0) - -/* format 1 fops */ -#define sparc_fadds(ins, r1, r2, dest) sparc_fop( ins, r1, sparc_fadds_val, r2, dest ) -#define sparc_faddd(ins, r1, r2, dest) sparc_fop( ins, r1, sparc_faddd_val, r2, dest ) -#define sparc_faddq(ins, r1, r2, dest) sparc_fop( ins, r1, sparc_faddq_val, r2, dest ) - -#define sparc_fsubs(ins, r1, r2, dest) sparc_fop( ins, r1, sparc_fsubs_val, r2, dest ) -#define sparc_fsubd(ins, r1, r2, dest) sparc_fop( ins, r1, sparc_fsubd_val, r2, dest ) -#define sparc_fsubq(ins, r1, r2, dest) sparc_fop( ins, r1, sparc_fsubq_val, r2, dest ) - -#define sparc_fmuls( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fmuls_val, r2, dest ) -#define sparc_fmuld( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fmuld_val, r2, dest ) -#define sparc_fmulq( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fmulq_val, r2, dest ) - -#define sparc_fsmuld( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fsmuld_val, r2, dest ) -#define sparc_fdmulq( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fdmulq_val, r2, dest ) - -#define sparc_fdivs( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fdivs_val, r2, dest ) -#define sparc_fdivd( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fdivd_val, r2, dest ) -#define sparc_fdivq( ins, r1, r2, dest ) sparc_fop( ins, r1, sparc_fdivq_val, r2, dest ) - -#define sparc_fitos( ins, r2, dest ) sparc_fop( ins, 0, sparc_fitos_val, r2, dest ) -#define sparc_fitod( ins, r2, dest ) sparc_fop( ins, 0, sparc_fitod_val, r2, dest ) -#define sparc_fitoq( ins, r2, dest ) sparc_fop( ins, 0, sparc_fitoq_val, r2, dest ) - -#define sparc_fxtos( ins, r2, dest) sparc_fop( ins, 0, sparc_fxtos_val, r2, dest ) -#define sparc_fxtod( ins, r2, dest) sparc_fop( ins, 0, sparc_fxtod_val, r2, dest ) -#define sparc_fxtoq( ins, r2, dest) sparc_fop( ins, 0, sparc_fxtoq_val, r2, dest ) - -#define sparc_fstoi( ins, r2, dest ) sparc_fop( ins, 0, sparc_fstoi_val, r2, dest ) -#define sparc_fdtoi( ins, r2, dest ) sparc_fop( ins, 0, sparc_fdtoi_val, r2, dest ) -#define sparc_fqtoi( ins, r2, dest ) sparc_fop( ins, 0, sparc_fqtoi_val, r2, dest ) - -#define sparc_fstod( ins, r2, dest ) sparc_fop( ins, 0, sparc_fstod_val, r2, dest ) -#define sparc_fstoq( ins, r2, dest ) sparc_fop( ins, 0, sparc_fstoq_val, r2, dest ) - -#define sparc_fdtos( ins, r2, dest ) sparc_fop( ins, 0, sparc_fdtos_val, r2, dest ) -#define sparc_fdtoq( ins, r2, dest ) sparc_fop( ins, 0, sparc_fdtoq_val, r2, dest ) - -#define sparc_fqtos( ins, r2, dest ) sparc_fop( ins, 0, sparc_fqtos_val, r2, dest ) -#define sparc_fqtod( ins, r2, dest ) sparc_fop( ins, 0, sparc_fqtod_val, r2, dest ) - -#define sparc_fmovs( ins, r2, dest ) sparc_fop( ins, 0, sparc_fmovs_val, r2, dest ) -#define sparc_fnegs( ins, r2, dest ) sparc_fop( ins, 0, sparc_fnegs_val, r2, dest ) -#define sparc_fabss( ins, r2, dest ) sparc_fop( ins, 0, sparc_fabss_val, r2, dest ) - -#define sparc_fmovd( ins, r2, dest) sparc_fop (ins, 0, sparc_fmovd_val, r2, dest); -#define sparc_fnegd( ins, r2, dest) sparc_fop (ins, 0, sparc_fnegd_val, r2, dest); -#define sparc_fabsd( ins, r2, dest) sparc_fop (ins, 0, sparc_fabsd_val, r2, dest); - -#define sparc_fsqrts( ins, r2, dest ) sparc_fop( ins, 0, sparc_fsqrts_val, r2, dest ) -#define sparc_fsqrtd( ins, r2, dest ) sparc_fop( ins, 0, sparc_fsqrtd_val, r2, dest ) -#define sparc_fsqrtq( ins, r2, dest ) sparc_fop( ins, 0, sparc_fsqrtq_val, r2, dest ) - -/* format 2 fops */ - -#define sparc_fcmps( ins, r1, r2 ) sparc_fcmp( ins, r1, sparc_fcmps_val, r2 ) -#define sparc_fcmpd( ins, r1, r2 ) sparc_fcmp( ins, r1, sparc_fcmpd_val, r2 ) -#define sparc_fcmpq( ins, r1, r2 ) sparc_fcmp( ins, r1, sparc_fcmpq_val, r2 ) -#define sparc_fcmpes( ins, r1, r2 ) sparc_fcmpes( ins, r1, sparc_fcmpes_val, r2 ) -#define sparc_fcmped( ins, r1, r2 ) sparc_fcmped( ins, r1, sparc_fcmped_val, r2 ) -#define sparc_fcmpeq( ins, r1, r2 ) sparc_fcmpeq( ins, r1, sparc_fcmpeq_val, r2 ) - -/* logical */ - -/* FIXME: condense this using macros */ -/* FIXME: the setcc stuff is wrong in lots of places */ - -#define sparc_logic(ins,op,setcc,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),((setcc) ? 0x10 : 0) | (op), (dest)) -#define sparc_logic_imm(ins,op,setcc,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm),((setcc) ? 0x10 : 0) | (op), (dest)) - -#define sparc_and(ins,setcc,r1,r2,dest) sparc_logic(ins,1,setcc,r1,r2,dest) -#define sparc_and_imm(ins,setcc,r1,imm,dest) sparc_logic_imm(ins,1,setcc,r1,imm,dest) - -#define sparc_andn(ins,setcc,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),(setcc)|5,(dest)) -#define sparc_andn_imm(ins,setcc,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm),(setcc)|5,(dest)) - -#define sparc_or(ins,setcc,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),(setcc)|2,(dest)) -#define sparc_or_imm(ins,setcc,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm),(setcc)|2,(dest)) - -#define sparc_orn(ins,setcc,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),(setcc)|6,(dest)) -#define sparc_orn_imm(ins,setcc,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm),(setcc)|6,(dest)) - -#define sparc_xor(ins,setcc,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),(setcc)|3,(dest)) -#define sparc_xor_imm(ins,setcc,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm), (setcc)|3,(dest)) - -#define sparc_xnor(ins,setcc,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),(setcc)|7,(dest)) -#define sparc_xnor_imm(ins,setcc,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm),(setcc)|7,(dest)) - -/* shift */ -#define sparc_sll(ins,src,disp,dest) sparc_encode_format3a((ins),2,0,(src),(disp),37,(dest)) -#define sparc_sll_imm(ins,src,disp,dest) sparc_encode_format3b((ins),2,(src),(disp),37,(dest)) - -/* Sparc V9 */ -#define sparc_sllx(ins,src,disp,dest) sparc_encode_format3ax((ins),2,0,(src),(disp),37,(dest)) -#define sparc_sllx_imm(ins,src,disp,dest) sparc_encode_format3bx((ins),2,(src),(disp),37,(dest)) - -#define sparc_srl(ins,src,disp,dest) sparc_encode_format3a((ins),2,0,(src),(disp),38,(dest)) -#define sparc_srl_imm(ins,src,disp,dest) sparc_encode_format3b((ins),2,(src),(disp),38,(dest)) - -/* Sparc V9 */ -#define sparc_srlx(ins,src,disp,dest) sparc_encode_format3ax((ins),2,0,(src),(disp),38,(dest)) -#define sparc_srlx_imm(ins,src,disp,dest) sparc_encode_format3bx((ins),2,(src),(disp),38,(dest)) - -#define sparc_sra(ins,src,disp,dest) sparc_encode_format3a((ins),2,0,(src),(disp),39,(dest)) -#define sparc_sra_imm(ins,src,disp,dest) sparc_encode_format3b((ins),2,(src),(disp),39,(dest)) - -/* Sparc V9 */ -#define sparc_srax(ins,src,disp,dest) sparc_encode_format3ax((ins),2,0,(src),(disp),39,(dest)) -#define sparc_srax_imm(ins,src,disp,dest) sparc_encode_format3bx((ins),2,(src),(disp),39,(dest)) - -/* alu */ - -#define sparc_alu_reg(ins,op,setcc,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),op|((setcc) ? 0x10 : 0),(dest)) -#define sparc_alu_imm(ins,op,setcc,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm),op|((setcc) ? 0x10 : 0),(dest)) - -#define sparc_add(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0,(setcc),(r1),(r2),(dest)) -#define sparc_add_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0,(setcc),(r1),(imm),(dest)) - -#define sparc_addx(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0x8,(setcc),(r1),(r2),(dest)) -#define sparc_addx_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0x8,(setcc),(r1),(imm),(dest)) - -#define sparc_sub(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0x4,(setcc),(r1),(r2),(dest)) -#define sparc_sub_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0x4,(setcc),(r1),(imm),(dest)) - -#define sparc_subx(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0xc,(setcc),(r1),(r2),(dest)) -#define sparc_subx_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0xc,(setcc),(r1),(imm),(dest)) - -#define sparc_muls(ins,r1,r2,dest) sparc_encode_format3a((ins),2,0,(r1),(r2),36,(dest)) -#define sparc_muls_imm(ins,r1,imm,dest) sparc_encode_format3b((ins),2,(r1),(imm),36,(dest)) - -#define sparc_umul(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0xa,(setcc),(r1),(r2),(dest)) -#define sparc_umul_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0xa,(setcc),(r1),(imm),(dest)) - -#define sparc_smul(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0xb,(setcc),(r1),(r2),(dest)) -#define sparc_smul_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0xb,(setcc),(r1),(imm),(dest)) - -#define sparc_udiv(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0xe,(setcc),(r1),(r2),(dest)) -#define sparc_udiv_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0xe,(setcc),(r1),(imm),(dest)) - -#define sparc_sdiv(ins,setcc,r1,r2,dest) sparc_alu_reg((ins),0xf,(setcc),(r1),(r2),(dest)) -#define sparc_sdiv_imm(ins,setcc,r1,imm,dest) sparc_alu_imm((ins),0xf,(setcc),(r1),(imm),(dest)) - - -/* branch */ -#define sparc_branch(ins,aval,condval,displ) sparc_encode_format2b((ins),(aval),(condval),2,(displ)) -/* FIXME: float condition codes are different: unify. */ -#define sparc_fbranch(ins,aval,condval,displ) sparc_encode_format2b((ins),(aval),(condval),6,(displ)) -#define sparc_branchp(ins,aval,condval,xcc,predict,displ) sparc_encode_format2c((ins),(aval),(condval),0x1,(xcc),(predict),(displ)) - -#define sparc_brz(ins,aval,predict,rs1,disp) sparc_encode_format2d((ins), (aval),0x1,0x3,(predict),(rs1),(disp)) -#define sparc_brlez(ins,aval,predict,rs1,disp) sparc_encode_format2d((ins), (aval),0x2,0x3,(predict),(rs1),(disp)) -#define sparc_brlz(ins,aval,predict,rs1,disp) sparc_encode_format2d((ins), (aval),0x3,0x3,(predict),(rs1),(disp)) -#define sparc_brnz(ins,aval,predict,rs1,disp) sparc_encode_format2d((ins), (aval),0x5,0x3,(predict),(rs1),(disp)) -#define sparc_brgz(ins,aval,predict,rs1,disp) sparc_encode_format2d((ins), (aval),0x6,0x3,(predict),(rs1),(disp)) -#define sparc_brgez(ins,aval,predict,rs1,disp) sparc_encode_format2d((ins), (aval),0x7,0x3,(predict),(rs1),(disp)) - -/* conditional moves */ -#define sparc_movcc(ins,cc,condval,r1,dest) sparc_encode_format4c((ins), 0x2, 0x2c, cc, condval, r1, dest) - -#define sparc_movcc_imm(ins,cc,condval,imm,dest) sparc_encode_format4d((ins), 0x2, 0x2c, cc, condval, imm, dest) - -/* synthetic instructions */ -#define sparc_cmp(ins,r1,r2) sparc_sub((ins),sparc_cc,(r1),(r2),sparc_g0) -#define sparc_cmp_imm(ins,r1,imm) sparc_sub_imm((ins),sparc_cc,(r1),(imm),sparc_g0) -#define sparc_jmp(ins,base,disp) sparc_jmpl((ins),(base),(disp),sparc_g0) -#define sparc_jmp_imm(ins,base,disp) sparc_jmpl_imm((ins),(base),(disp),sparc_g0) -#define sparc_call(ins,base,disp) sparc_jmpl((ins),(base),(disp),sparc_o7) -#define sparc_call_imm(ins,base,disp) sparc_jmpl_imm((ins),(base),(disp),sparc_o7) - -#define sparc_test(ins,reg) sparc_or ((ins),sparc_cc,sparc_g0,(reg),sparc_g0) - -#define sparc_ret(ins) sparc_jmpl_imm((ins),sparc_i7,8,sparc_g0) -#define sparc_retl(ins) sparc_jmpl_imm((ins),sparc_o7,8,sparc_g0) -#define sparc_restore_simple(ins) sparc_restore((ins),sparc_g0,sparc_g0,sparc_g0) -#define sparc_rett_simple(ins) sparc_rett_imm((ins),sparc_i7,8) - -#define sparc_set32(ins,val,reg) \ - do { \ - if ((val) == 0) \ - sparc_clr_reg((ins),(reg)); \ - else if (((guint32)(val) & 0x3ff) == 0) \ - sparc_sethi((ins),(guint32)(val),(reg)); \ - else if (((gint32)(val) >= -4096) && ((gint32)(val) <= 4095)) \ - sparc_or_imm((ins),FALSE,sparc_g0,(gint32)(val),(reg)); \ - else { \ - sparc_sethi((ins),(guint32)(val),(reg)); \ - sparc_or_imm((ins),FALSE,(reg),(guint32)(val)&0x3ff,(reg)); \ - } \ - } while (0) - -#ifdef SPARCV9 -#define SPARC_SET_MAX_SIZE (6 * 4) -#else -#define SPARC_SET_MAX_SIZE (2 * 4) -#endif - -#if SPARCV9 -#define sparc_set(ins,ptr,reg) \ - do { \ - g_assert ((reg) != sparc_g1); \ - gint64 val = (gint64)ptr; \ - guint32 top_word = (val) >> 32; \ - guint32 bottom_word = (val) & 0xffffffff; \ - if (val == 0) \ - sparc_clr_reg ((ins), reg); \ - else if ((val >= -4096) && ((val) <= 4095)) \ - sparc_or_imm((ins),FALSE,sparc_g0,bottom_word,(reg)); \ - else if ((val >= 0) && (val <= 4294967295L)) { \ - sparc_sethi((ins),bottom_word,(reg)); \ - if (bottom_word & 0x3ff) \ - sparc_or_imm((ins),FALSE,(reg),bottom_word&0x3ff,(reg)); \ - } \ - else if ((val >= 0) && (val <= (1L << 44) - 1)) { \ - sparc_sethi ((ins), (val >> 12), (reg)); \ - sparc_or_imm ((ins), FALSE, (reg), (val >> 12) & 0x3ff, (reg)); \ - sparc_sllx_imm ((ins),(reg), 12, (reg)); \ - sparc_or_imm ((ins), FALSE, (reg), (val) & 0xfff, (reg)); \ - } \ - else if (top_word == 0xffffffff) { \ - sparc_xnor ((ins), FALSE, sparc_g0, sparc_g0, sparc_g1); \ - sparc_sethi((ins),bottom_word,(reg)); \ - sparc_sllx_imm((ins),sparc_g1,32,sparc_g1); \ - sparc_or_imm((ins),FALSE,(reg),bottom_word&0x3ff,(reg)); \ - sparc_or((ins),FALSE,(reg),sparc_g1,(reg)); \ - } \ - else { \ - sparc_sethi((ins),top_word,sparc_g1); \ - sparc_sethi((ins),bottom_word,(reg)); \ - sparc_or_imm((ins),FALSE,sparc_g1,top_word&0x3ff,sparc_g1); \ - sparc_or_imm((ins),FALSE,(reg),bottom_word&0x3ff,(reg)); \ - sparc_sllx_imm((ins),sparc_g1,32,sparc_g1); \ - sparc_or((ins),FALSE,(reg),sparc_g1,(reg)); \ - } \ - } while (0) -#else -#define sparc_set(ins,val,reg) \ - do { \ - if ((val) == 0) \ - sparc_clr_reg((ins),(reg)); \ - else if (((guint32)(val) & 0x3ff) == 0) \ - sparc_sethi((ins),(guint32)(val),(reg)); \ - else if (((gint32)(val) >= -4096) && ((gint32)(val) <= 4095)) \ - sparc_or_imm((ins),FALSE,sparc_g0,(gint32)(val),(reg)); \ - else { \ - sparc_sethi((ins),(guint32)(val),(reg)); \ - sparc_or_imm((ins),FALSE,(reg),(guint32)(val)&0x3ff,(reg)); \ - } \ - } while (0) -#endif - -#define sparc_set_ptr(ins,val,reg) sparc_set(ins,val,reg) - -#ifdef SPARCV9 -#define sparc_set_template(ins,reg) sparc_set (ins,0x7fffffff7fffffff, reg) -#else -#define sparc_set_template(ins,reg) sparc_set (ins,0x7fffffff, reg) -#endif - -#define sparc_not(ins,reg) sparc_xnor((ins),FALSE,(reg),sparc_g0,(reg)) -#define sparc_neg(ins,reg) sparc_sub((ins),FALSE,sparc_g0,(reg),(reg)) -#define sparc_clr_reg(ins,reg) sparc_or((ins),FALSE,sparc_g0,sparc_g0,(reg)) - -#define sparc_mov_reg_reg(ins,src,dest) sparc_or((ins),FALSE,sparc_g0,(src),(dest)) - -#ifdef SPARCV9 -#define sparc_sti_imm sparc_stx_imm -#define sparc_ldi_imm sparc_ldx_imm -#define sparc_sti sparc_stx -#define sparc_ldi sparc_ldx -#else -#define sparc_sti_imm sparc_st_imm -#define sparc_ldi_imm sparc_ld_imm -#define sparc_sti sparc_st -#define sparc_ldi sparc_ld -#endif - -#endif /* __SPARC_CODEGEN_H__ */ - diff --git a/FFTS/Sources/FFTS/src/arch/sparc/test.c b/FFTS/Sources/FFTS/src/arch/sparc/test.c deleted file mode 100644 index 0d4ad18..0000000 --- a/FFTS/Sources/FFTS/src/arch/sparc/test.c +++ /dev/null @@ -1,123 +0,0 @@ -#include -#include "sparc-codegen.h" - -/* don't run the resulting program, it will destroy your computer, - * just objdump -d it to inspect we generated the correct assembler. - */ - -int -main () -{ - guint32 *p; - guint32 code_buffer [500]; - guint32 local_size = 0, stack_size = 0, code_size = 6; - guint32 arg_pos, simpletype; - unsigned char *ins; - int i, stringp, cur_out_reg, size; - - p = code_buffer; - - printf (".text\n.align 4\n.globl main\n.type main,@function\nmain:\n"); - - /* - * Standard function prolog. - */ - sparc_save_imm (p, sparc_sp, -112-stack_size, sparc_sp); - cur_out_reg = sparc_o0; - arg_pos = 0; - - if (1) { - sparc_mov_reg_reg (p, sparc_i2, cur_out_reg); - ++cur_out_reg; - } - - sparc_ld_imm (p, sparc_i3, arg_pos, cur_out_reg); - ++cur_out_reg; - sparc_ld_imm (p, sparc_i3, arg_pos+4, cur_out_reg); - ++cur_out_reg; - /* - * Insert call to function - */ - sparc_jmpl (p, sparc_i0, 0, sparc_callsite); - sparc_nop (p); - - sparc_jmpl_imm (p, sparc_i7, 8, sparc_zero); - sparc_restore (p, sparc_zero, sparc_zero, sparc_zero); - - sparc_ldsb (p, sparc_i3, sparc_l0, sparc_o5); - sparc_ldsb_imm (p, sparc_i3, 2, sparc_o5); - - sparc_ldsh (p, sparc_i3, sparc_l0, sparc_o5); - sparc_ldsh_imm (p, sparc_i3, 2, sparc_o5); - - sparc_ldub (p, sparc_i3, sparc_l0, sparc_o5); - sparc_ldub_imm (p, sparc_i3, 2, sparc_o5); - - sparc_lduh (p, sparc_i3, sparc_l0, sparc_o5); - sparc_lduh_imm (p, sparc_i3, 2, sparc_o5); - - sparc_ldf (p, sparc_i3, sparc_l0, sparc_o5); - sparc_ldf_imm (p, sparc_i3, 2, sparc_o5); - - sparc_stb (p, sparc_i3, sparc_l0, sparc_l2); - sparc_stb_imm (p, sparc_i3, sparc_o5, 2); - - sparc_sethi (p, 0xff000000, sparc_o2); - sparc_rdy (p, sparc_l0); - sparc_wry (p, sparc_l0, sparc_l1); - sparc_wry_imm (p, sparc_l0, 16); - sparc_stbar (p); - sparc_unimp (p, 24); - sparc_flush (p, sparc_l4, 0); - - sparc_and (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_and_imm (p, FALSE, sparc_l0, 0xff, sparc_o1); - sparc_andn (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_or (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_orn (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_xor (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_xnor (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - - sparc_sll (p, sparc_l0, sparc_l1, sparc_o1); - sparc_sll_imm (p, sparc_l0, 2, sparc_o1); - sparc_srl (p, sparc_l0, sparc_l1, sparc_o1); - sparc_srl_imm (p, sparc_l0, 2, sparc_o1); - sparc_sra (p, sparc_l0, sparc_l1, sparc_o1); - sparc_sra_imm (p, sparc_l0, 2, sparc_o1); - - sparc_add (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_add_imm (p, FALSE, sparc_l0, 0xff, sparc_o1); - sparc_addx (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_sub (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_subx (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - - sparc_muls (p, sparc_l0, sparc_l1, sparc_o1); - sparc_umul (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_smul (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_udiv (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - sparc_sdiv (p, sparc_cc, sparc_l0, sparc_l1, sparc_o1); - - sparc_branch (p, FALSE, sparc_bne, -12); - sparc_ret (p); - sparc_retl (p); - sparc_test (p, sparc_l4); - sparc_cmp (p, sparc_l4, sparc_l6); - sparc_cmp_imm (p, sparc_l4, 4); - sparc_restore_simple (p); - - sparc_set (p, 0xff000000, sparc_l7); - sparc_set (p, 1, sparc_l7); - sparc_set (p, 0xff0000ff, sparc_l7); - - sparc_not (p, sparc_g2); - sparc_neg (p, sparc_g3); - sparc_clr_reg (p, sparc_g4); - - - size = (p-code_buffer)*4; - ins = (gchar*)code_buffer; - for (i = 0; i < size; ++i) - printf (".byte %d\n", (unsigned int) ins [i]); - return 0; -} - diff --git a/FFTS/Sources/FFTS/src/arch/sparc/tramp.c b/FFTS/Sources/FFTS/src/arch/sparc/tramp.c deleted file mode 100644 index 19c0a78..0000000 --- a/FFTS/Sources/FFTS/src/arch/sparc/tramp.c +++ /dev/null @@ -1,1080 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Create trampolines to invoke arbitrary functions. - * - * Copyright (C) Ximian Inc. - * - * Authors: Paolo Molaro (lupus@ximian.com) - * Jeffrey Stedfast - * Mark Crichton - * - */ - -#include "config.h" -#include -#include -#include "sparc-codegen.h" -#include "mono/metadata/class.h" -#include "mono/metadata/tabledefs.h" -#include "mono/interpreter/interp.h" -#include "mono/metadata/appdomain.h" -#include "mono/metadata/debug-helpers.h" -#include "mono/metadata/marshal.h" - - -#define ARG_SIZE sizeof (stackval) -#define PROLOG_INS 1 -#define CALL_INS 3 /* Max 3. 1 for the jmpl and 1 for the nop and 1 for the possible unimp */ -#define EPILOG_INS 2 -#define FLOAT_REGS 32 -#define OUT_REGS 6 -#define LOCAL_REGS 8 -#define SLOT_SIZE sizeof(gpointer) -#if SPARCV9 -#define MINIMAL_STACK_SIZE 22 -#define BIAS 2047 -#define FRAME_ALIGN 16 -#else -#define MINIMAL_STACK_SIZE 23 -#define BIAS 0 -#define FRAME_ALIGN 8 -#endif - -#define NOT_IMPL(x) g_error("FIXME: %s", x); -/*#define DEBUG(a) a*/ -#define DEBUG(a) - -/* Some assembly... */ -#ifdef __GNUC__ -#define flushi(addr) __asm__ __volatile__ ("flush %0"::"r"(addr):"memory") -#else -static void flushi(void *addr) -{ - asm("flush %i0"); -} -#endif - -static char* -sig_to_name (MonoMethodSignature *sig, const char *prefix) -{ - int i; - char *result; - GString *res = g_string_new (""); - char *p; - - if (prefix) { - g_string_append (res, prefix); - g_string_append_c (res, '_'); - } - - mono_type_get_desc (res, sig->ret, TRUE); - - for (i = 0; i < sig->param_count; ++i) { - g_string_append_c (res, '_'); - mono_type_get_desc (res, sig->params [i], TRUE); - } - result = res->str; - p = result; - /* remove chars Sun's asssembler doesn't like */ - while (*p != '\0') { - if (*p == '.' || *p == '/') - *p = '_'; - else if (*p == '&') - *p = '$'; - else if (*p == '[' || *p == ']') - *p = 'X'; - p++; - } - g_string_free (res, FALSE); - return result; -} - -static void -sparc_disassemble_code (guint32 *code_buffer, guint32 *p, const char *id) -{ - guchar *cp; - FILE *ofd; - - if (!(ofd = fopen ("/tmp/test.s", "w"))) - g_assert_not_reached(); - - fprintf (ofd, "%s:\n", id); - - for (cp = (guchar *)code_buffer; cp < (guchar *)p; cp++) - fprintf (ofd, ".byte %d\n", *cp); - - fclose (ofd); - -#ifdef __GNUC__ - system ("as /tmp/test.s -o /tmp/test.o;objdump -d /tmp/test.o"); -#else - /* this assumes we are using Sun tools as we aren't GCC */ -#if SPARCV9 - system ("as -xarch=v9 /tmp/test.s -o /tmp/test.o;dis /tmp/test.o"); -#else - system ("as /tmp/test.s -o /tmp/test.o;dis /tmp/test.o"); -#endif -#endif -} - - -static void -add_general (guint *gr, guint *stack_size, guint *code_size, gboolean simple) -{ - if (simple) { - if (*gr >= OUT_REGS) { - *stack_size += SLOT_SIZE; - *code_size += 12; - } else { - *code_size += 4; - } - } else { - if (*gr >= OUT_REGS - 1) { - *stack_size += 8 + (*stack_size % 8); /* ???64 */ - *code_size += 16; - } else { - *code_size += 16; - } - (*gr)++; - } - (*gr)++; -} - -static void -calculate_sizes (MonoMethodSignature *sig, guint *stack_size, guint *code_size, - gboolean string_ctor, gboolean *use_memcpy) -{ - guint i, fr, gr; - guint32 simpletype; - - fr = gr = 0; - *stack_size = MINIMAL_STACK_SIZE * SLOT_SIZE; - *code_size = (PROLOG_INS + CALL_INS + EPILOG_INS) * 4; - - /* function arguments */ - if (sig->hasthis) - add_general (&gr, stack_size, code_size, TRUE); - - for (i = 0; i < sig->param_count; i++) { - if (sig->params[i]->byref) { - add_general (&gr, stack_size, code_size, TRUE); - continue; - } - simpletype = sig->params[i]->type; - enum_calc_size: - switch (simpletype) { - case MONO_TYPE_R4: -#if SPARCV9 - (*code_size) += 4; /* for the fdtos */ -#else - (*code_size) += 12; - (*stack_size) += 4; -#endif - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_CHAR: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_PTR: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - case MONO_TYPE_SZARRAY: - add_general (&gr, stack_size, code_size, TRUE); - break; - case MONO_TYPE_VALUETYPE: { - gint size; - guint32 align; - if (sig->params[i]->data.klass->enumtype) { - simpletype = sig->params[i]->data.klass->enum_basetype->type; - goto enum_calc_size; - } - size = mono_class_native_size (sig->params[i]->data.klass, &align); -#if SPARCV9 - if (size != 4) { -#else - if (1) { -#endif - DEBUG(fprintf(stderr, "copy %d byte struct on stack\n", size)); - *use_memcpy = TRUE; - *code_size += 8*4; - - *stack_size = (*stack_size + (align - 1)) & (~(align -1)); - *stack_size += (size + 3) & (~3); - if (gr > OUT_REGS) { - *code_size += 4; - *stack_size += 4; - } - } else { - add_general (&gr, stack_size, code_size, TRUE); -#if SPARCV9 - *code_size += 8; -#else - *code_size += 4; -#endif - } - break; - } - case MONO_TYPE_I8: - case MONO_TYPE_R8: - add_general (&gr, stack_size, code_size, FALSE); - break; - default: - g_error ("Can't trampoline 0x%x", sig->params[i]->type); - } - } - - /* function return value */ - if (sig->ret->byref || string_ctor) { - *code_size += 8; - } else { - simpletype = sig->ret->type; - enum_retvalue: - switch (simpletype) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_CHAR: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_PTR: - case MONO_TYPE_STRING: - case MONO_TYPE_R4: - case MONO_TYPE_R8: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_ARRAY: - *code_size += 8; - break; - case MONO_TYPE_I8: - *code_size += 12; - break; - case MONO_TYPE_VALUETYPE: { - gint size; - if (sig->ret->data.klass->enumtype) { - simpletype = sig->ret->data.klass->enum_basetype->type; - goto enum_retvalue; - } - size = mono_class_native_size (sig->ret->data.klass, NULL); -#if SPARCV9 - if (size <= 32) - *code_size += 8 + (size + 7) / 2; - else - *code_size += 8; -#else - *code_size += 8; -#endif - break; - } - case MONO_TYPE_VOID: - break; - default: - g_error ("Can't handle as return value 0x%x", sig->ret->type); - } - } - - if (*use_memcpy) { - *stack_size += 8; - *code_size += 24; - if (sig->hasthis) { - *stack_size += SLOT_SIZE; - *code_size += 4; - } - } - - *stack_size = (*stack_size + (FRAME_ALIGN - 1)) & (~(FRAME_ALIGN -1)); -} - -static inline guint32 * -emit_epilog (guint32 *p, MonoMethodSignature *sig, guint stack_size) -{ - int ret_offset = 8; - - /* - * Standard epilog. - * 8 may be 12 when returning structures (to skip unimp opcode). - */ -#if !SPARCV9 - if (sig != NULL && !sig->ret->byref && sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->data.klass->enumtype) - ret_offset = 12; -#endif - sparc_jmpl_imm (p, sparc_i7, ret_offset, sparc_zero); - sparc_restore (p, sparc_zero, sparc_zero, sparc_zero); - - return p; -} - -static inline guint32 * -emit_prolog (guint32 *p, MonoMethodSignature *sig, guint stack_size) -{ - /* yes kids, it is this simple! */ - sparc_save_imm (p, sparc_sp, -stack_size, sparc_sp); - return p; -} - -#if SPARCV9 -#define sparc_st_ptr(a,b,c,d) sparc_stx(a,b,c,d) -#define sparc_st_imm_ptr(a,b,c,d) sparc_stx_imm(a,b,c,d) -#define sparc_ld_ptr(a,b,c,d) sparc_ldx(a,b,c,d) -#define sparc_ld_imm_ptr(a,b,c,d) sparc_ldx_imm(a,b,c,d) -#else -#define sparc_st_ptr(a,b,c,d) sparc_st(a,b,c,d) -#define sparc_st_imm_ptr(a,b,c,d) sparc_st_imm(a,b,c,d) -#define sparc_ld_ptr(a,b,c,d) sparc_ld(a,b,c,d) -#define sparc_ld_imm_ptr(a,b,c,d) sparc_ld_imm(a,b,c,d) -#endif - -/* synonyms for when values are really widened scalar values */ -#define sparc_st_imm_word sparc_st_imm_ptr - -#define ARG_BASE sparc_i3 /* pointer to args in i3 */ -#define SAVE_PTR_IN_GENERIC_REGISTER \ - if (gr < OUT_REGS) { \ - sparc_ld_imm_ptr (p, ARG_BASE, i*ARG_SIZE, sparc_o0 + gr); \ - gr++; \ - } else { \ - sparc_ld_imm_ptr (p, ARG_BASE, i*ARG_SIZE, sparc_l0); \ - sparc_st_imm_ptr (p, sparc_l0, sparc_sp, stack_par_pos); \ - stack_par_pos += SLOT_SIZE; \ - } - -#if SPARCV9 -/* This is a half hearted attempt at coping with structs by value - the - actual convention is complicated when floats & doubles are involved as - you end up with fields in different registers on/off the stack. - It will take more time to get right... */ -static guint32 * -v9_struct_arg(guint32 *p, int arg_index, MonoClass *klass, int size, guint *p_gr) -{ - MonoMarshalType *info = mono_marshal_load_type_info (klass); - int off = 0; - int index = 0; - guint gr = *p_gr; - sparc_ld_imm_ptr (p, ARG_BASE, arg_index*ARG_SIZE, sparc_l0); - if (size > 8) { - if (info->fields [index].field->type->type == MONO_TYPE_R8) { - sparc_lddf_imm (p, sparc_l0, 0, sparc_f0 + 2 * gr); - index++; - } - else { - sparc_ldx_imm (p, sparc_l0, 0, sparc_o0 + gr); - index++; /* FIXME could be multiple fields in one register */ - } - gr++; - size -= 8; - off = 8; - } - if (size > 0) { - if (info->fields [index].field->type->type == MONO_TYPE_R8) { - sparc_lddf_imm (p, sparc_l0, off, sparc_f0 + 2 * gr); - index++; - } - else { - /* will load extra garbage off end of short structs ... */ - sparc_ldx_imm (p, sparc_l0, off, sparc_o0 + gr); - } - gr++; - } - *p_gr = gr; - return p; -} -#endif - -static inline guint32* -emit_save_parameters (guint32 *p, MonoMethodSignature *sig, guint stack_size, - gboolean use_memcpy) -{ - guint i, fr, gr, stack_par_pos, struct_pos, cur_struct_pos; - guint32 simpletype; - - fr = gr = 0; - stack_par_pos = MINIMAL_STACK_SIZE * SLOT_SIZE + BIAS; - - if (sig->hasthis) { - if (use_memcpy) { - /* we don't need to save a thing. */ - } else - sparc_mov_reg_reg (p, sparc_i2, sparc_o0); - gr ++; - } - - if (use_memcpy) { - cur_struct_pos = struct_pos = stack_par_pos; - for (i = 0; i < sig->param_count; i++) { - if (sig->params[i]->byref) - continue; - if (sig->params[i]->type == MONO_TYPE_VALUETYPE && - !sig->params[i]->data.klass->enumtype) { - gint size; - guint32 align; - - size = mono_class_native_size (sig->params[i]->data.klass, &align); -#if SPARCV9 - if (size != 4) { -#else - if (1) { -#endif - /* Add alignment */ - stack_par_pos = (stack_par_pos + (align - 1)) & (~(align - 1)); - /* need to call memcpy here */ - sparc_add_imm (p, 0, sparc_sp, stack_par_pos, sparc_o0); - sparc_ld_imm_ptr (p, sparc_i3, i*16, sparc_o1); - sparc_set (p, (guint32)size, sparc_o2); - sparc_set_ptr (p, (void *)memmove, sparc_l0); - sparc_jmpl_imm (p, sparc_l0, 0, sparc_callsite); - sparc_nop (p); - stack_par_pos += (size + (SLOT_SIZE - 1)) & (~(SLOT_SIZE - 1)); - } - } - } - } - - if (sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->byref) { - MonoClass *klass = sig->ret->data.klass; - if (!klass->enumtype) { - gint size = mono_class_native_size (klass, NULL); - - DEBUG(fprintf(stderr, "retval value type size: %d\n", size)); -#if SPARCV9 - if (size > 32) { -#else - { -#endif - /* pass on buffer in interp.c to called function */ - sparc_ld_imm_ptr (p, sparc_i1, 0, sparc_l0); - sparc_st_imm_ptr (p, sparc_l0, sparc_sp, 64); - } - } - } - - DEBUG(fprintf(stderr, "%s\n", sig_to_name(sig, FALSE))); - - for (i = 0; i < sig->param_count; i++) { - if (sig->params[i]->byref) { - SAVE_PTR_IN_GENERIC_REGISTER; - continue; - } - simpletype = sig->params[i]->type; - enum_calc_size: - switch (simpletype) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_CHAR: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - if (gr < OUT_REGS) { - sparc_ld_imm (p, ARG_BASE, i*ARG_SIZE, sparc_o0 + gr); - gr++; - } else { - sparc_ld_imm (p, ARG_BASE, i*ARG_SIZE, sparc_l0); - sparc_st_imm_word (p, sparc_l0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - } - break; - - case MONO_TYPE_R4: -#if SPARCV9 - sparc_lddf_imm (p, ARG_BASE, i*ARG_SIZE, sparc_f30); /* fix using this fixed reg */ - sparc_fdtos(p, sparc_f30, sparc_f0 + 2 * gr + 1); - gr++; - break; -#else - /* Convert from double to single */ - sparc_lddf_imm (p, ARG_BASE, i*ARG_SIZE, sparc_f0); - sparc_fdtos (p, sparc_f0, sparc_f0); - - /* - * FIXME: Is there an easier way to do an - * freg->ireg move ? - */ - sparc_stf_imm (p, sparc_f0, sparc_sp, stack_par_pos); - - if (gr < OUT_REGS) { - sparc_ld_imm (p, sparc_sp, stack_par_pos, sparc_o0 + gr); - gr++; - } else { - sparc_ldf_imm (p, sparc_sp, stack_par_pos, sparc_f0); - sparc_stf_imm (p, sparc_f0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - } - break; -#endif - - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_PTR: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - case MONO_TYPE_SZARRAY: - SAVE_PTR_IN_GENERIC_REGISTER; - break; - case MONO_TYPE_VALUETYPE: { - gint size; - guint32 align; - MonoClass *klass = sig->params[i]->data.klass; - if (klass->enumtype) { - simpletype = klass->enum_basetype->type; - goto enum_calc_size; - } - size = mono_class_native_size (klass, &align); -#if SPARCV9 - if (size <= 16) { - if (gr < OUT_REGS) { - p = v9_struct_arg(p, i, klass, size, &gr); - } else { - sparc_ld_imm_ptr (p, ARG_BASE, i*ARG_SIZE, sparc_l0); - sparc_ld_imm (p, sparc_l0, 0, sparc_l0); - sparc_st_imm_word (p, sparc_l0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - } - break; - } -#else - /* - * FIXME: The 32bit ABI docs do not mention that small - * structures are passed in registers. - */ - - /* - if (size == 4) { - if (gr < OUT_REGS) { - sparc_ld_imm_ptr (p, ARG_BASE, i*ARG_SIZE, sparc_l0); - sparc_ld_imm (p, sparc_l0, 0, sparc_o0 + gr); - gr++; - } else { - sparc_ld_imm_ptr (p, ARG_BASE, i*ARG_SIZE, sparc_l0); - sparc_ld_imm (p, sparc_l0, 0, sparc_l0); - sparc_st_imm_word (p, sparc_l0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - } - break; - } - */ -#endif - - cur_struct_pos = (cur_struct_pos + (align - 1)) & (~(align - 1)); - if (gr < OUT_REGS) { - sparc_add_imm (p, 0, sparc_sp, - cur_struct_pos, sparc_o0 + gr); - gr ++; - } else { - sparc_ld_imm_ptr (p, sparc_sp, - cur_struct_pos, - sparc_l1); - sparc_st_imm_ptr (p, sparc_l1, - sparc_sp, - stack_par_pos); - } - cur_struct_pos += (size + (SLOT_SIZE - 1)) & (~(SLOT_SIZE - 1)); - break; - } - -#if SPARCV9 - case MONO_TYPE_I8: - if (gr < OUT_REGS) { - sparc_ldx_imm (p, ARG_BASE, i*ARG_SIZE, sparc_o0 + gr); - gr++; - } else { - sparc_ldx_imm (p, ARG_BASE, i*ARG_SIZE, sparc_l0); - sparc_stx_imm (p, sparc_l0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - } - break; - case MONO_TYPE_R8: - sparc_lddf_imm (p, ARG_BASE, i*ARG_SIZE, sparc_f0 + 2 * i); - break; -#else - case MONO_TYPE_I8: - case MONO_TYPE_R8: - if (gr < (OUT_REGS - 1)) { - sparc_ld_imm (p, ARG_BASE, i*ARG_SIZE, sparc_o0 + gr); - gr ++; - - sparc_ld_imm (p, ARG_BASE, - (i*ARG_SIZE) + 4, - sparc_o0 + gr); - gr ++; - } else if (gr == (OUT_REGS - 1)) { - /* Split register/stack */ - sparc_ld_imm (p, ARG_BASE, i*ARG_SIZE, sparc_o0 + gr); - gr ++; - - sparc_ld_imm (p, ARG_BASE, (i*ARG_SIZE) + 4, sparc_l0); - sparc_st_imm (p, sparc_l0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - } else { - sparc_ld_imm (p, ARG_BASE, i*ARG_SIZE, sparc_l0); - sparc_st_imm (p, sparc_l0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - - sparc_ld_imm (p, ARG_BASE, (i*ARG_SIZE) + 4, sparc_l0); - sparc_st_imm (p, sparc_l0, sparc_sp, stack_par_pos); - stack_par_pos += SLOT_SIZE; - } - break; -#endif - default: - g_error ("Can't trampoline 0x%x", sig->params[i]->type); - } - } - - g_assert ((stack_par_pos - BIAS) <= stack_size); - - return p; -} - -static inline guint32 * -alloc_code_memory (guint code_size) -{ - guint32 *p; - - p = g_malloc(code_size); - - return p; -} - -static inline guint32 * -emit_call_and_store_retval (guint32 *p, MonoMethodSignature *sig, - guint stack_size, gboolean string_ctor) -{ - guint32 simpletype; - - /* call "callme" */ - sparc_jmpl_imm (p, sparc_i0, 0, sparc_callsite); - sparc_nop (p); -#if !SPARCV9 - if (sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->data.klass->enumtype) { - int size = mono_class_native_size (sig->ret->data.klass, NULL); - sparc_unimp (p, size & 4095); - } -#endif - - /* get return value */ - if (sig->ret->byref || string_ctor) { - sparc_st_ptr (p, sparc_o0, sparc_i1, 0); - } else { - simpletype = sig->ret->type; - enum_retval: - switch (simpletype) { - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - sparc_stb (p, sparc_o0, sparc_i1, 0); - break; - case MONO_TYPE_CHAR: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - sparc_sth (p, sparc_o0, sparc_i1, 0); - break; - case MONO_TYPE_I4: - case MONO_TYPE_U4: - sparc_st (p, sparc_o0, sparc_i1, 0); - break; - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_CLASS: - case MONO_TYPE_OBJECT: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_ARRAY: - case MONO_TYPE_STRING: - case MONO_TYPE_PTR: - sparc_st_ptr (p, sparc_o0, sparc_i1, 0); - break; - case MONO_TYPE_R4: - sparc_stf (p, sparc_f0, sparc_i1, 0); - break; - case MONO_TYPE_R8: - sparc_stdf (p, sparc_f0, sparc_i1, 0); - break; - case MONO_TYPE_I8: -#if SPARCV9 - sparc_stx (p, sparc_o0, sparc_i1, 0); -#else - sparc_std (p, sparc_o0, sparc_i1, 0); -#endif - break; - case MONO_TYPE_VALUETYPE: { - gint size; - if (sig->ret->data.klass->enumtype) { - simpletype = sig->ret->data.klass->enum_basetype->type; - goto enum_retval; - } -#if SPARCV9 - size = mono_class_native_size (sig->ret->data.klass, NULL); - if (size <= 32) { - int n_regs = size / 8; - int j; - sparc_ldx_imm (p, sparc_i1, 0, sparc_i1); - /* wrong if there are floating values in the struct... */ - for (j = 0; j < n_regs; j++) { - sparc_stx_imm (p, sparc_o0 + j, sparc_i1, j * 8); - } - size -= n_regs * 8; - if (size > 0) { - int last_reg = sparc_o0 + n_regs; - /* get value right aligned in register */ - sparc_srlx_imm(p, last_reg, 64 - 8 * size, last_reg); - if ((size & 1) != 0) { - sparc_stb_imm (p, last_reg, sparc_i1, n_regs * 8 + size - 1); - size--; - if (size > 0) - sparc_srlx_imm(p, last_reg, 8, last_reg); - } - if ((size & 2) != 0) { - sparc_sth_imm (p, last_reg, sparc_i1, n_regs * 8 + size - 2); - size -= 2; - if (size > 0) - sparc_srlx_imm(p, last_reg, 16, last_reg); - } - if ((size & 4) != 0) - sparc_st_imm (p, last_reg, sparc_i1, n_regs * 8); - } - } -#endif - } - case MONO_TYPE_VOID: - break; - default: - g_error ("Can't handle as return value 0x%x", sig->ret->type); - } - } - return p; -} - -MonoPIFunc -mono_arch_create_trampoline (MonoMethodSignature *sig, gboolean string_ctor) -{ - guint32 *p, *code_buffer; - guint stack_size, code_size, i; - gboolean use_memcpy = FALSE; - static GHashTable *cache = NULL; - MonoPIFunc res; - - if (!cache) - cache = g_hash_table_new ((GHashFunc)mono_signature_hash, - (GCompareFunc)mono_metadata_signature_equal); - - if ((res = (MonoPIFunc)g_hash_table_lookup(cache, sig))) - return res; - - calculate_sizes (sig, &stack_size, &code_size, - string_ctor, &use_memcpy); - - p = code_buffer = alloc_code_memory (code_size); - p = emit_prolog (p, sig, stack_size); - p = emit_save_parameters (p, sig, stack_size, use_memcpy); - p = emit_call_and_store_retval (p, sig, stack_size, string_ctor); - /* we don't return structs here so pass in NULL as signature */ - p = emit_epilog (p, NULL, stack_size); - - g_assert(p <= code_buffer + (code_size / 4)); - - DEBUG(sparc_disassemble_code (code_buffer, p, sig_to_name(sig, NULL))); - - /* So here's the deal... - * UltraSPARC will flush a whole cache line at a time - * BUT, older SPARCs won't. - * So, be compatable and flush dwords at a time... - */ - - for (i = 0; i < ((p - code_buffer)/2); i++) - flushi((code_buffer + (i*8))); - - g_hash_table_insert(cache, sig, code_buffer); - - return (MonoPIFunc)code_buffer; -} - -#define MINV_POS (MINIMAL_STACK_SIZE * SLOT_SIZE + BIAS) - -void * -mono_arch_create_method_pointer (MonoMethod *method) -{ - MonoMethodSignature *sig; - MonoJitInfo *ji; - guint stack_size, code_size, stackval_arg_pos, local_pos; - guint i, local_start, reg_param = 0, stack_param, cpos, vt_cur; - guint32 align = 0; - guint32 *p, *code_buffer; - gint *vtbuf; - gint32 simpletype; - - code_size = 1024; /* these should be calculated... */ - stack_size = 1024; - stack_param = 0; - - sig = method->signature; - - p = code_buffer = g_malloc (code_size); - - DEBUG(fprintf(stderr, "Delegate [start emiting] %s\n", method->name)); - DEBUG(fprintf(stderr, "%s\n", sig_to_name(sig, FALSE))); - - p = emit_prolog (p, sig, stack_size); - - /* fill MonoInvocation */ - sparc_st_imm_ptr (p, sparc_g0, sparc_sp, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, ex))); - sparc_st_imm_ptr (p, sparc_g0, sparc_sp, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, ex_handler))); - sparc_st_imm_ptr (p, sparc_g0, sparc_sp, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, parent))); - - sparc_set_ptr (p, (void *)method, sparc_l0); - sparc_st_imm_ptr (p, sparc_l0, sparc_sp, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, method))); - - stackval_arg_pos = MINV_POS + sizeof (MonoInvocation); - local_start = local_pos = stackval_arg_pos + (sig->param_count + 1) * sizeof (stackval); - - if (sig->hasthis) { - sparc_st_imm_ptr (p, sparc_i0, sparc_sp, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, obj))); - reg_param = 1; - } - - if (sig->param_count) { - gint save_count = MIN (OUT_REGS, sig->param_count + sig->hasthis); - for (i = reg_param; i < save_count; i++) { - sparc_st_imm_ptr (p, sparc_i0 + i, sparc_sp, local_pos); - local_pos += SLOT_SIZE; - } - } - - /* prepare space for valuetypes */ - vt_cur = local_pos; - vtbuf = alloca (sizeof(int)*sig->param_count); - cpos = 0; - for (i = 0; i < sig->param_count; i++) { - MonoType *type = sig->params [i]; - vtbuf [i] = -1; - if (!sig->params[i]->byref && type->type == MONO_TYPE_VALUETYPE) { - MonoClass *klass = type->data.klass; - gint size; - - if (klass->enumtype) - continue; - size = mono_class_native_size (klass, &align); - cpos += align - 1; - cpos &= ~(align - 1); - vtbuf [i] = cpos; - cpos += size; - } - } - cpos += SLOT_SIZE - 1; - cpos &= ~(SLOT_SIZE - 1); - - local_pos += cpos; - - /* set MonoInvocation::stack_args */ - sparc_add_imm (p, 0, sparc_sp, stackval_arg_pos, sparc_l0); - sparc_st_imm_ptr (p, sparc_l0, sparc_sp, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, stack_args))); - - /* add stackval arguments */ - for (i=0; i < sig->param_count; i++) { - int stack_offset; - int type; - if (reg_param < OUT_REGS) { - stack_offset = local_start + i * SLOT_SIZE; - reg_param++; - } else { - stack_offset = stack_size + 8 + stack_param; - stack_param++; - } - - if (!sig->params[i]->byref) { - type = sig->params[i]->type; - enum_arg: - switch (type) { - case MONO_TYPE_I8: - case MONO_TYPE_U8: - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_STRING: - case MONO_TYPE_OBJECT: - case MONO_TYPE_CLASS: - case MONO_TYPE_SZARRAY: - case MONO_TYPE_PTR: - case MONO_TYPE_R8: - break; - case MONO_TYPE_I4: - case MONO_TYPE_U4: - stack_offset += SLOT_SIZE - 4; - break; - case MONO_TYPE_CHAR: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - stack_offset += SLOT_SIZE - 2; - break; - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_BOOLEAN: - stack_offset += SLOT_SIZE - 1; - break; - case MONO_TYPE_VALUETYPE: - if (sig->params[i]->data.klass->enumtype) { - type = sig->params[i]->data.klass->enum_basetype->type; - goto enum_arg; - } - g_assert(vtbuf[i] >= 0); - break; - default: - g_error ("can not cope with delegate arg type %d", type); - } - } - - sparc_add_imm (p, 0, sparc_sp, stack_offset, sparc_o2); - - if (vtbuf[i] >= 0) { - sparc_add_imm (p, 0, sparc_sp, vt_cur, sparc_o1); - sparc_st_imm_ptr (p, sparc_o1, sparc_sp, stackval_arg_pos); - sparc_add_imm (p, 0, sparc_sp, stackval_arg_pos, - sparc_o1); - sparc_ld_imm_ptr (p, sparc_o2, 0, sparc_o2); - vt_cur += vtbuf[i]; - } else { - sparc_add_imm (p, 0, sparc_sp, stackval_arg_pos, - sparc_o1); - } - - sparc_set_ptr (p, (void *)sig->params[i], sparc_o0); - sparc_set (p, (guint32)sig->pinvoke, sparc_o3); - - /* YOU make the CALL! */ - sparc_set_ptr (p, (void *)stackval_from_data, sparc_l0); - sparc_jmpl_imm (p, sparc_l0, 0, sparc_callsite); - sparc_nop (p); - stackval_arg_pos += sizeof(stackval); - } - - /* return value storage */ - /* Align to dword */ - stackval_arg_pos = (stackval_arg_pos + (8 - 1)) & (~(8 -1)); - if (sig->param_count) { - sparc_add_imm (p, 0, sparc_sp, stackval_arg_pos, sparc_l0); - } - if (!sig->ret->byref && sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->data.klass->enumtype) { -#if !SPARCV9 - /* pass on callers buffer */ - sparc_ld_imm_ptr (p, sparc_fp, 64, sparc_l1); - sparc_st_imm_ptr (p, sparc_l1, sparc_l0, 0); -#else - sparc_add_imm (p, 0, sparc_l0, sizeof(stackval), sparc_l1); - sparc_st_imm_ptr (p, sparc_l1, sparc_l0, 0); -#endif - } - - sparc_st_imm_ptr (p, sparc_l0, sparc_sp, - (MINV_POS + G_STRUCT_OFFSET (MonoInvocation, retval))); - - /* call ves_exec_method */ - sparc_add_imm (p, 0, sparc_sp, MINV_POS, sparc_o0); - sparc_set_ptr (p, (void *)ves_exec_method, sparc_l0); - sparc_jmpl_imm (p, sparc_l0, 0, sparc_callsite); - sparc_nop (p); - - /* move retval from stackval to proper place (r3/r4/...) */ - if (sig->ret->byref) { - sparc_ld_imm_ptr (p, sparc_sp, stackval_arg_pos, sparc_i0 ); - } else { - enum_retvalue: - switch (sig->ret->type) { - case MONO_TYPE_VOID: - break; - case MONO_TYPE_BOOLEAN: - case MONO_TYPE_I1: - case MONO_TYPE_U1: - case MONO_TYPE_I2: - case MONO_TYPE_U2: - case MONO_TYPE_I4: - case MONO_TYPE_U4: - sparc_ld_imm (p, sparc_sp, stackval_arg_pos, sparc_i0); - break; - case MONO_TYPE_I: - case MONO_TYPE_U: - case MONO_TYPE_OBJECT: - case MONO_TYPE_STRING: - case MONO_TYPE_CLASS: - sparc_ld_imm_ptr (p, sparc_sp, stackval_arg_pos, sparc_i0); - break; - case MONO_TYPE_I8: - case MONO_TYPE_U8: -#if SPARCV9 - sparc_ldx_imm (p, sparc_sp, stackval_arg_pos, sparc_i0); -#else - sparc_ld_imm (p, sparc_sp, stackval_arg_pos, sparc_i0); - sparc_ld_imm (p, sparc_sp, stackval_arg_pos + 4, sparc_i1); -#endif - break; - case MONO_TYPE_R4: - sparc_lddf_imm (p, sparc_sp, stackval_arg_pos, sparc_f0); - sparc_fdtos(p, sparc_f0, sparc_f0); - break; - case MONO_TYPE_R8: - sparc_lddf_imm (p, sparc_sp, stackval_arg_pos, sparc_f0); - break; - case MONO_TYPE_VALUETYPE: { - gint size; - gint reg = sparc_i0; - if (sig->ret->data.klass->enumtype) { - simpletype = sig->ret->data.klass->enum_basetype->type; - goto enum_retvalue; - } -#if SPARCV9 - size = mono_class_native_size (sig->ret->data.klass, NULL); - sparc_ldx_imm (p, sparc_sp, stackval_arg_pos, sparc_l0); - if (size <= 16) { - gint off = 0; - if (size >= 8) { - sparc_ldx_imm (p, sparc_l0, 0, reg); - size -= 8; - off += 8; - reg++; - } - if (size > 0) - sparc_ldx_imm (p, sparc_l0, off, reg); - } else - NOT_IMPL("value type as ret val from delegate"); -#endif - break; - } - default: - g_error ("Type 0x%x not handled yet in thunk creation", - sig->ret->type); - break; - } - } - - p = emit_epilog (p, sig, stack_size); - - for (i = 0; i < ((p - code_buffer)/2); i++) - flushi((code_buffer + (i*8))); - - ji = g_new0 (MonoJitInfo, 1); - ji->method = method; - ji->code_size = p - code_buffer; - ji->code_start = code_buffer; - - mono_jit_info_table_add (mono_get_root_domain (), ji); - - DEBUG(sparc_disassemble_code (code_buffer, p, method->name)); - - DEBUG(fprintf(stderr, "Delegate [end emiting] %s\n", method->name)); - - return ji->code_start; -} diff --git a/FFTS/Sources/FFTS/src/arch/x64/.gitignore b/FFTS/Sources/FFTS/src/arch/x64/.gitignore deleted file mode 100644 index 6930f61..0000000 --- a/FFTS/Sources/FFTS/src/arch/x64/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/Makefile.in -/Makefile -/.deps -/.libs diff --git a/FFTS/Sources/FFTS/src/arch/x64/Makefile.am b/FFTS/Sources/FFTS/src/arch/x64/Makefile.am deleted file mode 100644 index db9d583..0000000 --- a/FFTS/Sources/FFTS/src/arch/x64/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -EXTRA_DIST = x64-codegen.h - diff --git a/FFTS/Sources/FFTS/src/arch/x64/x64-codegen.h b/FFTS/Sources/FFTS/src/arch/x64/x64-codegen.h deleted file mode 100644 index 02b9907..0000000 --- a/FFTS/Sources/FFTS/src/arch/x64/x64-codegen.h +++ /dev/null @@ -1,1938 +0,0 @@ -/* - * x64-codegen.h: Macros for generating x86-64 code - * - * Authors: - * Paolo Molaro (lupus@ximian.com) - * Intel Corporation (ORP Project) - * Sergey Chaban (serge@wildwestsoftware.com) - * Dietmar Maurer (dietmar@ximian.com) - * Patrik Torstensson - * Zalman Stern - * - * Copyright (C) 2000 Intel Corporation. All rights reserved. - * Copyright (C) 2001, 2002 Ximian, Inc. - */ - -#ifndef X64_H -#define X64_H - -#include "../x86/x86-codegen.h" - -#include - -/* x86-64 general purpose registers */ -typedef enum { - X64_RAX = 0, - X64_RCX = 1, - X64_RDX = 2, - X64_RBX = 3, - X64_RSP = 4, - X64_RBP = 5, - X64_RSI = 6, - X64_RDI = 7, - X64_R8 = 8, - X64_R9 = 9, - X64_R10 = 10, - X64_R11 = 11, - X64_R12 = 12, - X64_R13 = 13, - X64_R14 = 14, - X64_R15 = 15, - X64_RIP = 16, - X64_NREG -} X64_Reg_No; - -/* x86-64 XMM registers */ -typedef enum { - X64_XMM0 = 0, - X64_XMM1 = 1, - X64_XMM2 = 2, - X64_XMM3 = 3, - X64_XMM4 = 4, - X64_XMM5 = 5, - X64_XMM6 = 6, - X64_XMM7 = 7, - X64_XMM8 = 8, - X64_XMM9 = 9, - X64_XMM10 = 10, - X64_XMM11 = 11, - X64_XMM12 = 12, - X64_XMM13 = 13, - X64_XMM14 = 14, - X64_XMM15 = 15, - X64_XMM_NREG = 16, -} X64_XMM_Reg_No; - -typedef enum -{ - X64_REX_B = 1, /* The register in r/m field, base register in SIB byte, or reg in opcode is 8-15 rather than 0-7 */ - X64_REX_X = 2, /* The index register in SIB byte is 8-15 rather than 0-7 */ - X64_REX_R = 4, /* The reg field of ModRM byte is 8-15 rather than 0-7 */ - X64_REX_W = 8 /* Opeartion is 64-bits instead of 32 (default) or 16 (with 0x66 prefix) */ -} X64_REX_Bits; - -#if defined(__native_client_codegen__) - -#define x64_codegen_pre(inst) uint8_t* _codegen_start = (inst); x64_nacl_instruction_pre(); -#define x64_codegen_post(inst) (x64_nacl_instruction_post(&_codegen_start, &(inst)), _codegen_start); - -/* Because of rex prefixes, etc, call sequences are not constant size. */ -/* These pre- and post-sequence hooks remedy this by aligning the call */ -/* sequence after we emit it, since we will know the exact size then. */ -#define x64_call_sequence_pre(inst) uint8_t* _code_start = (inst); -#define x64_call_sequence_post(inst) \ - (mono_nacl_align_call(&_code_start, &(inst)), _code_start); - -/* Native client can load/store using one of the following registers */ -/* as a base: rip, r15, rbp, rsp. Any other base register needs to have */ -/* its upper 32 bits cleared and reference memory using r15 as the base. */ -#define x64_is_valid_nacl_base(reg) \ - ((reg) == X64_RIP || (reg) == X64_R15 || \ - (reg) == X64_RBP || (reg) == X64_RSP) -#else - -#define x64_codegen_pre(inst) -#define x64_codegen_post(inst) - -#endif /* __native_client_codegen__ */ - -#ifdef TARGET_WIN32 -#define X64_ARG_REG1 X64_RCX -#define X64_ARG_REG2 X64_RDX -#define X64_ARG_REG3 X64_R8 -#define X64_ARG_REG4 X64_R9 -#else -#define X64_ARG_REG1 X64_RDI -#define X64_ARG_REG2 X64_RSI -#define X64_ARG_REG3 X64_RDX -#define X64_ARG_REG4 X64_RCX -#endif - -#ifdef TARGET_WIN32 -#define X64_CALLEE_REGS ((1 << X64_RAX) | (1 << X64_RCX) | (1 << X64_RDX) | (1 << X64_R8) | (1 << X64_R9) | (1 << X64_R10)) -#define X64_IS_CALLEE_REG(reg) (X64_CALLEE_REGS & (1 << (reg))) - -#define X64_ARGUMENT_REGS ((1 << X64_RDX) | (1 << X64_RCX) | (1 << X64_R8) | (1 << X64_R9)) -#define X64_IS_ARGUMENT_REG(reg) (X64_ARGUMENT_REGS & (1 << (reg))) - -#define X64_CALLEE_SAVED_REGS ((1 << X64_RDI) | (1 << X64_RSI) | (1 << X64_RBX) | (1 << X64_R12) | (1 << X64_R13) | (1 << X64_R14) | (1 << X64_R15) | (1 << X64_RBP)) -#define X64_IS_CALLEE_SAVED_REG(reg) (X64_CALLEE_SAVED_REGS & (1 << (reg))) -#elif defined(__native_client_codegen__) -/* x64 Native Client code may not write R15 */ -#define X64_CALLEE_REGS ((1 << X64_RAX) | (1 << X64_RCX) | (1 << X64_RDX) | (1 << X64_RSI) | (1 << X64_RDI) | (1 << X64_R8) | (1 << X64_R9) | (1 << X64_R10)) -#define X64_IS_CALLEE_REG(reg) (X64_CALLEE_REGS & (1 << (reg))) - -#define X64_ARGUMENT_REGS ((1 << X64_RDI) | (1 << X64_RSI) | (1 << X64_RDX) | (1 << X64_RCX) | (1 << X64_R8) | (1 << X64_R9)) -#define X64_IS_ARGUMENT_REG(reg) (X64_ARGUMENT_REGS & (1 << (reg))) - -#define X64_CALLEE_SAVED_REGS ((1 << X64_RBX) | (1 << X64_R12) | (1 << X64_R13) | (1 << X64_R14) | (1 << X64_RBP)) -#define X64_IS_CALLEE_SAVED_REG(reg) (X64_CALLEE_SAVED_REGS & (1 << (reg))) -#else -#define X64_CALLEE_REGS ((1 << X64_RAX) | (1 << X64_RCX) | (1 << X64_RDX) | (1 << X64_RSI) | (1 << X64_RDI) | (1 << X64_R8) | (1 << X64_R9) | (1 << X64_R10)) -#define X64_IS_CALLEE_REG(reg) (X64_CALLEE_REGS & (1 << (reg))) - -#define X64_ARGUMENT_REGS ((1 << X64_RDI) | (1 << X64_RSI) | (1 << X64_RDX) | (1 << X64_RCX) | (1 << X64_R8) | (1 << X64_R9)) -#define X64_IS_ARGUMENT_REG(reg) (X64_ARGUMENT_REGS & (1 << (reg))) - -#define X64_CALLEE_SAVED_REGS ((1 << X64_RBX) | (1 << X64_R12) | (1 << X64_R13) | (1 << X64_R14) | (1 << X64_R15) | (1 << X64_RBP)) -#define X64_IS_CALLEE_SAVED_REG(reg) (X64_CALLEE_SAVED_REGS & (1 << (reg))) -#endif - -#define X64_REX(bits) ((unsigned char)(0x40 | (bits))) - -#if defined(__native_client_codegen__) -#define x64_emit_rex(inst, width, reg_modrm, reg_index, reg_rm_base_opcode) do \ - { \ - unsigned char _x64_rex_bits = \ - (((width) > 4) ? X64_REX_W : 0) | \ - (((reg_modrm) > 7) ? X64_REX_R : 0) | \ - (((reg_index) > 7) ? X64_REX_X : 0) | \ - (((reg_rm_base_opcode) > 7) ? X64_REX_B : 0); \ - x64_nacl_tag_rex((inst)); \ - if ((_x64_rex_bits != 0) || (((width) == 1))) *(inst)++ = X64_REX(_x64_rex_bits); \ - } while (0) -#else -#define x64_emit_rex(inst, width, reg_modrm, reg_index, reg_rm_base_opcode) do \ - { \ - unsigned char _x64_rex_bits = \ - (((width) > 4) ? X64_REX_W : 0) | \ - (((reg_modrm) > 7) ? X64_REX_R : 0) | \ - (((reg_index) > 7) ? X64_REX_X : 0) | \ - (((reg_rm_base_opcode) > 7) ? X64_REX_B : 0); \ - if ((_x64_rex_bits != 0) || (((width) == 1))) *(inst)++ = X64_REX(_x64_rex_bits); \ - } while (0) -#endif /* __native_client_codegen__ */ - -typedef union { - uint64_t val; - unsigned char b[8]; -} x64_imm_buf; - -/* In 64 bit mode, all registers have a low byte subregister */ -#undef X86_IS_BYTE_REG -#define X86_IS_BYTE_REG(reg) 1 - -#define x64_modrm_mod(modrm) ((modrm) >> 6) -#define x64_modrm_reg(modrm) (((modrm) >> 3) & 0x7) -#define x64_modrm_rm(modrm) ((modrm) & 0x7) - -#define x64_rex_r(rex) ((((rex) >> 2) & 0x1) << 3) -#define x64_rex_x(rex) ((((rex) >> 1) & 0x1) << 3) -#define x64_rex_b(rex) ((((rex) >> 0) & 0x1) << 3) - -#define x64_sib_scale(sib) ((sib) >> 6) -#define x64_sib_index(sib) (((sib) >> 3) & 0x7) -#define x64_sib_base(sib) ((sib) & 0x7) - -#define x64_is_imm32(val) ((int64_t)val >= -((int64_t)1<<31) && (int64_t)val <= (((int64_t)1<<31)-1)) - -#define x86_imm_emit64(inst,imm) \ - do { \ - x64_imm_buf imb; \ - imb.val = (uint64_t) (imm); \ - *(inst)++ = imb.b [0]; \ - *(inst)++ = imb.b [1]; \ - *(inst)++ = imb.b [2]; \ - *(inst)++ = imb.b [3]; \ - *(inst)++ = imb.b [4]; \ - *(inst)++ = imb.b [5]; \ - *(inst)++ = imb.b [6]; \ - *(inst)++ = imb.b [7]; \ - } while (0) - -#define x64_membase_emit(inst,reg,basereg,disp) do { \ - if ((basereg) == X64_RIP) { \ - x86_address_byte ((inst), 0, (reg)&0x7, 5); \ - x86_imm_emit32 ((inst), (disp)); \ - } \ - else \ - x86_membase_emit ((inst),(reg)&0x7, (basereg)&0x7, (disp)); \ -} while (0) - -#define x64_memindex_emit(inst, reg, basereg, disp, indexreg, shift) \ - x86_memindex_emit((inst), ((reg) & 0x7), ((basereg) & 0x7), (disp), ((indexreg) & 0x7), (shift)) - -#define x64_alu_reg_imm_size_body(inst,opc,reg,imm,size) \ - do { \ - if (x86_is_imm8((imm))) { \ - x64_emit_rex(inst, size, 0, 0, (reg)); \ - *(inst)++ = (unsigned char)0x83; \ - x86_reg_emit ((inst), (opc), (reg)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else if ((reg) == X64_RAX) { \ - x64_emit_rex(inst, size, 0, 0, 0); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 5; \ - x86_imm_emit32 ((inst), (imm)); \ - } else { \ - x64_emit_rex(inst, size, 0, 0, (reg)); \ - *(inst)++ = (unsigned char)0x81; \ - x86_reg_emit ((inst), (opc), (reg)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x64_alu_reg_reg_size_body(inst,opc,dreg,reg,size) \ - do { \ - x64_emit_rex(inst, size, (dreg), 0, (reg)); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 3; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#if defined(__native_client_codegen__) -/* NaCl modules may not directly update RSP or RBP other than direct copies */ -/* between them. Instead the lower 4 bytes are updated and then added to R15 */ -#define x64_is_nacl_stack_reg(reg) (((reg) == X64_RSP) || ((reg) == X64_RBP)) - -#define x64_alu_reg_imm_size(inst,opc,reg,imm,size) \ - do{ \ - x64_codegen_pre(inst); \ - if (x64_is_nacl_stack_reg(reg)) { \ - if (((opc) != X86_ADD) && ((opc) != X86_SUB)) \ - g_assert_not_reached(); \ - x64_alu_reg_imm_size_body((inst), (opc), (reg), (imm), 4); \ - /* Use LEA instead of ADD to preserve flags */ \ - x64_lea_memindex_size((inst), (reg), (reg), 0, X64_R15, 0, 8); \ - } else { \ - x64_alu_reg_imm_size_body((inst), (opc), (reg), (imm), (size)); \ - } \ - x64_codegen_post(inst); \ - } while(0) - -#define x64_alu_reg_reg_size(inst,opc,dreg,reg,size) \ - do { \ - x64_codegen_pre(inst); \ - if (x64_is_nacl_stack_reg((dreg)) && ((reg) != X64_R15)) { \ - if (((opc) != X86_ADD && (opc) != X86_SUB)) \ - g_assert_not_reached(); \ - x64_alu_reg_reg_size_body((inst), (opc), (dreg), (reg), 4); \ - /* Use LEA instead of ADD to preserve flags */ \ - x64_lea_memindex_size((inst), (dreg), (dreg), 0, X64_R15, 0, 8); \ - } else { \ - x64_alu_reg_reg_size_body((inst), (opc), (dreg), (reg), (size)); \ - } \ - x64_codegen_post(inst); \ - } while (0) - -#else - -#define x64_alu_reg_imm_size(inst,opc,reg,imm,size) \ - x64_alu_reg_imm_size_body((inst), (opc), (reg), (imm), (size)) - -#define x64_alu_reg_reg_size(inst,opc,dreg,reg,size) \ - x64_alu_reg_reg_size_body((inst), (opc), (dreg), (reg), (size)) - -#endif /*__native_client_codegen__*/ - -#define x64_alu_reg_imm(inst,opc,reg,imm) x64_alu_reg_imm_size((inst),(opc),(reg),(imm),8) - -#define x64_alu_reg_reg(inst,opc,dreg,reg) x64_alu_reg_reg_size ((inst),(opc),(dreg),(reg),8) - -#define x64_alu_reg_membase_size(inst,opc,reg,basereg,disp,size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex ((inst),(size),(reg),0,(basereg)); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 3; \ - x64_membase_emit (inst, reg, basereg, disp); \ - x64_codegen_post(inst); \ -} while (0) - -#define x64_mov_regp_reg(inst,regp,reg,size) \ - do { \ - x64_codegen_pre(inst); \ - if ((size) == 2) \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - x64_emit_rex(inst, (size), (reg), 0, (regp)); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x88; break; \ - case 2: case 4: case 8: *(inst)++ = (unsigned char)0x89; break; \ - default: assert (0); \ - } \ - x86_regp_emit ((inst), (reg), (regp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_mov_membase_reg(inst,basereg,disp,reg,size) \ - do { \ - x64_codegen_pre(inst); \ - if ((size) == 2) \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - x64_emit_rex(inst, (size), (reg), 0, (basereg)); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x88; break; \ - case 2: case 4: case 8: *(inst)++ = (unsigned char)0x89; break; \ - default: assert (0); \ - } \ - x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_mov_mem_reg(inst,mem,reg,size) \ - do { \ - x64_codegen_pre(inst); \ - if ((size) == 2) \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - x64_emit_rex(inst, (size), (reg), 0, 0); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x88; break; \ - case 2: case 4: case 8: *(inst)++ = (unsigned char)0x89; break; \ - default: assert (0); \ - } \ - x86_address_byte ((inst), 0, (reg), 4); \ - x86_address_byte ((inst), 0, 4, 5); \ - x86_imm_emit32 ((inst), (mem)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_mov_reg_reg(inst,dreg,reg,size) \ - do { \ - x64_codegen_pre(inst); \ - if ((size) == 2) \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - x64_emit_rex(inst, (size), (dreg), 0, (reg)); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x8a; break; \ - case 2: case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x86_reg_emit ((inst), (dreg), (reg)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_mov_reg_mem_body(inst,reg,mem,size) \ - do { \ - x64_codegen_pre(inst); \ - if ((size) == 2) \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - x64_emit_rex(inst, (size), (reg), 0, 0); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x8a; break; \ - case 2: case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x86_address_byte ((inst), 0, (reg), 4); \ - x86_address_byte ((inst), 0, 4, 5); \ - x86_imm_emit32 ((inst), (mem)); \ - x64_codegen_post(inst); \ - } while (0) - -#if defined(__native_client_codegen__) -/* We have to re-base memory reads because memory isn't zero based. */ -#define x64_mov_reg_mem(inst,reg,mem,size) \ - do { \ - x64_mov_reg_membase((inst),(reg),X64_R15,(mem),(size)); \ - } while (0) -#else -#define x64_mov_reg_mem(inst,reg,mem,size) \ - do { \ - x64_mov_reg_mem_body((inst),(reg),(mem),(size)); \ - } while (0) -#endif /* __native_client_codegen__ */ - -#define x64_mov_reg_membase_body(inst,reg,basereg,disp,size) \ - do { \ - if ((size) == 2) \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - x64_emit_rex(inst, (size), (reg), 0, (basereg)); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x8a; break; \ - case 2: case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x64_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x64_mov_reg_memindex_size_body(inst,reg,basereg,disp,indexreg,shift,size) \ - do { \ - x64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); \ - x86_mov_reg_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(size) == 8 ? 4 : (size)); \ - } while (0) - -#if defined(__native_client_codegen__) - -#define x64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) \ - do { \ - x64_codegen_pre(inst); \ - if (x64_is_nacl_stack_reg((reg))) { \ - /* Clear upper 32 bits with mov of size 4 */ \ - x64_mov_reg_memindex_size_body((inst), (reg), (basereg), (disp), (indexreg), (shift), 4); \ - /* Add %r15 using LEA to preserve flags */ \ - x64_lea_memindex_size((inst), (reg), (reg), 0, X64_R15, 0, 8); \ - } else { \ - x64_mov_reg_memindex_size_body((inst), (reg), (basereg), (disp), (indexreg), (shift), (size)); \ - } \ - x64_codegen_post(inst); \ - } while(0) - -#define x64_mov_reg_membase(inst,reg,basereg,disp,size) \ - do { \ - x64_codegen_pre(inst); \ - if (x64_is_nacl_stack_reg((reg))) { \ - /* Clear upper 32 bits with mov of size 4 */ \ - x64_mov_reg_membase_body((inst), (reg), (basereg), (disp), 4); \ - /* Add %r15 */ \ - x64_lea_memindex_size((inst), (reg), (reg), 0, X64_R15, 0, 8); \ - } else { \ - x64_mov_reg_membase_body((inst), (reg), (basereg), (disp), (size)); \ - } \ - x64_codegen_post(inst); \ - } while (0) - -#else - -#define x64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) \ - x64_mov_reg_memindex_size_body((inst),(reg),(basereg),(disp),(indexreg),(shift),(size)) -#define x64_mov_reg_membase(inst,reg,basereg,disp,size) \ - do { \ - x64_mov_reg_membase_body((inst), (reg), (basereg), (disp), (size)); \ - } while (0) - -#endif /*__native_client_codegen__*/ - -#define x64_movzx_reg_membase(inst,reg,basereg,disp,size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst, (size), (reg), 0, (basereg)); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x0f; *(inst)++ = (unsigned char)0xb6; break; \ - case 2: *(inst)++ = (unsigned char)0x0f; *(inst)++ = (unsigned char)0xb7; break; \ - case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movsxd_reg_mem(inst,reg,mem) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst,8,(reg),0,0); \ - *(inst)++ = (unsigned char)0x63; \ - x86_mem_emit ((inst), ((reg)&0x7), (mem)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movsxd_reg_membase(inst,reg,basereg,disp) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst,8,(reg),0,(basereg)); \ - *(inst)++ = (unsigned char)0x63; \ - x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movsxd_reg_memindex(inst, reg, basereg, disp, indexreg, shift) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst,8,(reg),0,(basereg)); \ - *(inst)++ = (unsigned char)0x63; \ - x64_memindex_emit((inst), (reg), (basereg), (disp), (indexreg), (shift)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movsxd_reg_reg(inst,dreg,reg) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst,8,(dreg),0,(reg)); \ - *(inst)++ = (unsigned char)0x63; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - x64_codegen_post(inst); \ - } while (0) - -/* Pretty much the only instruction that supports a 64-bit immediate. Optimize for common case of - * 32-bit immediate. Pepper with casts to avoid warnings. - */ -#define x64_mov_reg_imm_size(inst,reg,imm,size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst, (size), 0, 0, (reg)); \ - *(inst)++ = (unsigned char)0xb8 + ((reg) & 0x7); \ - if ((size) == 8) \ - x86_imm_emit64 ((inst), (uint64_t)(imm)); \ - else \ - x86_imm_emit32 ((inst), (int)(uint64_t)(imm)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_mov_reg_imm(inst,reg,imm) \ - do { \ - int _x64_width_temp = ((uint64_t)(imm) == (uint64_t)(int)(uint64_t)(imm)); \ - x64_codegen_pre(inst); \ - x64_mov_reg_imm_size ((inst), (reg), (imm), (_x64_width_temp ? 4 : 8)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_set_reg_template(inst,reg) x64_mov_reg_imm_size ((inst),(reg), 0, 8) - -#define x64_set_template(inst,reg) x64_set_reg_template((inst),(reg)) - -#define x64_mov_membase_imm(inst,basereg,disp,imm,size) \ - do { \ - x64_codegen_pre(inst); \ - if ((size) == 2) \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - x64_emit_rex(inst, (size) == 1 ? 0 : (size), 0, 0, (basereg)); \ - if ((size) == 1) { \ - *(inst)++ = (unsigned char)0xc6; \ - x86_membase_emit ((inst), 0, (basereg) & 0x7, (disp)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else if ((size) == 2) { \ - *(inst)++ = (unsigned char)0xc7; \ - x86_membase_emit ((inst), 0, (basereg) & 0x7, (disp)); \ - x86_imm_emit16 ((inst), (imm)); \ - } else { \ - *(inst)++ = (unsigned char)0xc7; \ - x86_membase_emit ((inst), 0, (basereg) & 0x7, (disp)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - x64_codegen_post(inst); \ - } while (0) - - -#define x64_lea_membase_body(inst,reg,basereg,disp) \ - do { \ - x64_emit_rex(inst, 8, (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)0x8d; \ - x64_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#if defined(__native_client_codegen__) -/* NaCl modules may not write directly into RSP/RBP. Instead, use a */ -/* 32-bit LEA and add R15 to the effective address */ -#define x64_lea_membase(inst,reg,basereg,disp) \ - do { \ - x64_codegen_pre(inst); \ - if (x64_is_nacl_stack_reg(reg)) { \ - /* 32-bit LEA */ \ - x64_emit_rex((inst), 4, (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)0x8d; \ - x64_membase_emit((inst), (reg), (basereg), (disp)); \ - /* Use a 64-bit LEA instead of an ADD to preserve flags */ \ - x64_lea_memindex_size((inst), (reg), (reg), 0, X64_R15, 0, 8); \ - } else { \ - x64_lea_membase_body((inst), (reg), (basereg), (disp)); \ - } \ - x64_codegen_post(inst); \ - } while (0) -#else -#define x64_lea_membase(inst,reg,basereg,disp) \ - x64_lea_membase_body((inst), (reg), (basereg), (disp)) -#endif /*__native_client_codegen__*/ - -/* Instruction are implicitly 64-bits so don't generate REX for just the size. */ -#define x64_push_reg(inst,reg) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst, 0, 0, 0, (reg)); \ - *(inst)++ = (unsigned char)0x50 + ((reg) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -/* Instruction is implicitly 64-bits so don't generate REX for just the size. */ -#define x64_push_membase(inst,basereg,disp) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst, 0, 0, 0, (basereg)); \ - *(inst)++ = (unsigned char)0xff; \ - x86_membase_emit ((inst), 6, (basereg) & 0x7, (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_pop_reg_body(inst,reg) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex(inst, 0, 0, 0, (reg)); \ - *(inst)++ = (unsigned char)0x58 + ((reg) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -#if defined(__native_client_codegen__) - -/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits */ -#define x64_jump_reg_size(inst,reg,size) \ - do { \ - x64_codegen_pre((inst)); \ - x64_alu_reg_imm_size((inst), X86_AND, (reg), (nacl_align_byte), 4); \ - x64_alu_reg_reg_size((inst), X86_ADD, (reg), X64_R15, 8); \ - x64_emit_rex ((inst),0,0,0,(reg)); \ - x86_jump_reg((inst),((reg)&0x7)); \ - x64_codegen_post((inst)); \ - } while (0) - -/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits */ -#define x64_jump_mem_size(inst,mem,size) \ - do { \ - x64_codegen_pre((inst)); \ - x64_mov_reg_mem((inst), (mem), X64_R11, 4); \ - x64_jump_reg_size((inst), X64_R11, 4); \ - x64_codegen_post((inst)); \ - } while (0) - -#define x64_call_reg_internal(inst,reg) \ - do { \ - x64_codegen_pre((inst)); \ - x64_alu_reg_imm_size((inst), X86_AND, (reg), (nacl_align_byte), 4); \ - x64_alu_reg_reg_size((inst), X86_ADD, (reg), X64_R15, 8); \ - x64_emit_rex((inst), 0, 0, 0, (reg)); \ - x86_call_reg((inst), ((reg) & 0x7)); \ - x64_codegen_post((inst)); \ - } while (0) - -#define x64_call_reg(inst,reg) \ - do { \ - x64_codegen_pre((inst)); \ - x64_call_sequence_pre(inst); \ - x64_call_reg_internal((inst), (reg)); \ - x64_call_sequence_post(inst); \ - x64_codegen_post((inst)); \ - } while (0) - - -#define x64_ret(inst) \ - do { \ - x64_codegen_pre(inst); \ - x64_pop_reg_body((inst), X64_R11); \ - x64_jump_reg_size((inst), X64_R11, 8); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_leave(inst) \ - do { \ - x64_codegen_pre(inst); \ - x64_mov_reg_reg((inst), X64_RSP, X64_RBP, 8); \ - x64_pop_reg_body((inst), X64_R11); \ - x64_mov_reg_reg_size((inst), X64_RBP, X64_R11, 4); \ - x64_alu_reg_reg_size((inst), X86_ADD, X64_RBP, X64_R15, 8); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_pop_reg(inst,reg) \ - do { \ - x64_codegen_pre(inst); \ - if (x64_is_nacl_stack_reg((reg))) { \ - x64_pop_reg_body((inst), X64_R11); \ - x64_mov_reg_reg_size((inst), (reg), X64_R11, 4); \ - x64_alu_reg_reg_size((inst), X86_ADD, (reg), X64_R15, 8); \ - } else { \ - x64_pop_reg_body((inst), (reg)); \ - } \ - x64_codegen_post(inst); \ - } while (0) - -#else - -#define x64_call_reg(inst,reg) \ - do { \ - x64_emit_rex(inst, 0, 0, 0, (reg)); \ - *(inst)++ = (unsigned char)0xff; \ - x86_reg_emit ((inst), 2, ((reg) & 0x7)); \ - } while (0) - - -#define x64_ret(inst) do { *(inst)++ = (unsigned char)0xc3; } while (0) -#define x64_leave(inst) do { *(inst)++ = (unsigned char)0xc9; } while (0) - -#define x64_pop_reg(inst,reg) x64_pop_reg_body((inst), (reg)) - -#endif /*__native_client_codegen__*/ - -#define x64_movsd_reg_regp(inst,reg,regp) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf2); \ - x64_emit_rex(inst, 0, (reg), 0, (regp)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x10; \ - x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movsd_regp_reg(inst,regp,reg) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf2); \ - x64_emit_rex(inst, 0, (reg), 0, (regp)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x11; \ - x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movss_reg_regp(inst,reg,regp) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf3); \ - x64_emit_rex(inst, 0, (reg), 0, (regp)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x10; \ - x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movss_regp_reg(inst,regp,reg) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf3); \ - x64_emit_rex(inst, 0, (reg), 0, (regp)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x11; \ - x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movsd_reg_membase(inst,reg,basereg,disp) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf2); \ - x64_emit_rex(inst, 0, (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x10; \ - x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movss_reg_membase(inst,reg,basereg,disp) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf3); \ - x64_emit_rex(inst, 0, (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x10; \ - x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movsd_membase_reg(inst,basereg,disp,reg) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf2); \ - x64_emit_rex(inst, 0, (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x11; \ - x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_movss_membase_reg(inst,basereg,disp,reg) \ - do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), 0xf3); \ - x64_emit_rex(inst, 0, (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x11; \ - x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -/* The original inc_reg opcode is used as the REX prefix */ -#define x64_inc_reg_size(inst,reg,size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex ((inst),(size),0,0,(reg)); \ - *(inst)++ = (unsigned char)0xff; \ - x86_reg_emit ((inst),0,(reg) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_dec_reg_size(inst,reg,size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex ((inst),(size),0,0,(reg)); \ - *(inst)++ = (unsigned char)0xff; \ - x86_reg_emit ((inst),1,(reg) & 0x7); \ - x64_codegen_post(inst); \ - } while (0) - -#define x64_fld_membase_size(inst,basereg,disp,is_double,size) do { \ - x64_codegen_pre(inst); \ - x64_emit_rex ((inst),0,0,0,(basereg)); \ - *(inst)++ = (is_double) ? (unsigned char)0xdd : (unsigned char)0xd9; \ - x64_membase_emit ((inst), 0, (basereg), (disp)); \ - x64_codegen_post(inst); \ -} while (0) - -#if defined(__native_client_codegen__) - -/* The 3-7 byte NOP sequences in x64_padding_size below are all illegal in */ -/* 64-bit Native Client because they load into rSP/rBP or use duplicate */ -/* prefixes. Instead we use the NOPs recommended in Section 3.5.1.8 of the */ -/* Intel64 and IA-32 Architectures Optimization Reference Manual and */ -/* Section 4.13 of AMD Software Optimization Guide for Family 10h Processors. */ - -#define x64_padding_size(inst,size) \ - do { \ - unsigned char *code_start = (inst); \ - switch ((size)) { \ - /* xchg %eax,%eax, recognized by hardware as a NOP */ \ - case 1: *(inst)++ = 0x90; break; \ - /* xchg %ax,%ax */ \ - case 2: *(inst)++ = 0x66; *(inst)++ = 0x90; \ - break; \ - /* nop (%rax) */ \ - case 3: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \ - *(inst)++ = 0x00; \ - break; \ - /* nop 0x0(%rax) */ \ - case 4: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \ - x86_address_byte ((inst), 1, 0, X64_RAX); \ - x86_imm_emit8 ((inst), 0); \ - break; \ - /* nop 0x0(%rax,%rax) */ \ - case 5: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \ - x86_address_byte ((inst), 1, 0, 4); \ - x86_address_byte ((inst), 0, X64_RAX, X64_RAX); \ - x86_imm_emit8 ((inst), 0); \ - break; \ - /* nopw 0x0(%rax,%rax) */ \ - case 6: *(inst)++ = 0x66; *(inst)++ = 0x0f; \ - *(inst)++ = 0x1f; \ - x86_address_byte ((inst), 1, 0, 4); \ - x86_address_byte ((inst), 0, X64_RAX, X64_RAX); \ - x86_imm_emit8 ((inst), 0); \ - break; \ - /* nop 0x0(%rax) (32-bit displacement) */ \ - case 7: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \ - x86_address_byte ((inst), 2, 0, X64_RAX); \ - x86_imm_emit32((inst), 0); \ - break; \ - /* nop 0x0(%rax,%rax) (32-bit displacement) */ \ - case 8: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \ - x86_address_byte ((inst), 2, 0, 4); \ - x86_address_byte ((inst), 0, X64_RAX, X64_RAX); \ - x86_imm_emit32 ((inst), 0); \ - break; \ - default: \ - g_assert_not_reached(); \ - } \ - g_assert(code_start + (size) == (unsigned char *)(inst)); \ - } while (0) - -/* Size is ignored for Native Client calls, we restrict jumping to 32-bits */ -#define x64_call_membase_size(inst,basereg,disp,size) \ - do { \ - x64_codegen_pre((inst)); \ - x64_call_sequence_pre(inst); \ - x64_mov_reg_membase((inst), X64_R11, (basereg), (disp), 4); \ - x64_call_reg_internal((inst), X64_R11); \ - x64_call_sequence_post(inst); \ - x64_codegen_post((inst)); \ - } while (0) - -/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits */ -#define x64_jump_membase_size(inst,basereg,disp,size) \ - do { \ - x64_mov_reg_membase((inst), X64_R11, (basereg), (disp), 4); \ - x64_jump_reg_size((inst), X64_R11, 4); \ - } while (0) - -/* On Native Client we can't jump more than INT_MAX in either direction */ -#define x64_jump_code_size(inst,target,size) \ - do { \ - /* x86_jump_code used twice in case of */ \ - /* relocation by x64_codegen_post */ \ - uint8_t* jump_start; \ - x64_codegen_pre(inst); \ - assert(x64_is_imm32 ((int64_t)(target) - (int64_t)(inst))); \ - x86_jump_code((inst),(target)); \ - inst = x64_codegen_post(inst); \ - jump_start = (inst); \ - x86_jump_code((inst),(target)); \ - mono_x64_patch(jump_start, (target)); \ -} while (0) - -#else - -/* From the AMD64 Software Optimization Manual */ -#define x64_padding_size(inst,size) \ - do { \ - switch ((size)) { \ - case 1: *(inst)++ = 0x90; break; \ - case 2: *(inst)++ = 0x66; *(inst)++ = 0x90; break; \ - case 3: *(inst)++ = 0x66; *(inst)++ = 0x66; *(inst)++ = 0x90; break; \ - default: x64_emit_rex ((inst),8,0,0,0); x86_padding ((inst), (size) - 1); \ - }; \ - } while (0) - -#define x64_call_membase_size(inst,basereg,disp,size) do { x64_emit_rex ((inst),0,0,0,(basereg)); *(inst)++ = (unsigned char)0xff; x64_membase_emit ((inst),2, (basereg),(disp)); } while (0) -#define x64_jump_membase_size(inst,basereg,disp,size) do { x64_emit_rex ((inst),0,0,0,(basereg)); *(inst)++ = (unsigned char)0xff; x64_membase_emit ((inst), 4, (basereg), (disp)); } while (0) - -#define x64_jump_code_size(inst,target,size) do { \ - if (x64_is_imm32 ((int64_t)(target) - (int64_t)(inst))) { \ - x86_jump_code((inst),(target)); \ - } else { \ - x64_jump_membase ((inst), X64_RIP, 0); \ - *(uint64_t*)(inst) = (uint64_t)(target); \ - (inst) += 8; \ - } \ -} while (0) - -#endif /*__native_client_codegen__*/ - -/* - * SSE - */ - -//TODO Reorganize SSE opcode defines. - -/* Two opcode SSE defines */ -#define emit_sse_reg_reg_op2(inst, dreg, reg, op1, op2) \ - emit_sse_reg_reg_op2_size((inst), (dreg), (reg), (op1), (op2), 0) - -#define emit_sse_reg_reg_op2_size(inst, dreg, reg, op1, op2, size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex ((inst), size, (dreg), 0, (reg)); \ - *(inst)++ = (unsigned char)(op1); \ - *(inst)++ = (unsigned char)(op2); \ - x86_reg_emit ((inst), (dreg), (reg)); \ - x64_codegen_post(inst); \ - } while (0) - -#define emit_sse_reg_reg_op2_imm(inst, dreg, reg, op1, op2, imm) \ - do { \ - x64_codegen_pre(inst); \ - emit_sse_reg_reg_op2 ((inst), (dreg), (reg), (op1), (op2)); \ - x86_imm_emit8 ((inst), (imm)); \ - x64_codegen_post(inst); \ - } while (0) - -#define emit_sse_membase_reg_op2(inst, basereg, disp, reg, op1, op2) \ - emit_sse_membase_reg_op2_size((inst), (basereg), (disp), (reg), (op1), (op2), 0) - -#define emit_sse_membase_reg_op2_size(inst, basereg, disp, reg, op1, op2, size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex ((inst), (size), (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)(op1); \ - *(inst)++ = (unsigned char)(op2); \ - x64_membase_emit ((inst), (reg), (basereg), (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define emit_sse_memindex_reg_op2(inst, basereg, disp, indexreg, shift, reg, op1, op2) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex (inst, 0, (reg), (indexreg), (basereg)); \ - *(inst)++ = (unsigned char)(op1); \ - *(inst)++ = (unsigned char)(op2); \ - x64_memindex_emit((inst), (reg), (basereg), (disp), (indexreg), (shift)); \ - x64_codegen_post(inst); \ - } while(0) - -#define emit_sse_reg_membase_op2(inst, dreg, basereg, disp, op1, op2) \ - emit_sse_reg_membase_op2_size((inst), (dreg), (basereg), (disp), (op1), (op2), 0) - -#define emit_sse_reg_membase_op2_size(inst, dreg, basereg, disp, op1, op2, size) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex ((inst), (size), (dreg), 0, (basereg) == X64_RIP ? 0 : (basereg)); \ - *(inst)++ = (unsigned char)(op1); \ - *(inst)++ = (unsigned char)(op2); \ - x64_membase_emit ((inst), (dreg), (basereg), (disp)); \ - x64_codegen_post(inst); \ - } while (0) - -#define emit_sse_reg_memindex_op2(inst, dreg, basereg, disp, indexreg, shift, op1, op2) \ - do { \ - x64_codegen_pre(inst); \ - x64_emit_rex (inst, 0, (dreg), (indexreg), (basereg) == X64_RIP ? 0 : (basereg)); \ - *(inst)++ = (unsigned char)(op1); \ - *(inst)++ = (unsigned char)(op2); \ - x64_memindex_emit((inst), (dreg), (basereg), (disp), (indexreg), (shift)); \ - x64_codegen_post(inst); \ - } while(0) - -/* Three opcode SSE defines */ -#define emit_opcode3(inst,op1,op2,op3) do { \ - *(inst)++ = (unsigned char)(op1); \ - *(inst)++ = (unsigned char)(op2); \ - *(inst)++ = (unsigned char)(op3); \ -} while (0) - -#define emit_sse_reg_reg_size(inst,dreg,reg,op1,op2,op3,size) do { \ - x64_codegen_pre(inst); \ - *(inst)++ = (unsigned char)(op1); \ - x64_emit_rex ((inst), size, (dreg), 0, (reg)); \ - *(inst)++ = (unsigned char)(op2); \ - *(inst)++ = (unsigned char)(op3); \ - x86_reg_emit ((inst), (dreg), (reg)); \ - x64_codegen_post(inst); \ -} while (0) - -#define emit_sse_reg_reg(inst,dreg,reg,op1,op2,op3) emit_sse_reg_reg_size ((inst), (dreg), (reg), (op1), (op2), (op3), 0) - -#define emit_sse_reg_reg_imm(inst,dreg,reg,op1,op2,op3,imm) do { \ - x64_codegen_pre(inst); \ - emit_sse_reg_reg ((inst), (dreg), (reg), (op1), (op2), (op3)); \ - x86_imm_emit8 ((inst), (imm)); \ - x64_codegen_post(inst); \ -} while (0) - -#define emit_sse_membase_reg(inst,basereg,disp,reg,op1,op2,op3) do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), (unsigned char)(op1)); \ - x64_emit_rex ((inst), 0, (reg), 0, (basereg)); \ - *(inst)++ = (unsigned char)(op2); \ - *(inst)++ = (unsigned char)(op3); \ - x64_membase_emit ((inst), (reg), (basereg), (disp)); \ - x64_codegen_post(inst); \ -} while (0) - -#define emit_sse_reg_membase(inst,dreg,basereg,disp,op1,op2,op3) do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), (unsigned char)(op1)); \ - x64_emit_rex ((inst), 0, (dreg), 0, (basereg) == X64_RIP ? 0 : (basereg)); \ - *(inst)++ = (unsigned char)(op2); \ - *(inst)++ = (unsigned char)(op3); \ - x64_membase_emit ((inst), (dreg), (basereg), (disp)); \ - x64_codegen_post(inst); \ -} while (0) - -/* Four opcode SSE defines */ - -#define emit_sse_reg_reg_op4_size(inst,dreg,reg,op1,op2,op3,op4,size) do { \ - x64_codegen_pre(inst); \ - x86_prefix((inst), (unsigned char)(op1)); \ - x64_emit_rex ((inst), size, (dreg), 0, (reg)); \ - *(inst)++ = (unsigned char)(op2); \ - *(inst)++ = (unsigned char)(op3); \ - *(inst)++ = (unsigned char)(op4); \ - x86_reg_emit ((inst), (dreg), (reg)); \ - x64_codegen_post(inst); \ -} while (0) - -#define emit_sse_reg_reg_op4(inst,dreg,reg,op1,op2,op3,op4) emit_sse_reg_reg_op4_size ((inst), (dreg), (reg), (op1), (op2), (op3), (op4), 0) - -/* specific SSE opcode defines */ - -#define x64_sse_xorpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst),(dreg),(reg), 0x66, 0x0f, 0x57) - -#define x64_sse_xorpd_reg_membase(inst,dreg,basereg,disp) emit_sse_reg_membase ((inst),(dreg),(basereg), (disp), 0x66, 0x0f, 0x57) - -#define x64_sse_andpd_reg_membase(inst,dreg,basereg,disp) emit_sse_reg_membase ((inst),(dreg),(basereg), (disp), 0x66, 0x0f, 0x54) - -#define x64_sse_movsd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst), (dreg), (reg), 0xf2, 0x0f, 0x10) - -#define x64_sse_movsd_reg_membase(inst,dreg,basereg,disp) emit_sse_reg_membase ((inst), (dreg), (basereg), (disp), 0xf2, 0x0f, 0x10) - -#define x64_sse_movsd_membase_reg(inst,basereg,disp,reg) emit_sse_membase_reg ((inst), (basereg), (disp), (reg), 0xf2, 0x0f, 0x11) - -#define x64_sse_movss_membase_reg(inst,basereg,disp,reg) emit_sse_membase_reg ((inst), (basereg), (disp), (reg), 0xf3, 0x0f, 0x11) - -#define x64_sse_movss_reg_membase(inst,dreg,basereg,disp) emit_sse_reg_membase ((inst), (dreg), (basereg), (disp), 0xf3, 0x0f, 0x10) - -#define x64_sse_comisd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst),(dreg),(reg),0x66,0x0f,0x2f) - -#define x64_sse_comisd_reg_membase(inst,dreg,basereg,disp) emit_sse_reg_membase ((inst), (dreg), (basereg), (disp), 0x66, 0x0f, 0x2f) - -#define x64_sse_ucomisd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst),(dreg),(reg),0x66,0x0f,0x2e) - -#define x64_sse_cvtsd2si_reg_reg(inst,dreg,reg) emit_sse_reg_reg_size ((inst), (dreg), (reg), 0xf2, 0x0f, 0x2d, 8) - -#define x64_sse_cvttsd2si_reg_reg_size(inst,dreg,reg,size) emit_sse_reg_reg_size ((inst), (dreg), (reg), 0xf2, 0x0f, 0x2c, (size)) - -#define x64_sse_cvttsd2si_reg_reg(inst,dreg,reg) x64_sse_cvttsd2si_reg_reg_size ((inst), (dreg), (reg), 8) - -#define x64_sse_cvtsi2sd_reg_reg_size(inst,dreg,reg,size) emit_sse_reg_reg_size ((inst), (dreg), (reg), 0xf2, 0x0f, 0x2a, (size)) - -#define x64_sse_cvtsi2sd_reg_reg(inst,dreg,reg) x64_sse_cvtsi2sd_reg_reg_size ((inst), (dreg), (reg), 8) - -#define x64_sse_cvtsi2ss_reg_reg_size(inst,dreg,reg,size) emit_sse_reg_reg_size ((inst), (dreg), (reg), 0xf3, 0x0f, 0x2a, (size)) - -#define x64_sse_cvtsi2ss_reg_reg(inst,dreg,reg) x64_sse_cvtsi2ss_reg_reg_size ((inst), (dreg), (reg), 8) - -#define x64_sse_cvtsd2ss_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst), (dreg), (reg), 0xf2, 0x0f, 0x5a) - -#define x64_sse_cvtss2sd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst), (dreg), (reg), 0xf3, 0x0f, 0x5a) - -#define x64_sse_addsd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst), (dreg), (reg), 0xf2, 0x0f, 0x58) - -#define x64_sse_subsd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst), (dreg), (reg), 0xf2, 0x0f, 0x5c) - -#define x64_sse_mulsd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst), (dreg), (reg), 0xf2, 0x0f, 0x59) - -#define x64_sse_divsd_reg_reg(inst,dreg,reg) emit_sse_reg_reg ((inst), (dreg), (reg), 0xf2, 0x0f, 0x5e) - -#define x64_sse_sqrtsd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xf2, 0x0f, 0x51) - - -#define x64_sse_pinsrw_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm ((inst), (dreg), (reg), 0x66, 0x0f, 0xc4, (imm)) - -#define x64_sse_pextrw_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm ((inst), (dreg), (reg), 0x66, 0x0f, 0xc5, (imm)) - - -#define x64_sse_cvttsd2si_reg_xreg_size(inst,reg,xreg,size) emit_sse_reg_reg_size ((inst), (reg), (xreg), 0xf2, 0x0f, 0x2c, (size)) - - -#define x64_sse_addps_reg_reg(inst, dreg, reg) \ - emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x58) - -#define x64_sse_addps_reg_reg_size(inst, dreg, reg, size) \ - emit_sse_reg_reg_op2_size((inst), (dreg), (reg), 0x0f, 0x58, size) - -#define x64_sse_divps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x5e) - -#define x64_sse_mulps_reg_reg(inst, dreg, reg) \ - emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x59) - -#define x64_sse_mulps_reg_reg_size(inst, dreg, reg, size) \ - emit_sse_reg_reg_op2_size((inst), (dreg), (reg), 0x0f, 0x59, size) - -#define x64_sse_subps_reg_reg(inst, dreg, reg) \ - emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x5c) - -#define x64_sse_subps_reg_reg_size(inst, dreg, reg, size) \ - emit_sse_reg_reg_op2_size((inst), (dreg), (reg), 0x0f, 0x5c, size) - -#define x64_sse_maxps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x5f) - -#define x64_sse_minps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x5d) - -#define x64_sse_cmpps_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_op2_imm((inst), (dreg), (reg), 0x0f, 0xc2, (imm)) - -#define x64_sse_andps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x54) - -#define x64_sse_andnps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x55) - -#define x64_sse_orps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x56) - -#define x64_sse_xorps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x57) - -#define x64_sse_sqrtps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x51) - -#define x64_sse_rsqrtps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x52) - -#define x64_sse_rcpps_reg_reg(inst,dreg,reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x53) - -#define x64_sse_addsubps_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xf2, 0x0f, 0xd0) - -#define x64_sse_haddps_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xf2, 0x0f, 0x7c) - -#define x64_sse_hsubps_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xf2, 0x0f, 0x7d) - -#define x64_sse_movshdup_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xf3, 0x0f, 0x16) - -#define x64_sse_movsldup_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xf3, 0x0f, 0x12) - - -#define x64_sse_pshufhw_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm((inst), (dreg), (reg), 0xf3, 0x0f, 0x70, (imm)) - -#define x64_sse_pshuflw_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm((inst), (dreg), (reg), 0xf2, 0x0f, 0x70, (imm)) - -#define x64_sse_pshufd_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm((inst), (dreg), (reg), 0x66, 0x0f, 0x70, (imm)) - -#define x64_sse_shufps_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_op2_imm((inst), (dreg), (reg), 0x0f, 0xC6, (imm)) - -#define x64_sse_shufpd_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm((inst), (dreg), (reg), 0x66, 0x0f, 0xC6, (imm)) - - -#define x64_sse_addpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x58) - -#define x64_sse_divpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x5e) - -#define x64_sse_mulpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x59) - -#define x64_sse_subpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x5c) - -#define x64_sse_maxpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x5f) - -#define x64_sse_minpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x5d) - -#define x64_sse_cmppd_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm((inst), (dreg), (reg), 0x66, 0x0f, 0xc2, (imm)) - -#define x64_sse_andpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x54) - -#define x64_sse_andnpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x55) - -#define x64_sse_orpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x56) - -#define x64_sse_sqrtpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x51) - -#define x64_sse_rsqrtpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x52) - -#define x64_sse_rcppd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x53) - -#define x64_sse_addsubpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd0) - -#define x64_sse_haddpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x7c) - -#define x64_sse_hsubpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x7d) - -#define x64_sse_movddup_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xf2, 0x0f, 0x12) - - -#define x64_sse_pmovmskb_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd7) - - -#define x64_sse_pand_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xdb) - -#define x64_sse_por_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xeb) - -#define x64_sse_pxor_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xef) - - -#define x64_sse_paddb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xfc) - -#define x64_sse_paddw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xfd) - -#define x64_sse_paddd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xfe) - -#define x64_sse_paddq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd4) - - -#define x64_sse_psubb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf8) - -#define x64_sse_psubw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf9) - -#define x64_sse_psubd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xfa) - -#define x64_sse_psubq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xfb) - - -#define x64_sse_pmaxub_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xde) - -#define x64_sse_pmaxuw_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x3e) - -#define x64_sse_pmaxud_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x3f) - - -#define x64_sse_pmaxsb_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x3c) - -#define x64_sse_pmaxsw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xee) - -#define x64_sse_pmaxsd_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x3d) - - -#define x64_sse_pavgb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe0) - -#define x64_sse_pavgw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe3) - - -#define x64_sse_pminub_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xda) - -#define x64_sse_pminuw_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x3a) - -#define x64_sse_pminud_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x3b) - - -#define x64_sse_pminsb_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x38) - -#define x64_sse_pminsw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xea) - -#define x64_sse_pminsd_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x39) - - -#define x64_sse_pcmpeqb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x74) - -#define x64_sse_pcmpeqw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x75) - -#define x64_sse_pcmpeqd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x76) - -#define x64_sse_pcmpeqq_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x29) - - -#define x64_sse_pcmpgtb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x64) - -#define x64_sse_pcmpgtw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x65) - -#define x64_sse_pcmpgtd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x66) - -#define x64_sse_pcmpgtq_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x37) - - -#define x64_sse_psadbw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf6) - - -#define x64_sse_punpcklbw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x60) - -#define x64_sse_punpcklwd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x61) - -#define x64_sse_punpckldq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x62) - -#define x64_sse_punpcklqdq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x6c) - -#define x64_sse_unpcklpd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x14) - -#define x64_sse_unpcklps_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x14) - - -#define x64_sse_punpckhbw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x68) - -#define x64_sse_punpckhwd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x69) - -#define x64_sse_punpckhdq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x6a) - -#define x64_sse_punpckhqdq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x6d) - -#define x64_sse_unpckhpd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x15) - -#define x64_sse_unpckhps_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x15) - - -#define x64_sse_packsswb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x63) - -#define x64_sse_packssdw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x6b) - -#define x64_sse_packuswb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x67) - -#define x64_sse_packusdw_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x2b) - - -#define x64_sse_paddusb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xdc) - -#define x64_sse_psubusb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd8) - -#define x64_sse_paddusw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xdd) - -#define x64_sse_psubusw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd8) - - -#define x64_sse_paddsb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xec) - -#define x64_sse_psubsb_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe8) - -#define x64_sse_paddsw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xed) - -#define x64_sse_psubsw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe9) - - -#define x64_sse_pmullw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd5) - -#define x64_sse_pmulld_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op4((inst), (dreg), (reg), 0x66, 0x0f, 0x38, 0x40) - -#define x64_sse_pmuludq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf4) - -#define x64_sse_pmulhuw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe4) - -#define x64_sse_pmulhw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe5) - - -#define x64_sse_psrlw_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SHR, (reg), 0x66, 0x0f, 0x71, (imm)) - -#define x64_sse_psrlw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd1) - - -#define x64_sse_psraw_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SAR, (reg), 0x66, 0x0f, 0x71, (imm)) - -#define x64_sse_psraw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe1) - - -#define x64_sse_psllw_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SHL, (reg), 0x66, 0x0f, 0x71, (imm)) - -#define x64_sse_psllw_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf1) - - -#define x64_sse_psrld_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SHR, (reg), 0x66, 0x0f, 0x72, (imm)) - -#define x64_sse_psrld_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd2) - - -#define x64_sse_psrad_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SAR, (reg), 0x66, 0x0f, 0x72, (imm)) - -#define x64_sse_psrad_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe2) - - -#define x64_sse_pslld_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SHL, (reg), 0x66, 0x0f, 0x72, (imm)) - -#define x64_sse_pslld_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf2) - - -#define x64_sse_psrlq_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SHR, (reg), 0x66, 0x0f, 0x73, (imm)) - -#define x64_sse_psrlq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xd3) - - -#define x64_sse_psraq_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SAR, (reg), 0x66, 0x0f, 0x73, (imm)) - -#define x64_sse_psraq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xe3) - - -#define x64_sse_psllq_reg_imm(inst, reg, imm) emit_sse_reg_reg_imm((inst), X86_SSE_SHL, (reg), 0x66, 0x0f, 0x73, (imm)) - -#define x64_sse_psllq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf3) - - -#define x64_sse_cvtdq2pd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xF3, 0x0F, 0xE6) - -#define x64_sse_cvtdq2ps_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0F, 0x5B) - -#define x64_sse_cvtpd2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xF2, 0x0F, 0xE6) - -#define x64_sse_cvtpd2ps_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0F, 0x5A) - -#define x64_sse_cvtps2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0F, 0x5B) - -#define x64_sse_cvtps2pd_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0F, 0x5A) - -#define x64_sse_cvttpd2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0F, 0xE6) - -#define x64_sse_cvttps2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xF3, 0x0F, 0x5B) - - -#define x64_movd_xreg_reg_size(inst,dreg,sreg,size) emit_sse_reg_reg_size((inst), (dreg), (sreg), 0x66, 0x0f, 0x6e, (size)) - -#define x64_movd_reg_xreg_size(inst,dreg,sreg,size) emit_sse_reg_reg_size((inst), (sreg), (dreg), 0x66, 0x0f, 0x7e, (size)) - -#define x64_movd_xreg_membase(inst,dreg,basereg,disp) emit_sse_reg_membase((inst), (dreg), (basereg), (disp), 0x66, 0x0f, 0x6e) - -#define x64_sse_movhlps_reg_reg(inst, dreg, sreg) \ - emit_sse_reg_reg_op2((inst), (dreg), (sreg), 0x0f, 0x12) - -#define x64_sse_movhlps_reg_reg_size(inst, dreg, sreg, size) \ - emit_sse_reg_reg_op2_size((inst), (dreg), (sreg), 0x0f, 0x12, size) - -#define x64_sse_movlhps_reg_reg(inst, dreg, sreg) \ - emit_sse_reg_reg_op2((inst), (dreg), (sreg), 0x0f, 0x16) - -#define x64_sse_movlhps_reg_reg_size(inst, dreg, sreg, size) \ - emit_sse_reg_reg_op2_size((inst), (dreg), (sreg), 0x0f, 0x16, size) - -#define x64_sse_movups_membase_reg(inst, basereg, disp, reg) \ - emit_sse_membase_reg_op2((inst), (basereg), (disp), (reg), 0x0f, 0x11) - -#define x64_sse_movups_membase_reg_size(inst, basereg, disp, reg, size) \ - emit_sse_membase_reg_op2_size((inst), (basereg), (disp), (reg), 0x0f, 0x11, (size)) - -#define x64_sse_movups_reg_membase(inst, dreg, basereg, disp) \ - emit_sse_reg_membase_op2((inst), (dreg), (basereg), (disp), 0x0f, 0x10) - -#define x64_sse_movups_reg_membase_size(inst, dreg, basereg, disp, size) \ - emit_sse_reg_membase_op2_size((inst), (dreg), (basereg), (disp), 0x0f, 0x10, (size)) - -#define x64_sse_movaps_membase_reg(inst, basereg, disp, reg) \ - emit_sse_membase_reg_op2((inst), (basereg), (disp), (reg), 0x0f, 0x29) - -#define x64_sse_movaps_membase_reg_size(inst, basereg, disp, reg, size) \ - emit_sse_membase_reg_op2_size((inst), (basereg), (disp), (reg), 0x0f, 0x29, (size)) - -#define x64_sse_movaps_memindex_reg(inst, basereg, disp, indexreg, shift, reg) \ - emit_sse_memindex_reg_op2((inst), (basereg), (disp), (indexreg), (shift), (reg), 0x0f, 0x29); - -#define x64_sse_movaps_reg_membase(inst, dreg, basereg, disp) \ - emit_sse_reg_membase_op2((inst), (dreg), (basereg), (disp), 0x0f, 0x28) - -#define x64_sse_movaps_reg_membase_size(inst, dreg, basereg, disp, size) \ - emit_sse_reg_membase_op2_size((inst), (dreg), (basereg), (disp), 0x0f, 0x28, (size)) - -#define x64_sse_movaps_reg_memindex(inst, dreg, basereg, disp, indexreg, shift) \ - emit_sse_reg_memindex_op2((inst), (dreg), (basereg), (disp), (indexreg), (shift), 0x0f, 0x28); - -#define x64_sse_movaps_reg_reg(inst, dreg, reg) \ - emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0f, 0x28) - -#define x64_sse_movaps_reg_reg_size(inst, dreg, reg, size) \ - emit_sse_reg_reg_op2_size((inst), (dreg), (reg), 0x0f, 0x28, size) - -#define x64_sse_movntps_membase_reg(inst, basereg, disp, reg) \ - emit_sse_membase_reg_op2((inst), (basereg), (disp), (reg), 0x0f, 0x2b) - -#define x64_sse_movntps_memindex_reg(inst, basereg, disp, indexreg, shift, reg) \ - emit_sse_memindex_reg_op2((inst), (basereg), (disp), (indexreg), (shift), (reg), 0x0f, 0x2b) - -#define x64_sse_prefetch_reg_membase(inst, arg, basereg, disp) \ - emit_sse_reg_membase_op2((inst), (arg), (basereg), (disp), 0x0f, 0x18) - -#define x64_sse_movdqa_membase_reg(inst, basereg, disp, reg) \ - emit_sse_membase_reg((inst), (basereg), (disp), (reg), 0x66, 0x0f, 0x7f) - -#define x64_sse_movdqa_reg_membase(inst, dreg, basereg, disp) \ - emit_sse_reg_membase((inst), (dreg), (basereg), (disp), 0x66, 0x0f, 0x6f) - -#define x64_sse_movdqa_reg_reg(inst, dreg, reg) \ - emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x6f) - -/* Generated from x86-codegen.h */ - -#define x64_breakpoint_size(inst,size) do { x86_breakpoint(inst); } while (0) -#define x64_cld_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_cld(inst); x64_codegen_post(inst); } while (0) -#define x64_stosb_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_stosb(inst); x64_codegen_post(inst); } while (0) -#define x64_stosl_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_stosl(inst); x64_codegen_post(inst); } while (0) -#define x64_stosd_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_stosd(inst); x64_codegen_post(inst); } while (0) -#define x64_movsb_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_movsb(inst); x64_codegen_post(inst); } while (0) -#define x64_movsl_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_movsl(inst); x64_codegen_post(inst); } while (0) -#define x64_movsd_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_movsd(inst); x64_codegen_post(inst); } while (0) -#define x64_prefix_size(inst,p,size) do { x86_prefix((inst), p); } while (0) -#define x64_rdtsc_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_rdtsc(inst); x64_codegen_post(inst); } while (0) -#define x64_cmpxchg_reg_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmpxchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_cmpxchg_mem_reg_size(inst,mem,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_cmpxchg_mem_reg((inst),(mem),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_cmpxchg_membase_reg_size(inst,basereg,disp,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_cmpxchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_xchg_reg_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_xchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_xchg_mem_reg_size(inst,mem,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_xchg_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_xchg_membase_reg_size(inst,basereg,disp,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_xchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_inc_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_inc_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_inc_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_inc_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -//#define x64_inc_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_inc_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_dec_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_dec_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_dec_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_dec_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -//#define x64_dec_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_dec_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_not_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_not_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_not_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_not_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_not_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_not_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_neg_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_neg_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_neg_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_neg_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_neg_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_neg_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_nop_size(inst,size) do { x64_codegen_pre(inst); x86_nop(inst); x64_codegen_post(inst); } while (0) -//#define x64_alu_reg_imm_size(inst,opc,reg,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_imm((inst),(opc),((reg)&0x7),(imm)); x64_codegen_post(inst); } while (0) -#define x64_alu_mem_imm_size(inst,opc,mem,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_alu_mem_imm((inst),(opc),(mem),(imm)); x64_codegen_post(inst); } while (0) -#define x64_alu_membase_imm_size(inst,opc,basereg,disp,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_alu_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); x64_codegen_post(inst); } while (0) -#define x64_alu_membase8_imm_size(inst,opc,basereg,disp,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_alu_membase8_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); x64_codegen_post(inst); } while (0) -#define x64_alu_mem_reg_size(inst,opc,mem,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_mem_reg((inst),(opc),(mem),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_alu_membase_reg_size(inst,opc,basereg,disp,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_membase_reg((inst),(opc),((basereg)&0x7),(disp),((reg)&0x7)); x64_codegen_post(inst); } while (0) -//#define x64_alu_reg_reg_size(inst,opc,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg_reg((inst),(opc),((dreg)&0x7),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_alu_reg8_reg8_size(inst,opc,dreg,reg,is_dreg_h,is_reg_h,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg8_reg8((inst),(opc),((dreg)&0x7),((reg)&0x7),(is_dreg_h),(is_reg_h)); x64_codegen_post(inst); } while (0) -#define x64_alu_reg_mem_size(inst,opc,reg,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_mem((inst),(opc),((reg)&0x7),(mem)); x64_codegen_post(inst); } while (0) -//#define x64_alu_reg_membase_size(inst,opc,reg,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_reg_membase((inst),(opc),((reg)&0x7),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_test_reg_imm_size(inst,reg,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_test_reg_imm((inst),((reg)&0x7),(imm)); x64_codegen_post(inst); } while (0) -#define x64_test_mem_imm_size(inst,mem,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_test_mem_imm((inst),(mem),(imm)); x64_codegen_post(inst); } while (0) -#define x64_test_membase_imm_size(inst,basereg,disp,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_test_membase_imm((inst),((basereg)&0x7),(disp),(imm)); x64_codegen_post(inst); } while (0) -#define x64_test_reg_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_test_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_test_mem_reg_size(inst,mem,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_test_mem_reg((inst),(mem),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_test_membase_reg_size(inst,basereg,disp,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_test_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_shift_reg_imm_size(inst,opc,reg,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg_imm((inst),(opc),((reg)&0x7),(imm)); x64_codegen_post(inst); } while (0) -#define x64_shift_mem_imm_size(inst,opc,mem,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem_imm((inst),(opc),(mem),(imm)); x64_codegen_post(inst); } while (0) -#define x64_shift_membase_imm_size(inst,opc,basereg,disp,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_shift_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); x64_codegen_post(inst); } while (0) -#define x64_shift_reg_size(inst,opc,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg((inst),(opc),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_shift_mem_size(inst,opc,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem((inst),(opc),(mem)); x64_codegen_post(inst); } while (0) -#define x64_shift_membase_size(inst,opc,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_shift_membase((inst),(opc),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_shrd_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg((inst),((dreg)&0x7),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_shrd_reg_imm_size(inst,dreg,reg,shamt,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); x64_codegen_post(inst); } while (0) -#define x64_shld_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg((inst),((dreg)&0x7),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_shld_reg_imm_size(inst,dreg,reg,shamt,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); x64_codegen_post(inst); } while (0) -#define x64_mul_reg_size(inst,reg,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_mul_reg((inst),((reg)&0x7),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_mul_mem_size(inst,mem,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_mul_mem((inst),(mem),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_mul_membase_size(inst,basereg,disp,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_mul_membase((inst),((basereg)&0x7),(disp),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_imul_reg_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_imul_reg_mem_size(inst,reg,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem((inst),((reg)&0x7),(mem)); x64_codegen_post(inst); } while (0) -#define x64_imul_reg_membase_size(inst,reg,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_imul_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_imul_reg_reg_imm_size(inst,dreg,reg,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(imm)); x64_codegen_post(inst); } while (0) -#define x64_imul_reg_mem_imm_size(inst,reg,mem,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem_imm((inst),((reg)&0x7),(mem),(imm)); x64_codegen_post(inst); } while (0) -#define x64_imul_reg_membase_imm_size(inst,reg,basereg,disp,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_imul_reg_membase_imm((inst),((reg)&0x7),((basereg)&0x7),(disp),(imm)); x64_codegen_post(inst); } while (0) -#define x64_div_reg_size(inst,reg,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_div_reg((inst),((reg)&0x7),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_div_mem_size(inst,mem,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_div_mem((inst),(mem),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_div_membase_size(inst,basereg,disp,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_div_membase((inst),((basereg)&0x7),(disp),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_mov_mem_reg_size(inst,mem,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -//#define x64_mov_regp_reg_size(inst,regp,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(regp),0,(reg)); x86_mov_regp_reg((inst),(regp),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -//#define x64_mov_membase_reg_size(inst,basereg,disp,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_mov_memindex_reg_size(inst,basereg,disp,indexreg,shift,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_memindex_reg((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_mov_reg_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_mov_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -//#define x64_mov_reg_mem_size(inst,reg,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_mem((inst),((reg)&0x7),(mem),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -//#define x64_mov_reg_membase_size(inst,reg,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -//#define x64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_reg_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_clear_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_clear_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -//#define x64_mov_reg_imm_size(inst,reg,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_imm((inst),((reg)&0x7),(imm)); x64_codegen_post(inst); } while (0) -#define x64_mov_mem_imm_size(inst,mem,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_mov_mem_imm((inst),(mem),(imm),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -//#define x64_mov_membase_imm_size(inst,basereg,disp,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_mov_membase_imm((inst),((basereg)&0x7),(disp),(imm),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_mov_memindex_imm_size(inst,basereg,disp,indexreg,shift,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_mov_memindex_imm((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(imm),(size) == 8 ? 4 : (size)); x64_codegen_post(inst); } while (0) -#define x64_lea_mem_size(inst,reg,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_lea_mem((inst),((reg)&0x7),(mem)); x64_codegen_post(inst); } while (0) -//#define x64_lea_membase_size(inst,reg,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_lea_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_lea_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_lea_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); x64_codegen_post(inst); } while (0) -#define x64_widen_reg_size(inst,dreg,reg,is_signed,is_half,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_widen_reg((inst),((dreg)&0x7),((reg)&0x7),(is_signed),(is_half)); x64_codegen_post(inst); } while (0) -#define x64_widen_mem_size(inst,dreg,mem,is_signed,is_half,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,0); x86_widen_mem((inst),((dreg)&0x7),(mem),(is_signed),(is_half)); x64_codegen_post(inst); } while (0) -#define x64_widen_membase_size(inst,dreg,basereg,disp,is_signed,is_half,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(basereg)); x86_widen_membase((inst),((dreg)&0x7),((basereg)&0x7),(disp),(is_signed),(is_half)); x64_codegen_post(inst); } while (0) -#define x64_widen_memindex_size(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),(indexreg),(basereg)); x86_widen_memindex((inst),((dreg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(is_signed),(is_half)); x64_codegen_post(inst); } while (0) -#define x64_cdq_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_cdq(inst); x64_codegen_post(inst); } while (0) -#define x64_wait_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_wait(inst); x64_codegen_post(inst); } while (0) -#define x64_fp_op_mem_size(inst,opc,mem,is_double,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fp_op_mem((inst),(opc),(mem),(is_double)); x64_codegen_post(inst); } while (0) -#define x64_fp_op_membase_size(inst,opc,basereg,disp,is_double,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_double)); x64_codegen_post(inst); } while (0) -#define x64_fp_op_size(inst,opc,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fp_op((inst),(opc),(index)); x64_codegen_post(inst); } while (0) -#define x64_fp_op_reg_size(inst,opc,index,pop_stack,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fp_op_reg((inst),(opc),(index),(pop_stack)); x64_codegen_post(inst); } while (0) -#define x64_fp_int_op_membase_size(inst,opc,basereg,disp,is_int,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_int_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_int)); x64_codegen_post(inst); } while (0) -#define x64_fstp_size(inst,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fstp((inst),(index)); x64_codegen_post(inst); } while (0) -#define x64_fcompp_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fcompp(inst); x64_codegen_post(inst); } while (0) -#define x64_fucompp_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fucompp(inst); x64_codegen_post(inst); } while (0) -#define x64_fnstsw_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fnstsw(inst); x64_codegen_post(inst); } while (0) -#define x64_fnstcw_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fnstcw((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_fnstcw_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_fnstcw_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_fldcw_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fldcw((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_fldcw_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fldcw_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_fchs_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fchs(inst); x64_codegen_post(inst); } while (0) -#define x64_frem_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_frem(inst); x64_codegen_post(inst); } while (0) -#define x64_fxch_size(inst,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fxch((inst),(index)); x64_codegen_post(inst); } while (0) -#define x64_fcomi_size(inst,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fcomi((inst),(index)); x64_codegen_post(inst); } while (0) -#define x64_fcomip_size(inst,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fcomip((inst),(index)); x64_codegen_post(inst); } while (0) -#define x64_fucomi_size(inst,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fucomi((inst),(index)); x64_codegen_post(inst); } while (0) -#define x64_fucomip_size(inst,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fucomip((inst),(index)); x64_codegen_post(inst); } while (0) -#define x64_fld_size(inst,mem,is_double,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fld((inst),(mem),(is_double)); x64_codegen_post(inst); } while (0) -//#define x64_fld_membase_size(inst,basereg,disp,is_double,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fld_membase((inst),((basereg)&0x7),(disp),(is_double)); x64_codegen_post(inst); } while (0) -#define x64_fld80_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fld80_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_fld80_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_fld80_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_fild_size(inst,mem,is_long,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fild((inst),(mem),(is_long)); x64_codegen_post(inst); } while (0) -#define x64_fild_membase_size(inst,basereg,disp,is_long,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fild_membase((inst),((basereg)&0x7),(disp),(is_long)); x64_codegen_post(inst); } while (0) -#define x64_fld_reg_size(inst,index,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fld_reg((inst),(index)); x64_codegen_post(inst); } while (0) -#define x64_fldz_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fldz(inst); x64_codegen_post(inst); } while (0) -#define x64_fld1_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fld1(inst); x64_codegen_post(inst); } while (0) -#define x64_fldpi_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fldpi(inst); x64_codegen_post(inst); } while (0) -#define x64_fst_size(inst,mem,is_double,pop_stack,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fst((inst),(mem),(is_double),(pop_stack)); x64_codegen_post(inst); } while (0) -#define x64_fst_membase_size(inst,basereg,disp,is_double,pop_stack,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fst_membase((inst),((basereg)&0x7),(disp),(is_double),(pop_stack)); x64_codegen_post(inst); } while (0) -#define x64_fst80_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fst80_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_fst80_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fst80_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_fist_pop_size(inst,mem,is_long,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_fist_pop((inst),(mem),(is_long)); x64_codegen_post(inst); } while (0) -#define x64_fist_pop_membase_size(inst,basereg,disp,is_long,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_pop_membase((inst),((basereg)&0x7),(disp),(is_long)); x64_codegen_post(inst); } while (0) -#define x64_fstsw_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_fstsw(inst); x64_codegen_post(inst); } while (0) -#define x64_fist_membase_size(inst,basereg,disp,is_int,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_membase((inst),((basereg)&0x7),(disp),(is_int)); x64_codegen_post(inst); } while (0) -//#define x64_push_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_push_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_push_regp_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_push_regp((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_push_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_push_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -//#define x64_push_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_push_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_push_memindex_size(inst,basereg,disp,indexreg,shift,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_push_memindex((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); x64_codegen_post(inst); } while (0) -#define x64_push_imm_size(inst,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_push_imm((inst),(imm)); x64_codegen_post(inst); } while (0) -//#define x64_pop_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_pop_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_pop_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_pop_mem((inst),(mem)); x64_codegen_post(inst); } while (0) -#define x64_pop_membase_size(inst,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_pop_membase((inst),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_pushad_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_pushad(inst); x64_codegen_post(inst); } while (0) -#define x64_pushfd_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_pushfd(inst); x64_codegen_post(inst); } while (0) -#define x64_popad_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_popad(inst); x64_codegen_post(inst); } while (0) -#define x64_popfd_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_popfd(inst); x64_codegen_post(inst); } while (0) -#define x64_loop_size(inst,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_loop((inst),(imm)); x64_codegen_post(inst); } while (0) -#define x64_loope_size(inst,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_loope((inst),(imm)); x64_codegen_post(inst); } while (0) -#define x64_loopne_size(inst,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_loopne((inst),(imm)); x64_codegen_post(inst); } while (0) -#define x64_jump32_size(inst,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_jump32((inst),(imm)); x64_codegen_post(inst); } while (0) -#define x64_jump8_size(inst,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_jump8((inst),(imm)); x64_codegen_post(inst); } while (0) - -#if !defined( __native_client_codegen__ ) -/* Defined above for Native Client, so they can be used in other macros */ -#define x64_jump_reg_size(inst,reg,size) do { x64_emit_rex ((inst),0,0,0,(reg)); x86_jump_reg((inst),((reg)&0x7)); } while (0) -#define x64_jump_mem_size(inst,mem,size) do { x64_emit_rex ((inst),(size),0,0,0); x86_jump_mem((inst),(mem)); } while (0) -#endif - -#define x64_jump_disp_size(inst,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,0); x86_jump_disp((inst),(disp)); x64_codegen_post(inst); } while (0) -#define x64_branch8_size(inst,cond,imm,is_signed,size) do { x86_branch8((inst),(cond),(imm),(is_signed)); } while (0) -#define x64_branch32_size(inst,cond,imm,is_signed,size) do { x86_branch32((inst),(cond),(imm),(is_signed)); } while (0) -#define x64_branch_size_body(inst,cond,target,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_branch((inst),(cond),(target),(is_signed)); x64_codegen_post(inst); } while (0) - -#if defined(__native_client_codegen__) -#define x64_branch_size(inst,cond,target,is_signed,size) \ - do { \ - /* x64_branch_size_body used twice in */ \ - /* case of relocation by x64_codegen_post */ \ - uint8_t* branch_start; \ - x64_codegen_pre(inst); \ - x64_branch_size_body((inst),(cond),(target),(is_signed),(size)); \ - inst = x64_codegen_post(inst); \ - branch_start = inst; \ - x64_branch_size_body((inst),(cond),(target),(is_signed),(size)); \ - mono_x64_patch(branch_start, (target)); \ - } while (0) -#else -#define x64_branch_size(inst,cond,target,is_signed,size) do { x64_branch_size_body((inst),(cond),(target),(is_signed),(size)); } while (0) -#endif /* __native_client_codegen__ */ - -#define x64_branch_disp_size(inst,cond,disp,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_branch_disp((inst),(cond),(disp),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_set_reg_size(inst,cond,reg,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex((inst),1,0,0,(reg)); x86_set_reg((inst),(cond),((reg)&0x7),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_set_mem_size(inst,cond,mem,is_signed,size) do { x64_codegen_pre(inst); x86_set_mem((inst),(cond),(mem),(is_signed)); x64_codegen_post(inst); } while (0) -#define x64_set_membase_size(inst,cond,basereg,disp,is_signed,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),0,0,0,(basereg)); x86_set_membase((inst),(cond),((basereg)&0x7),(disp),(is_signed)); x64_codegen_post(inst); } while (0) -//#define x64_call_reg_size(inst,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_call_reg((inst),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_call_mem_size(inst,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_call_mem((inst),(mem)); x64_codegen_post(inst); } while (0) - -#if defined(__native_client_codegen__) -/* Size is ignored for Native Client calls, we restrict jumping to 32-bits */ -#define x64_call_imm_size(inst,disp,size) \ - do { \ - x64_codegen_pre((inst)); \ - x64_call_sequence_pre((inst)); \ - x86_call_imm((inst),(disp)); \ - x64_call_sequence_post((inst)); \ - x64_codegen_post((inst)); \ - } while (0) - -/* x86_call_code is called twice below, first so we can get the size of the */ -/* call sequence, and again so the exact offset from "inst" is used, since */ -/* the sequence could have moved from x64_call_sequence_post. */ -/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits */ -#define x64_call_code_size(inst,target,size) \ - do { \ - x64_codegen_pre((inst)); \ - uint8_t* adjusted_start; \ - uint8_t* call_start; \ - x64_call_sequence_pre((inst)); \ - x86_call_code((inst),(target)); \ - adjusted_start = x64_call_sequence_post((inst)); \ - call_start = adjusted_start; \ - x86_call_code(adjusted_start, (target)); \ - x64_codegen_post((inst)); \ - mono_x64_patch(call_start, (target)); \ - } while (0) - -#else - -#define x64_call_imm_size(inst,disp,size) do { x86_call_imm((inst),(disp)); } while (0) -#define x64_call_code_size(inst,target,size) do { x86_call_code((inst),(target)); } while (0) - -#endif /*__native_client_codegen__*/ - -//#define x64_ret_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_ret(inst); x64_codegen_post(inst); } while (0) -#define x64_ret_imm_size(inst,imm,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_ret_imm((inst),(imm)); x64_codegen_post(inst); } while (0) -#define x64_cmov_reg_size(inst,cond,is_signed,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmov_reg((inst),(cond),(is_signed),((dreg)&0x7),((reg)&0x7)); x64_codegen_post(inst); } while (0) -#define x64_cmov_mem_size(inst,cond,is_signed,reg,mem,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_cmov_mem((inst),(cond),(is_signed),((reg)&0x7),(mem)); x64_codegen_post(inst); } while (0) -#define x64_cmov_membase_size(inst,cond,is_signed,reg,basereg,disp,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(basereg)); x86_cmov_membase((inst),(cond),(is_signed),((reg)&0x7),((basereg)&0x7),(disp)); x64_codegen_post(inst); } while (0) -#define x64_enter_size(inst,framesize) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_enter((inst),(framesize)); x64_codegen_post(inst); } while (0) -//#define x64_leave_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_leave(inst); x64_codegen_post(inst); } while (0) -#define x64_sahf_size(inst,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_sahf(inst); x64_codegen_post(inst); } while (0) -#define x64_fsin_size(inst,size) do { x64_codegen_pre(inst); x86_fsin(inst); x64_codegen_post(inst); } while (0) -#define x64_fcos_size(inst,size) do { x64_codegen_pre(inst); x86_fcos(inst); x64_codegen_post(inst); } while (0) -#define x64_fabs_size(inst,size) do { x64_codegen_pre(inst); x86_fabs(inst); x64_codegen_post(inst); } while (0) -#define x64_ftst_size(inst,size) do { x64_codegen_pre(inst); x86_ftst(inst); x64_codegen_post(inst); } while (0) -#define x64_fxam_size(inst,size) do { x64_codegen_pre(inst); x86_fxam(inst); x64_codegen_post(inst); } while (0) -#define x64_fpatan_size(inst,size) do { x64_codegen_pre(inst); x86_fpatan(inst); x64_codegen_post(inst); } while (0) -#define x64_fprem_size(inst,size) do { x64_codegen_pre(inst); x86_fprem(inst); x64_codegen_post(inst); } while (0) -#define x64_fprem1_size(inst,size) do { x64_codegen_pre(inst); x86_fprem1(inst); x64_codegen_post(inst); } while (0) -#define x64_frndint_size(inst,size) do { x64_codegen_pre(inst); x86_frndint(inst); x64_codegen_post(inst); } while (0) -#define x64_fsqrt_size(inst,size) do { x64_codegen_pre(inst); x86_fsqrt(inst); x64_codegen_post(inst); } while (0) -#define x64_fptan_size(inst,size) do { x64_codegen_pre(inst); x86_fptan(inst); x64_codegen_post(inst); } while (0) -//#define x64_padding_size(inst,size) do { x64_codegen_pre(inst); x86_padding((inst),(size)); x64_codegen_post(inst); } while (0) -#define x64_prolog_size(inst,frame_size,reg_mask,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_prolog((inst),(frame_size),(reg_mask)); x64_codegen_post(inst); } while (0) -#define x64_epilog_size(inst,reg_mask,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,0); x86_epilog((inst),(reg_mask)); x64_codegen_post(inst); } while (0) -#define x64_xadd_reg_reg_size(inst,dreg,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_xadd_reg_reg ((inst), (dreg), (reg), (size)); x64_codegen_post(inst); } while (0) -#define x64_xadd_mem_reg_size(inst,mem,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),0,0,(reg)); x86_xadd_mem_reg((inst),(mem),((reg)&0x7), (size)); x64_codegen_post(inst); } while (0) -#define x64_xadd_membase_reg_size(inst,basereg,disp,reg,size) do { x64_codegen_pre(inst); x64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_xadd_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size)); x64_codegen_post(inst); } while (0) - - - - -#define x64_breakpoint(inst) x64_breakpoint_size(inst,8) -#define x64_cld(inst) x64_cld_size(inst,8) -#define x64_stosb(inst) x64_stosb_size(inst,8) -#define x64_stosl(inst) x64_stosl_size(inst,8) -#define x64_stosd(inst) x64_stosd_size(inst,8) -#define x64_movsb(inst) x64_movsb_size(inst,8) -#define x64_movsl(inst) x64_movsl_size(inst,8) -#define x64_movsd(inst) x64_movsd_size(inst,8) -#define x64_prefix(inst,p) x64_prefix_size(inst,p,8) -#define x64_rdtsc(inst) x64_rdtsc_size(inst,8) -#define x64_cmpxchg_reg_reg(inst,dreg,reg) x64_cmpxchg_reg_reg_size(inst,dreg,reg,8) -#define x64_cmpxchg_mem_reg(inst,mem,reg) x64_cmpxchg_mem_reg_size(inst,mem,reg,8) -#define x64_cmpxchg_membase_reg(inst,basereg,disp,reg) x64_cmpxchg_membase_reg_size(inst,basereg,disp,reg,8) -#define x64_xchg_reg_reg(inst,dreg,reg,size) x64_xchg_reg_reg_size(inst,dreg,reg,size) -#define x64_xchg_mem_reg(inst,mem,reg,size) x64_xchg_mem_reg_size(inst,mem,reg,size) -#define x64_xchg_membase_reg(inst,basereg,disp,reg,size) x64_xchg_membase_reg_size(inst,basereg,disp,reg,size) -#define x64_xadd_reg_reg(inst,dreg,reg,size) x64_xadd_reg_reg_size(inst,dreg,reg,size) -#define x64_xadd_mem_reg(inst,mem,reg,size) x64_xadd_mem_reg_size(inst,mem,reg,size) -#define x64_xadd_membase_reg(inst,basereg,disp,reg,size) x64_xadd_membase_reg_size(inst,basereg,disp,reg,size) -#define x64_inc_mem(inst,mem) x64_inc_mem_size(inst,mem,8) -#define x64_inc_membase(inst,basereg,disp) x64_inc_membase_size(inst,basereg,disp,8) -#define x64_inc_reg(inst,reg) x64_inc_reg_size(inst,reg,8) -#define x64_dec_mem(inst,mem) x64_dec_mem_size(inst,mem,8) -#define x64_dec_membase(inst,basereg,disp) x64_dec_membase_size(inst,basereg,disp,8) -#define x64_dec_reg(inst,reg) x64_dec_reg_size(inst,reg,8) -#define x64_not_mem(inst,mem) x64_not_mem_size(inst,mem,8) -#define x64_not_membase(inst,basereg,disp) x64_not_membase_size(inst,basereg,disp,8) -#define x64_not_reg(inst,reg) x64_not_reg_size(inst,reg,8) -#define x64_neg_mem(inst,mem) x64_neg_mem_size(inst,mem,8) -#define x64_neg_membase(inst,basereg,disp) x64_neg_membase_size(inst,basereg,disp,8) -#define x64_neg_reg(inst,reg) x64_neg_reg_size(inst,reg,8) -#define x64_nop(inst) x64_nop_size(inst,8) -//#define x64_alu_reg_imm(inst,opc,reg,imm) x64_alu_reg_imm_size(inst,opc,reg,imm,8) -#define x64_alu_mem_imm(inst,opc,mem,imm) x64_alu_mem_imm_size(inst,opc,mem,imm,8) -#define x64_alu_membase_imm(inst,opc,basereg,disp,imm) x64_alu_membase_imm_size(inst,opc,basereg,disp,imm,8) -#define x64_alu_mem_reg(inst,opc,mem,reg) x64_alu_mem_reg_size(inst,opc,mem,reg,8) -#define x64_alu_membase_reg(inst,opc,basereg,disp,reg) x64_alu_membase_reg_size(inst,opc,basereg,disp,reg,8) -//#define x64_alu_reg_reg(inst,opc,dreg,reg) x64_alu_reg_reg_size(inst,opc,dreg,reg,8) -#define x64_alu_reg8_reg8(inst,opc,dreg,reg,is_dreg_h,is_reg_h) x64_alu_reg8_reg8_size(inst,opc,dreg,reg,is_dreg_h,is_reg_h,8) -#define x64_alu_reg_mem(inst,opc,reg,mem) x64_alu_reg_mem_size(inst,opc,reg,mem,8) -#define x64_alu_reg_membase(inst,opc,reg,basereg,disp) x64_alu_reg_membase_size(inst,opc,reg,basereg,disp,8) -#define x64_test_reg_imm(inst,reg,imm) x64_test_reg_imm_size(inst,reg,imm,8) -#define x64_test_mem_imm(inst,mem,imm) x64_test_mem_imm_size(inst,mem,imm,8) -#define x64_test_membase_imm(inst,basereg,disp,imm) x64_test_membase_imm_size(inst,basereg,disp,imm,8) -#define x64_test_reg_reg(inst,dreg,reg) x64_test_reg_reg_size(inst,dreg,reg,8) -#define x64_test_mem_reg(inst,mem,reg) x64_test_mem_reg_size(inst,mem,reg,8) -#define x64_test_membase_reg(inst,basereg,disp,reg) x64_test_membase_reg_size(inst,basereg,disp,reg,8) -#define x64_shift_reg_imm(inst,opc,reg,imm) x64_shift_reg_imm_size(inst,opc,reg,imm,8) -#define x64_shift_mem_imm(inst,opc,mem,imm) x64_shift_mem_imm_size(inst,opc,mem,imm,8) -#define x64_shift_membase_imm(inst,opc,basereg,disp,imm) x64_shift_membase_imm_size(inst,opc,basereg,disp,imm,8) -#define x64_shift_reg(inst,opc,reg) x64_shift_reg_size(inst,opc,reg,8) -#define x64_shift_mem(inst,opc,mem) x64_shift_mem_size(inst,opc,mem,8) -#define x64_shift_membase(inst,opc,basereg,disp) x64_shift_membase_size(inst,opc,basereg,disp,8) -#define x64_shrd_reg(inst,dreg,reg) x64_shrd_reg_size(inst,dreg,reg,8) -#define x64_shrd_reg_imm(inst,dreg,reg,shamt) x64_shrd_reg_imm_size(inst,dreg,reg,shamt,8) -#define x64_shld_reg(inst,dreg,reg) x64_shld_reg_size(inst,dreg,reg,8) -#define x64_shld_reg_imm(inst,dreg,reg,shamt) x64_shld_reg_imm_size(inst,dreg,reg,shamt,8) -#define x64_mul_reg(inst,reg,is_signed) x64_mul_reg_size(inst,reg,is_signed,8) -#define x64_mul_mem(inst,mem,is_signed) x64_mul_mem_size(inst,mem,is_signed,8) -#define x64_mul_membase(inst,basereg,disp,is_signed) x64_mul_membase_size(inst,basereg,disp,is_signed,8) -#define x64_imul_reg_reg(inst,dreg,reg) x64_imul_reg_reg_size(inst,dreg,reg,8) -#define x64_imul_reg_mem(inst,reg,mem) x64_imul_reg_mem_size(inst,reg,mem,8) -#define x64_imul_reg_membase(inst,reg,basereg,disp) x64_imul_reg_membase_size(inst,reg,basereg,disp,8) -#define x64_imul_reg_reg_imm(inst,dreg,reg,imm) x64_imul_reg_reg_imm_size(inst,dreg,reg,imm,8) -#define x64_imul_reg_mem_imm(inst,reg,mem,imm) x64_imul_reg_mem_imm_size(inst,reg,mem,imm,8) -#define x64_imul_reg_membase_imm(inst,reg,basereg,disp,imm) x64_imul_reg_membase_imm_size(inst,reg,basereg,disp,imm,8) -#define x64_div_reg(inst,reg,is_signed) x64_div_reg_size(inst,reg,is_signed,8) -#define x64_div_mem(inst,mem,is_signed) x64_div_mem_size(inst,mem,is_signed,8) -#define x64_div_membase(inst,basereg,disp,is_signed) x64_div_membase_size(inst,basereg,disp,is_signed,8) -//#define x64_mov_mem_reg(inst,mem,reg,size) x64_mov_mem_reg_size(inst,mem,reg,size) -//#define x64_mov_regp_reg(inst,regp,reg,size) x64_mov_regp_reg_size(inst,regp,reg,size) -//#define x64_mov_membase_reg(inst,basereg,disp,reg,size) x64_mov_membase_reg_size(inst,basereg,disp,reg,size) -#define x64_mov_memindex_reg(inst,basereg,disp,indexreg,shift,reg,size) x64_mov_memindex_reg_size(inst,basereg,disp,indexreg,shift,reg,size) -//#define x64_mov_reg_reg(inst,dreg,reg,size) x64_mov_reg_reg_size(inst,dreg,reg,size) -//#define x64_mov_reg_mem(inst,reg,mem,size) x64_mov_reg_mem_size(inst,reg,mem,size) -//#define x64_mov_reg_membase(inst,reg,basereg,disp,size) x64_mov_reg_membase_size(inst,reg,basereg,disp,size) -#define x64_mov_reg_memindex(inst,reg,basereg,disp,indexreg,shift,size) x64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) -#define x64_clear_reg(inst,reg) x64_clear_reg_size(inst,reg,8) -//#define x64_mov_reg_imm(inst,reg,imm) x64_mov_reg_imm_size(inst,reg,imm,8) -#define x64_mov_mem_imm(inst,mem,imm,size) x64_mov_mem_imm_size(inst,mem,imm,size) -//#define x64_mov_membase_imm(inst,basereg,disp,imm,size) x64_mov_membase_imm_size(inst,basereg,disp,imm,size) -#define x64_mov_memindex_imm(inst,basereg,disp,indexreg,shift,imm,size) x64_mov_memindex_imm_size(inst,basereg,disp,indexreg,shift,imm,size) -#define x64_lea_mem(inst,reg,mem) x64_lea_mem_size(inst,reg,mem,8) -//#define x64_lea_membase(inst,reg,basereg,disp) x64_lea_membase_size(inst,reg,basereg,disp,8) -#define x64_lea_memindex(inst,reg,basereg,disp,indexreg,shift) x64_lea_memindex_size(inst,reg,basereg,disp,indexreg,shift,8) -#define x64_widen_reg(inst,dreg,reg,is_signed,is_half) x64_widen_reg_size(inst,dreg,reg,is_signed,is_half,8) -#define x64_widen_mem(inst,dreg,mem,is_signed,is_half) x64_widen_mem_size(inst,dreg,mem,is_signed,is_half,8) -#define x64_widen_membase(inst,dreg,basereg,disp,is_signed,is_half) x64_widen_membase_size(inst,dreg,basereg,disp,is_signed,is_half,8) -#define x64_widen_memindex(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half) x64_widen_memindex_size(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half,8) -#define x64_cdq(inst) x64_cdq_size(inst,8) -#define x64_wait(inst) x64_wait_size(inst,8) -#define x64_fp_op_mem(inst,opc,mem,is_double) x64_fp_op_mem_size(inst,opc,mem,is_double,8) -#define x64_fp_op_membase(inst,opc,basereg,disp,is_double) x64_fp_op_membase_size(inst,opc,basereg,disp,is_double,8) -#define x64_fp_op(inst,opc,index) x64_fp_op_size(inst,opc,index,8) -#define x64_fp_op_reg(inst,opc,index,pop_stack) x64_fp_op_reg_size(inst,opc,index,pop_stack,8) -#define x64_fp_int_op_membase(inst,opc,basereg,disp,is_int) x64_fp_int_op_membase_size(inst,opc,basereg,disp,is_int,8) -#define x64_fstp(inst,index) x64_fstp_size(inst,index,8) -#define x64_fcompp(inst) x64_fcompp_size(inst,8) -#define x64_fucompp(inst) x64_fucompp_size(inst,8) -#define x64_fnstsw(inst) x64_fnstsw_size(inst,8) -#define x64_fnstcw(inst,mem) x64_fnstcw_size(inst,mem,8) -#define x64_fnstcw_membase(inst,basereg,disp) x64_fnstcw_membase_size(inst,basereg,disp,8) -#define x64_fldcw(inst,mem) x64_fldcw_size(inst,mem,8) -#define x64_fldcw_membase(inst,basereg,disp) x64_fldcw_membase_size(inst,basereg,disp,8) -#define x64_fchs(inst) x64_fchs_size(inst,8) -#define x64_frem(inst) x64_frem_size(inst,8) -#define x64_fxch(inst,index) x64_fxch_size(inst,index,8) -#define x64_fcomi(inst,index) x64_fcomi_size(inst,index,8) -#define x64_fcomip(inst,index) x64_fcomip_size(inst,index,8) -#define x64_fucomi(inst,index) x64_fucomi_size(inst,index,8) -#define x64_fucomip(inst,index) x64_fucomip_size(inst,index,8) -#define x64_fld(inst,mem,is_double) x64_fld_size(inst,mem,is_double,8) -#define x64_fld_membase(inst,basereg,disp,is_double) x64_fld_membase_size(inst,basereg,disp,is_double,8) -#define x64_fld80_mem(inst,mem) x64_fld80_mem_size(inst,mem,8) -#define x64_fld80_membase(inst,basereg,disp) x64_fld80_membase_size(inst,basereg,disp,8) -#define x64_fild(inst,mem,is_long) x64_fild_size(inst,mem,is_long,8) -#define x64_fild_membase(inst,basereg,disp,is_long) x64_fild_membase_size(inst,basereg,disp,is_long,8) -#define x64_fld_reg(inst,index) x64_fld_reg_size(inst,index,8) -#define x64_fldz(inst) x64_fldz_size(inst,8) -#define x64_fld1(inst) x64_fld1_size(inst,8) -#define x64_fldpi(inst) x64_fldpi_size(inst,8) -#define x64_fst(inst,mem,is_double,pop_stack) x64_fst_size(inst,mem,is_double,pop_stack,8) -#define x64_fst_membase(inst,basereg,disp,is_double,pop_stack) x64_fst_membase_size(inst,basereg,disp,is_double,pop_stack,8) -#define x64_fst80_mem(inst,mem) x64_fst80_mem_size(inst,mem,8) -#define x64_fst80_membase(inst,basereg,disp) x64_fst80_membase_size(inst,basereg,disp,8) -#define x64_fist_pop(inst,mem,is_long) x64_fist_pop_size(inst,mem,is_long,8) -#define x64_fist_pop_membase(inst,basereg,disp,is_long) x64_fist_pop_membase_size(inst,basereg,disp,is_long,8) -#define x64_fstsw(inst) x64_fstsw_size(inst,8) -#define x64_fist_membase(inst,basereg,disp,is_int) x64_fist_membase_size(inst,basereg,disp,is_int,8) -//#define x64_push_reg(inst,reg) x64_push_reg_size(inst,reg,8) -#define x64_push_regp(inst,reg) x64_push_regp_size(inst,reg,8) -#define x64_push_mem(inst,mem) x64_push_mem_size(inst,mem,8) -//#define x64_push_membase(inst,basereg,disp) x64_push_membase_size(inst,basereg,disp,8) -#define x64_push_memindex(inst,basereg,disp,indexreg,shift) x64_push_memindex_size(inst,basereg,disp,indexreg,shift,8) -#define x64_push_imm(inst,imm) x64_push_imm_size(inst,imm,8) -//#define x64_pop_reg(inst,reg) x64_pop_reg_size(inst,reg,8) -#define x64_pop_mem(inst,mem) x64_pop_mem_size(inst,mem,8) -#define x64_pop_membase(inst,basereg,disp) x64_pop_membase_size(inst,basereg,disp,8) -#define x64_pushad(inst) x64_pushad_size(inst,8) -#define x64_pushfd(inst) x64_pushfd_size(inst,8) -#define x64_popad(inst) x64_popad_size(inst,8) -#define x64_popfd(inst) x64_popfd_size(inst,8) -#define x64_loop(inst,imm) x64_loop_size(inst,imm,8) -#define x64_loope(inst,imm) x64_loope_size(inst,imm,8) -#define x64_loopne(inst,imm) x64_loopne_size(inst,imm,8) -#define x64_jump32(inst,imm) x64_jump32_size(inst,imm,8) -#define x64_jump8(inst,imm) x64_jump8_size(inst,imm,8) -#define x64_jump_reg(inst,reg) x64_jump_reg_size(inst,reg,8) -#define x64_jump_mem(inst,mem) x64_jump_mem_size(inst,mem,8) -#define x64_jump_membase(inst,basereg,disp) x64_jump_membase_size(inst,basereg,disp,8) -#define x64_jump_code(inst,target) x64_jump_code_size(inst,target,8) -#define x64_jump_disp(inst,disp) x64_jump_disp_size(inst,disp,8) -#define x64_branch8(inst,cond,imm,is_signed) x64_branch8_size(inst,cond,imm,is_signed,8) -#define x64_branch32(inst,cond,imm,is_signed) x64_branch32_size(inst,cond,imm,is_signed,8) -#define x64_branch(inst,cond,target,is_signed) x64_branch_size(inst,cond,target,is_signed,8) -#define x64_branch_disp(inst,cond,disp,is_signed) x64_branch_disp_size(inst,cond,disp,is_signed,8) -#define x64_set_reg(inst,cond,reg,is_signed) x64_set_reg_size(inst,cond,reg,is_signed,8) -#define x64_set_mem(inst,cond,mem,is_signed) x64_set_mem_size(inst,cond,mem,is_signed,8) -#define x64_set_membase(inst,cond,basereg,disp,is_signed) x64_set_membase_size(inst,cond,basereg,disp,is_signed,8) -#define x64_call_imm(inst,disp) x64_call_imm_size(inst,disp,8) -//#define x64_call_reg(inst,reg) x64_call_reg_size(inst,reg,8) -#define x64_call_mem(inst,mem) x64_call_mem_size(inst,mem,8) -#define x64_call_membase(inst,basereg,disp) x64_call_membase_size(inst,basereg,disp,8) -#define x64_call_code(inst,target) x64_call_code_size(inst,target,8) -//#define x64_ret(inst) x64_ret_size(inst,8) -#define x64_ret_imm(inst,imm) x64_ret_imm_size(inst,imm,8) -#define x64_cmov_reg(inst,cond,is_signed,dreg,reg) x64_cmov_reg_size(inst,cond,is_signed,dreg,reg,8) -#define x64_cmov_mem(inst,cond,is_signed,reg,mem) x64_cmov_mem_size(inst,cond,is_signed,reg,mem,8) -#define x64_cmov_membase(inst,cond,is_signed,reg,basereg,disp) x64_cmov_membase_size(inst,cond,is_signed,reg,basereg,disp,8) -#define x64_enter(inst,framesize) x64_enter_size(inst,framesize) -//#define x64_leave(inst) x64_leave_size(inst,8) -#define x64_sahf(inst) x64_sahf_size(inst,8) -#define x64_fsin(inst) x64_fsin_size(inst,8) -#define x64_fcos(inst) x64_fcos_size(inst,8) -#define x64_fabs(inst) x64_fabs_size(inst,8) -#define x64_ftst(inst) x64_ftst_size(inst,8) -#define x64_fxam(inst) x64_fxam_size(inst,8) -#define x64_fpatan(inst) x64_fpatan_size(inst,8) -#define x64_fprem(inst) x64_fprem_size(inst,8) -#define x64_fprem1(inst) x64_fprem1_size(inst,8) -#define x64_frndint(inst) x64_frndint_size(inst,8) -#define x64_fsqrt(inst) x64_fsqrt_size(inst,8) -#define x64_fptan(inst) x64_fptan_size(inst,8) -#define x64_padding(inst,size) x64_padding_size(inst,size) -#define x64_prolog(inst,frame,reg_mask) x64_prolog_size(inst,frame,reg_mask,8) -#define x64_epilog(inst,reg_mask) x64_epilog_size(inst,reg_mask,8) - -#endif // X64_H diff --git a/FFTS/Sources/FFTS/src/arch/x86/.gitignore b/FFTS/Sources/FFTS/src/arch/x86/.gitignore deleted file mode 100644 index 341daec..0000000 --- a/FFTS/Sources/FFTS/src/arch/x86/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/Makefile -/Makefile.in -/.libs -/.deps -/*.la -/*.lo diff --git a/FFTS/Sources/FFTS/src/arch/x86/Makefile.am b/FFTS/Sources/FFTS/src/arch/x86/Makefile.am deleted file mode 100644 index bab0f9e..0000000 --- a/FFTS/Sources/FFTS/src/arch/x86/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -EXTRA_DIST = x86-codegen.h \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/arch/x86/x86-codegen.h b/FFTS/Sources/FFTS/src/arch/x86/x86-codegen.h deleted file mode 100644 index 0052076..0000000 --- a/FFTS/Sources/FFTS/src/arch/x86/x86-codegen.h +++ /dev/null @@ -1,2647 +0,0 @@ -/* - * x86-codegen.h: Macros for generating x86 code - * - * Authors: - * Paolo Molaro (lupus@ximian.com) - * Intel Corporation (ORP Project) - * Sergey Chaban (serge@wildwestsoftware.com) - * Dietmar Maurer (dietmar@ximian.com) - * Patrik Torstensson - * - * Copyright (C) 2000 Intel Corporation. All rights reserved. - * Copyright (C) 2001, 2002 Ximian, Inc. - */ - -#ifndef X86_H -#define X86_H - -#include - -#ifdef __native_client_codegen__ -extern gint8 nacl_align_byte; -#endif /* __native_client_codegen__ */ - -#if defined( __native_client_codegen__ ) && defined( TARGET_X86 ) -#define x86_codegen_pre(inst_ptr_ptr, inst_len) do { mono_nacl_align_inst(inst_ptr_ptr, inst_len); } while (0) - -#define x86_call_sequence_pre_val(inst) guint8* _code_start = (inst); -#define x86_call_sequence_post_val(inst) \ - (mono_nacl_align_call(&_code_start, &(inst)), _code_start); -#define x86_call_sequence_pre(inst) x86_call_sequence_pre_val((inst)) -#define x86_call_sequence_post(inst) x86_call_sequence_post_val((inst)) -#else -#define x86_codegen_pre(inst_ptr_ptr, inst_len) do {} while (0) - -/* Two variants are needed to avoid warnings */ -#define x86_call_sequence_pre_val(inst) guint8* _code_start = (inst); -#define x86_call_sequence_post_val(inst) _code_start -#define x86_call_sequence_pre(inst) -#define x86_call_sequence_post(inst) -#endif /* __native_client_codegen__ */ - -/* x86 32bit register numbers */ -typedef enum { - X86_EAX = 0, - X86_ECX = 1, - X86_EDX = 2, - X86_EBX = 3, - X86_ESP = 4, - X86_EBP = 5, - X86_ESI = 6, - X86_EDI = 7, - X86_NREG -} X86_Reg_No; - -typedef enum { - X86_XMM0, - X86_XMM1, - X86_XMM2, - X86_XMM3, - X86_XMM4, - X86_XMM5, - X86_XMM6, - X86_XMM7, - X86_XMM_NREG -} X86_XMM_Reg_No; - -/* opcodes for ALU instructions */ -typedef enum { - X86_ADD = 0, - X86_OR = 1, - X86_ADC = 2, - X86_SBB = 3, - X86_AND = 4, - X86_SUB = 5, - X86_XOR = 6, - X86_CMP = 7, - X86_NALU -} X86_ALU_Opcode; -/* -// opcodes for shift instructions -*/ -typedef enum { - X86_SHLD, - X86_SHLR, - X86_ROL = 0, - X86_ROR = 1, - X86_RCL = 2, - X86_RCR = 3, - X86_SHL = 4, - X86_SHR = 5, - X86_SAR = 7, - X86_NSHIFT = 8 -} X86_Shift_Opcode; -/* -// opcodes for floating-point instructions -*/ -typedef enum { - X86_FADD = 0, - X86_FMUL = 1, - X86_FCOM = 2, - X86_FCOMP = 3, - X86_FSUB = 4, - X86_FSUBR = 5, - X86_FDIV = 6, - X86_FDIVR = 7, - X86_NFP = 8 -} X86_FP_Opcode; -/* -// integer conditions codes -*/ -typedef enum { - X86_CC_EQ = 0, X86_CC_E = 0, X86_CC_Z = 0, - X86_CC_NE = 1, X86_CC_NZ = 1, - X86_CC_LT = 2, X86_CC_B = 2, X86_CC_C = 2, X86_CC_NAE = 2, - X86_CC_LE = 3, X86_CC_BE = 3, X86_CC_NA = 3, - X86_CC_GT = 4, X86_CC_A = 4, X86_CC_NBE = 4, - X86_CC_GE = 5, X86_CC_AE = 5, X86_CC_NB = 5, X86_CC_NC = 5, - X86_CC_LZ = 6, X86_CC_S = 6, - X86_CC_GEZ = 7, X86_CC_NS = 7, - X86_CC_P = 8, X86_CC_PE = 8, - X86_CC_NP = 9, X86_CC_PO = 9, - X86_CC_O = 10, - X86_CC_NO = 11, - X86_NCC -} X86_CC; - -/* FP status */ -enum { - X86_FP_C0 = 0x100, - X86_FP_C1 = 0x200, - X86_FP_C2 = 0x400, - X86_FP_C3 = 0x4000, - X86_FP_CC_MASK = 0x4500 -}; - -/* FP control word */ -enum { - X86_FPCW_INVOPEX_MASK = 0x1, - X86_FPCW_DENOPEX_MASK = 0x2, - X86_FPCW_ZERODIV_MASK = 0x4, - X86_FPCW_OVFEX_MASK = 0x8, - X86_FPCW_UNDFEX_MASK = 0x10, - X86_FPCW_PRECEX_MASK = 0x20, - X86_FPCW_PRECC_MASK = 0x300, - X86_FPCW_ROUNDC_MASK = 0xc00, - - /* values for precision control */ - X86_FPCW_PREC_SINGLE = 0, - X86_FPCW_PREC_DOUBLE = 0x200, - X86_FPCW_PREC_EXTENDED = 0x300, - - /* values for rounding control */ - X86_FPCW_ROUND_NEAREST = 0, - X86_FPCW_ROUND_DOWN = 0x400, - X86_FPCW_ROUND_UP = 0x800, - X86_FPCW_ROUND_TOZERO = 0xc00 -}; - -/* -// prefix code -*/ -typedef enum { - X86_LOCK_PREFIX = 0xF0, - X86_REPNZ_PREFIX = 0xF2, - X86_REPZ_PREFIX = 0xF3, - X86_REP_PREFIX = 0xF3, - X86_CS_PREFIX = 0x2E, - X86_SS_PREFIX = 0x36, - X86_DS_PREFIX = 0x3E, - X86_ES_PREFIX = 0x26, - X86_FS_PREFIX = 0x64, - X86_GS_PREFIX = 0x65, - X86_UNLIKELY_PREFIX = 0x2E, - X86_LIKELY_PREFIX = 0x3E, - X86_OPERAND_PREFIX = 0x66, - X86_ADDRESS_PREFIX = 0x67 -} X86_Prefix; - -static const unsigned char -x86_cc_unsigned_map [X86_NCC] = { - 0x74, /* eq */ - 0x75, /* ne */ - 0x72, /* lt */ - 0x76, /* le */ - 0x77, /* gt */ - 0x73, /* ge */ - 0x78, /* lz */ - 0x79, /* gez */ - 0x7a, /* p */ - 0x7b, /* np */ - 0x70, /* o */ - 0x71, /* no */ -}; - -static const unsigned char -x86_cc_signed_map [X86_NCC] = { - 0x74, /* eq */ - 0x75, /* ne */ - 0x7c, /* lt */ - 0x7e, /* le */ - 0x7f, /* gt */ - 0x7d, /* ge */ - 0x78, /* lz */ - 0x79, /* gez */ - 0x7a, /* p */ - 0x7b, /* np */ - 0x70, /* o */ - 0x71, /* no */ -}; - -typedef union { - int val; - unsigned char b [4]; -} x86_imm_buf; - -#define X86_NOBASEREG (-1) - -/* -// bitvector mask for callee-saved registers -*/ -#define X86_ESI_MASK (1<> 6) -#define x86_modrm_reg(modrm) (((modrm) >> 3) & 0x7) -#define x86_modrm_rm(modrm) ((modrm) & 0x7) - -#define x86_address_byte(inst,m,o,r) do { *(inst)++ = ((((m)&0x03)<<6)|(((o)&0x07)<<3)|(((r)&0x07))); } while (0) -#define x86_imm_emit32(inst,imm) \ - do { \ - x86_imm_buf imb; imb.val = (int) (imm); \ - *(inst)++ = imb.b [0]; \ - *(inst)++ = imb.b [1]; \ - *(inst)++ = imb.b [2]; \ - *(inst)++ = imb.b [3]; \ - } while (0) -#define x86_imm_emit16(inst,imm) do { *(short*)(inst) = (imm); (inst) += 2; } while (0) -#define x86_imm_emit8(inst,imm) do { *(inst) = (unsigned char)((imm) & 0xff); ++(inst); } while (0) -#define x86_is_imm8(imm) (((int)(imm) >= -128 && (int)(imm) <= 127)) -#define x86_is_imm16(imm) (((int)(imm) >= -(1<<16) && (int)(imm) <= ((1<<16)-1))) - -#define x86_reg_emit(inst,r,regno) do { x86_address_byte ((inst), 3, (r), (regno)); } while (0) -#define x86_reg8_emit(inst,r,regno,is_rh,is_rnoh) do {x86_address_byte ((inst), 3, (is_rh)?((r)|4):(r), (is_rnoh)?((regno)|4):(regno));} while (0) -#define x86_regp_emit(inst,r,regno) do { x86_address_byte ((inst), 0, (r), (regno)); } while (0) -#define x86_mem_emit(inst,r,disp) do { x86_address_byte ((inst), 0, (r), 5); x86_imm_emit32((inst), (disp)); } while (0) - -#define kMaxMembaseEmitPadding 6 - -#define x86_membase_emit_body(inst,r,basereg,disp) do {\ - if ((basereg) == X86_ESP) { \ - if ((disp) == 0) { \ - x86_address_byte ((inst), 0, (r), X86_ESP); \ - x86_address_byte ((inst), 0, X86_ESP, X86_ESP); \ - } else if (x86_is_imm8((disp))) { \ - x86_address_byte ((inst), 1, (r), X86_ESP); \ - x86_address_byte ((inst), 0, X86_ESP, X86_ESP); \ - x86_imm_emit8 ((inst), (disp)); \ - } else { \ - x86_address_byte ((inst), 2, (r), X86_ESP); \ - x86_address_byte ((inst), 0, X86_ESP, X86_ESP); \ - x86_imm_emit32 ((inst), (disp)); \ - } \ - break; \ - } \ - if ((disp) == 0 && (basereg) != X86_EBP) { \ - x86_address_byte ((inst), 0, (r), (basereg)); \ - break; \ - } \ - if (x86_is_imm8((disp))) { \ - x86_address_byte ((inst), 1, (r), (basereg)); \ - x86_imm_emit8 ((inst), (disp)); \ - } else { \ - x86_address_byte ((inst), 2, (r), (basereg)); \ - x86_imm_emit32 ((inst), (disp)); \ - } \ - } while (0) - -#if defined(__native_client_codegen__) && defined(TARGET_AMD64) -#define x86_membase_emit(inst,r,basereg,disp) \ - do { \ - x64_nacl_membase_handler(&(inst), (basereg), (disp), (r)) ; \ - } while (0) -#else /* __default_codegen__ || 32-bit NaCl codegen */ -#define x86_membase_emit(inst,r,basereg,disp) \ - do { \ - x86_membase_emit_body((inst),(r),(basereg),(disp)); \ - } while (0) -#endif - -#define kMaxMemindexEmitPadding 6 - -#define x86_memindex_emit(inst,r,basereg,disp,indexreg,shift) \ - do { \ - if ((basereg) == X86_NOBASEREG) { \ - x86_address_byte ((inst), 0, (r), 4); \ - x86_address_byte ((inst), (shift), (indexreg), 5); \ - x86_imm_emit32 ((inst), (disp)); \ - } else if ((disp) == 0 && (basereg) != X86_EBP) { \ - x86_address_byte ((inst), 0, (r), 4); \ - x86_address_byte ((inst), (shift), (indexreg), (basereg)); \ - } else if (x86_is_imm8((disp))) { \ - x86_address_byte ((inst), 1, (r), 4); \ - x86_address_byte ((inst), (shift), (indexreg), (basereg)); \ - x86_imm_emit8 ((inst), (disp)); \ - } else { \ - x86_address_byte ((inst), 2, (r), 4); \ - x86_address_byte ((inst), (shift), (indexreg), (basereg)); \ - x86_imm_emit32 ((inst), (disp)); \ - } \ - } while (0) - -/* - * target is the position in the code where to jump to: - * target = code; - * .. output loop code... - * x86_mov_reg_imm (code, X86_EAX, 0); - * loop = code; - * x86_loop (code, -1); - * ... finish method - * - * patch displacement - * x86_patch (loop, target); - * - * ins should point at the start of the instruction that encodes a target. - * the instruction is inspected for validity and the correct displacement - * is inserted. - */ -#define x86_do_patch(ins,target) \ - do { \ - unsigned char* pos = (ins) + 1; \ - int disp, size = 0; \ - switch (*(unsigned char*)(ins)) { \ - case 0xe8: case 0xe9: ++size; break; /* call, jump32 */ \ - case 0x0f: if (!(*pos >= 0x70 && *pos <= 0x8f)) assert (0); \ - ++size; ++pos; break; /* prefix for 32-bit disp */ \ - case 0xe0: case 0xe1: case 0xe2: /* loop */ \ - case 0xeb: /* jump8 */ \ - /* conditional jump opcodes */ \ - case 0x70: case 0x71: case 0x72: case 0x73: \ - case 0x74: case 0x75: case 0x76: case 0x77: \ - case 0x78: case 0x79: case 0x7a: case 0x7b: \ - case 0x7c: case 0x7d: case 0x7e: case 0x7f: \ - break; \ - default: assert (0); \ - } \ - disp = (target) - pos; \ - if (size) x86_imm_emit32 (pos, disp - 4); \ - else if (x86_is_imm8 (disp - 1)) x86_imm_emit8 (pos, disp - 1); \ - else assert (0); \ - } while (0) - -#if defined( __native_client_codegen__ ) && defined(TARGET_X86) - -#define x86_skip_nops(inst) \ - do { \ - int in_nop = 0; \ - do { \ - in_nop = 0; \ - if (inst[0] == 0x90) { \ - in_nop = 1; \ - inst += 1; \ - } \ - if (inst[0] == 0x8b && inst[1] == 0xc0) { \ - in_nop = 1; \ - inst += 2; \ - } \ - if (inst[0] == 0x8d && inst[1] == 0x6d \ - && inst[2] == 0x00) { \ - in_nop = 1; \ - inst += 3; \ - } \ - if (inst[0] == 0x8d && inst[1] == 0x64 \ - && inst[2] == 0x24 && inst[3] == 0x00) { \ - in_nop = 1; \ - inst += 4; \ - } \ - /* skip inst+=5 case because it's the 4-byte + 1-byte case */ \ - if (inst[0] == 0x8d && inst[1] == 0xad \ - && inst[2] == 0x00 && inst[3] == 0x00 \ - && inst[4] == 0x00 && inst[5] == 0x00) { \ - in_nop = 1; \ - inst += 6; \ - } \ - if (inst[0] == 0x8d && inst[1] == 0xa4 \ - && inst[2] == 0x24 && inst[3] == 0x00 \ - && inst[4] == 0x00 && inst[5] == 0x00 \ - && inst[6] == 0x00 ) { \ - in_nop = 1; \ - inst += 7; \ - } \ - } while ( in_nop ); \ - } while (0) - -#if defined(__native_client__) -#define x86_patch(ins,target) \ - do { \ - unsigned char* inst = (ins); \ - guint8* new_target = nacl_modify_patch_target((target)); \ - x86_skip_nops((inst)); \ - x86_do_patch((inst), new_target); \ - } while (0) -#else /* __native_client__ */ -#define x86_patch(ins,target) \ - do { \ - unsigned char* inst = (ins); \ - guint8* new_target = (target); \ - x86_skip_nops((inst)); \ - x86_do_patch((inst), new_target); \ - } while (0) -#endif /* __native_client__ */ - -#else -#define x86_patch(ins,target) do { x86_do_patch((ins), (target)); } while (0) -#endif /* __native_client_codegen__ */ - -#ifdef __native_client_codegen__ -/* The breakpoint instruction is illegal in Native Client, although the HALT */ -/* instruction is allowed. The breakpoint is used several places in mini-x86.c */ -/* and exceptions-x86.c. */ -#define x86_breakpoint(inst) \ - do { \ - *(inst)++ = 0xf4; \ - } while (0) -#else -#define x86_breakpoint(inst) \ - do { \ - *(inst)++ = 0xcc; \ - } while (0) -#endif - -#define x86_cld(inst) do { *(inst)++ =(unsigned char)0xfc; } while (0) -#define x86_stosb(inst) do { *(inst)++ =(unsigned char)0xaa; } while (0) -#define x86_stosl(inst) do { *(inst)++ =(unsigned char)0xab; } while (0) -#define x86_stosd(inst) x86_stosl((inst)) -#define x86_movsb(inst) do { *(inst)++ =(unsigned char)0xa4; } while (0) -#define x86_movsl(inst) do { *(inst)++ =(unsigned char)0xa5; } while (0) -#define x86_movsd(inst) x86_movsl((inst)) - -#if defined(__native_client_codegen__) -#if defined(TARGET_X86) -/* kNaClAlignment - 1 is the max value we can pass into x86_codegen_pre. */ -/* This keeps us from having to call x86_codegen_pre with specific */ -/* knowledge of the size of the instruction that follows it, and */ -/* localizes the alignment requirement to this spot. */ -#define x86_prefix(inst,p) \ - do { \ - x86_codegen_pre(&(inst), kNaClAlignment - 1); \ - *(inst)++ =(unsigned char) (p); \ - } while (0) -#elif defined(TARGET_AMD64) -/* We need to tag any prefixes so we can perform proper membase sandboxing */ -/* See: mini-amd64.c:amd64_nacl_membase_handler for verbose details */ -#define x86_prefix(inst,p) \ - do { \ - x64_nacl_tag_legacy_prefix((inst)); \ - *(inst)++ =(unsigned char) (p); \ - } while (0) - -#endif /* TARGET_AMD64 */ - -#else -#define x86_prefix(inst,p) \ - do { \ - *(inst)++ =(unsigned char) (p); \ - } while (0) -#endif /* __native_client_codegen__ */ - -#define x86_rdtsc(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = 0x0f; \ - *(inst)++ = 0x31; \ - } while (0) - -#define x86_cmpxchg_reg_reg(inst,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xb1; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - } while (0) - -#define x86_cmpxchg_mem_reg(inst,mem,reg) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xb1; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_cmpxchg_membase_reg(inst,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xb1; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_xchg_reg_reg(inst,dreg,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - if ((size) == 1) \ - *(inst)++ = (unsigned char)0x86; \ - else \ - *(inst)++ = (unsigned char)0x87; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - } while (0) - -#define x86_xchg_mem_reg(inst,mem,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - if ((size) == 1) \ - *(inst)++ = (unsigned char)0x86; \ - else \ - *(inst)++ = (unsigned char)0x87; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_xchg_membase_reg(inst,basereg,disp,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - if ((size) == 1) \ - *(inst)++ = (unsigned char)0x86; \ - else \ - *(inst)++ = (unsigned char)0x87; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_xadd_reg_reg(inst,dreg,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0F; \ - if ((size) == 1) \ - *(inst)++ = (unsigned char)0xC0; \ - else \ - *(inst)++ = (unsigned char)0xC1; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - } while (0) - -#define x86_xadd_mem_reg(inst,mem,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0x0F; \ - if ((size) == 1) \ - *(inst)++ = (unsigned char)0xC0; \ - else \ - *(inst)++ = (unsigned char)0xC1; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_xadd_membase_reg(inst,basereg,disp,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0F; \ - if ((size) == 1) \ - *(inst)++ = (unsigned char)0xC0; \ - else \ - *(inst)++ = (unsigned char)0xC1; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_inc_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xff; \ - x86_mem_emit ((inst), 0, (mem)); \ - } while (0) - -#define x86_inc_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xff; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - } while (0) - -#define x86_inc_reg(inst,reg) do { *(inst)++ = (unsigned char)0x40 + (reg); } while (0) - -#define x86_dec_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xff; \ - x86_mem_emit ((inst), 1, (mem)); \ - } while (0) - -#define x86_dec_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xff; \ - x86_membase_emit ((inst), 1, (basereg), (disp)); \ - } while (0) - -#define x86_dec_reg(inst,reg) do { *(inst)++ = (unsigned char)0x48 + (reg); } while (0) - -#define x86_not_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_mem_emit ((inst), 2, (mem)); \ - } while (0) - -#define x86_not_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_membase_emit ((inst), 2, (basereg), (disp)); \ - } while (0) - -#define x86_not_reg(inst,reg) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_reg_emit ((inst), 2, (reg)); \ - } while (0) - -#define x86_neg_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_mem_emit ((inst), 3, (mem)); \ - } while (0) - -#define x86_neg_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_membase_emit ((inst), 3, (basereg), (disp)); \ - } while (0) - -#define x86_neg_reg(inst,reg) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_reg_emit ((inst), 3, (reg)); \ - } while (0) - -#define x86_nop(inst) do { *(inst)++ = (unsigned char)0x90; } while (0) - -#define x86_alu_reg_imm(inst,opc,reg,imm) \ - do { \ - if ((reg) == X86_EAX) { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 5; \ - x86_imm_emit32 ((inst), (imm)); \ - break; \ - } \ - if (x86_is_imm8((imm))) { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x83; \ - x86_reg_emit ((inst), (opc), (reg)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0x81; \ - x86_reg_emit ((inst), (opc), (reg)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_alu_mem_imm(inst,opc,mem,imm) \ - do { \ - if (x86_is_imm8((imm))) { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0x83; \ - x86_mem_emit ((inst), (opc), (mem)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 10); \ - *(inst)++ = (unsigned char)0x81; \ - x86_mem_emit ((inst), (opc), (mem)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_alu_membase_imm(inst,opc,basereg,disp,imm) \ - do { \ - if (x86_is_imm8((imm))) { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x83; \ - x86_membase_emit ((inst), (opc), (basereg), (disp)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 5 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x81; \ - x86_membase_emit ((inst), (opc), (basereg), (disp)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_alu_membase8_imm(inst,opc,basereg,disp,imm) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x80; \ - x86_membase_emit ((inst), (opc), (basereg), (disp)); \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) - -#define x86_alu_mem_reg(inst,opc,mem,reg) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 1; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_alu_membase_reg(inst,opc,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 1; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_alu_reg_reg(inst,opc,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 3; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -/** - * @x86_alu_reg8_reg8: - * Supports ALU operations between two 8-bit registers. - * dreg := dreg opc reg - * X86_Reg_No enum is used to specify the registers. - * Additionally is_*_h flags are used to specify what part - * of a given 32-bit register is used - high (TRUE) or low (FALSE). - * For example: dreg = X86_EAX, is_dreg_h = TRUE -> use AH - */ -#define x86_alu_reg8_reg8(inst,opc,dreg,reg,is_dreg_h,is_reg_h) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 2; \ - x86_reg8_emit ((inst), (dreg), (reg), (is_dreg_h), (is_reg_h)); \ - } while (0) - -#define x86_alu_reg_mem(inst,opc,reg,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 3; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_alu_reg_membase(inst,opc,reg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (((unsigned char)(opc)) << 3) + 3; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_test_reg_imm(inst,reg,imm) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - if ((reg) == X86_EAX) { \ - *(inst)++ = (unsigned char)0xa9; \ - } else { \ - *(inst)++ = (unsigned char)0xf7; \ - x86_reg_emit ((inst), 0, (reg)); \ - } \ - x86_imm_emit32 ((inst), (imm)); \ - } while (0) - -#define x86_test_mem_imm8(inst,mem,imm) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0xf6; \ - x86_mem_emit ((inst), 0, (mem)); \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) - -#define x86_test_mem_imm(inst,mem,imm) \ - do { \ - x86_codegen_pre(&(inst), 10); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_mem_emit ((inst), 0, (mem)); \ - x86_imm_emit32 ((inst), (imm)); \ - } while (0) - -#define x86_test_membase_imm(inst,basereg,disp,imm) \ - do { \ - x86_codegen_pre(&(inst), 5 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - x86_imm_emit32 ((inst), (imm)); \ - } while (0) - -#define x86_test_reg_reg(inst,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0x85; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - } while (0) - -#define x86_test_mem_reg(inst,mem,reg) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0x85; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_test_membase_reg(inst,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x85; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_shift_reg_imm(inst,opc,reg,imm) \ - do { \ - if ((imm) == 1) { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd1; \ - x86_reg_emit ((inst), (opc), (reg)); \ - } else { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0xc1; \ - x86_reg_emit ((inst), (opc), (reg)); \ - x86_imm_emit8 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_shift_mem_imm(inst,opc,mem,imm) \ - do { \ - if ((imm) == 1) { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xd1; \ - x86_mem_emit ((inst), (opc), (mem)); \ - } else { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0xc1; \ - x86_mem_emit ((inst), (opc), (mem)); \ - x86_imm_emit8 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_shift_membase_imm(inst,opc,basereg,disp,imm) \ - do { \ - if ((imm) == 1) { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xd1; \ - x86_membase_emit ((inst), (opc), (basereg), (disp)); \ - } else { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xc1; \ - x86_membase_emit ((inst), (opc), (basereg), (disp)); \ - x86_imm_emit8 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_shift_reg(inst,opc,reg) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd3; \ - x86_reg_emit ((inst), (opc), (reg)); \ - } while (0) - -#define x86_shift_mem(inst,opc,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xd3; \ - x86_mem_emit ((inst), (opc), (mem)); \ - } while (0) - -#define x86_shift_membase(inst,opc,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xd3; \ - x86_membase_emit ((inst), (opc), (basereg), (disp)); \ - } while (0) - -/* - * Multi op shift missing. - */ - -#define x86_shrd_reg(inst,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xad; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - } while (0) - -#define x86_shrd_reg_imm(inst,dreg,reg,shamt) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xac; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - x86_imm_emit8 ((inst), (shamt)); \ - } while (0) - -#define x86_shld_reg(inst,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xa5; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - } while (0) - -#define x86_shld_reg_imm(inst,dreg,reg,shamt) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xa4; \ - x86_reg_emit ((inst), (reg), (dreg)); \ - x86_imm_emit8 ((inst), (shamt)); \ - } while (0) - -/* - * EDX:EAX = EAX * rm - */ -#define x86_mul_reg(inst,reg,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_reg_emit ((inst), 4 + ((is_signed) ? 1 : 0), (reg)); \ - } while (0) - -#define x86_mul_mem(inst,mem,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_mem_emit ((inst), 4 + ((is_signed) ? 1 : 0), (mem)); \ - } while (0) - -#define x86_mul_membase(inst,basereg,disp,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_membase_emit ((inst), 4 + ((is_signed) ? 1 : 0), (basereg), (disp)); \ - } while (0) - -/* - * r *= rm - */ -#define x86_imul_reg_reg(inst,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xaf; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#define x86_imul_reg_mem(inst,reg,mem) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xaf; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_imul_reg_membase(inst,reg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0xaf; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -/* - * dreg = rm * imm - */ -#define x86_imul_reg_reg_imm(inst,dreg,reg,imm) \ - do { \ - if (x86_is_imm8 ((imm))) { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x6b; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0x69; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_imul_reg_mem_imm(inst,reg,mem,imm) \ - do { \ - if (x86_is_imm8 ((imm))) { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0x6b; \ - x86_mem_emit ((inst), (reg), (mem)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0x69; \ - x86_mem_emit ((inst), (reg), (mem)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_imul_reg_membase_imm(inst,reg,basereg,disp,imm) \ - do { \ - if (x86_is_imm8 ((imm))) { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x6b; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 5 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x69; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -/* - * divide EDX:EAX by rm; - * eax = quotient, edx = remainder - */ - -#define x86_div_reg(inst,reg,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_reg_emit ((inst), 6 + ((is_signed) ? 1 : 0), (reg)); \ - } while (0) - -#define x86_div_mem(inst,mem,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_mem_emit ((inst), 6 + ((is_signed) ? 1 : 0), (mem)); \ - } while (0) - -#define x86_div_membase(inst,basereg,disp,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xf7; \ - x86_membase_emit ((inst), 6 + ((is_signed) ? 1 : 0), (basereg), (disp)); \ - } while (0) - -#define x86_mov_mem_reg(inst,mem,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x88; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x89; break; \ - default: assert (0); \ - } \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_mov_regp_reg(inst,regp,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x88; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x89; break; \ - default: assert (0); \ - } \ - x86_regp_emit ((inst), (reg), (regp)); \ - } while (0) - -#define x86_mov_membase_reg(inst,basereg,disp,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x88; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x89; break; \ - default: assert (0); \ - } \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_mov_memindex_reg(inst,basereg,disp,indexreg,shift,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMemindexEmitPadding); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x88; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x89; break; \ - default: assert (0); \ - } \ - x86_memindex_emit ((inst), (reg), (basereg), (disp), (indexreg), (shift)); \ - } while (0) - -#define x86_mov_reg_reg(inst,dreg,reg,size) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x8a; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#define x86_mov_reg_mem(inst,reg,mem,size) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x8a; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define kMovRegMembasePadding (2 + kMaxMembaseEmitPadding) - -#define x86_mov_reg_membase(inst,reg,basereg,disp,size) \ - do { \ - x86_codegen_pre(&(inst), kMovRegMembasePadding); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x8a; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_mov_reg_memindex(inst,reg,basereg,disp,indexreg,shift,size) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMemindexEmitPadding); \ - switch ((size)) { \ - case 1: *(inst)++ = (unsigned char)0x8a; break; \ - case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */ \ - case 4: *(inst)++ = (unsigned char)0x8b; break; \ - default: assert (0); \ - } \ - x86_memindex_emit ((inst), (reg), (basereg), (disp), (indexreg), (shift)); \ - } while (0) - -/* - * Note: x86_clear_reg () chacnges the condition code! - */ -#define x86_clear_reg(inst,reg) x86_alu_reg_reg((inst), X86_XOR, (reg), (reg)) - -#define x86_mov_reg_imm(inst,reg,imm) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0xb8 + (reg); \ - x86_imm_emit32 ((inst), (imm)); \ - } while (0) - -#define x86_mov_mem_imm(inst,mem,imm,size) \ - do { \ - if ((size) == 1) { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0xc6; \ - x86_mem_emit ((inst), 0, (mem)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else if ((size) == 2) { \ - x86_codegen_pre(&(inst), 9); \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - *(inst)++ = (unsigned char)0xc7; \ - x86_mem_emit ((inst), 0, (mem)); \ - x86_imm_emit16 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 10); \ - *(inst)++ = (unsigned char)0xc7; \ - x86_mem_emit ((inst), 0, (mem)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_mov_membase_imm(inst,basereg,disp,imm,size) \ - do { \ - if ((size) == 1) { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xc6; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else if ((size) == 2) { \ - x86_codegen_pre(&(inst), 4 + kMaxMembaseEmitPadding); \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - *(inst)++ = (unsigned char)0xc7; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - x86_imm_emit16 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 5 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xc7; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_mov_memindex_imm(inst,basereg,disp,indexreg,shift,imm,size) \ - do { \ - if ((size) == 1) { \ - x86_codegen_pre(&(inst), 2 + kMaxMemindexEmitPadding); \ - *(inst)++ = (unsigned char)0xc6; \ - x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \ - x86_imm_emit8 ((inst), (imm)); \ - } else if ((size) == 2) { \ - x86_codegen_pre(&(inst), 4 + kMaxMemindexEmitPadding); \ - x86_prefix((inst), X86_OPERAND_PREFIX); \ - *(inst)++ = (unsigned char)0xc7; \ - x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \ - x86_imm_emit16 ((inst), (imm)); \ - } else { \ - x86_codegen_pre(&(inst), 5 + kMaxMemindexEmitPadding); \ - *(inst)++ = (unsigned char)0xc7; \ - x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift)); \ - x86_imm_emit32 ((inst), (imm)); \ - } \ - } while (0) - -#define x86_lea_mem(inst,reg,mem) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0x8d; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_lea_membase(inst,reg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x8d; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_lea_memindex(inst,reg,basereg,disp,indexreg,shift) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMemindexEmitPadding); \ - *(inst)++ = (unsigned char)0x8d; \ - x86_memindex_emit ((inst), (reg), (basereg), (disp), (indexreg), (shift)); \ - } while (0) - -#define x86_widen_reg(inst,dreg,reg,is_signed,is_half) \ - do { \ - unsigned char op = 0xb6; \ - g_assert (is_half || X86_IS_BYTE_REG (reg)); \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) op += 0x08; \ - if ((is_half)) op += 0x01; \ - *(inst)++ = op; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#define x86_widen_mem(inst,dreg,mem,is_signed,is_half) \ - do { \ - unsigned char op = 0xb6; \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) op += 0x08; \ - if ((is_half)) op += 0x01; \ - *(inst)++ = op; \ - x86_mem_emit ((inst), (dreg), (mem)); \ - } while (0) - -#define x86_widen_membase(inst,dreg,basereg,disp,is_signed,is_half) \ - do { \ - unsigned char op = 0xb6; \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) op += 0x08; \ - if ((is_half)) op += 0x01; \ - *(inst)++ = op; \ - x86_membase_emit ((inst), (dreg), (basereg), (disp)); \ - } while (0) - -#define x86_widen_memindex(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half) \ - do { \ - unsigned char op = 0xb6; \ - x86_codegen_pre(&(inst), 2 + kMaxMemindexEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) op += 0x08; \ - if ((is_half)) op += 0x01; \ - *(inst)++ = op; \ - x86_memindex_emit ((inst), (dreg), (basereg), (disp), (indexreg), (shift)); \ - } while (0) - -#define x86_cdq(inst) do { *(inst)++ = (unsigned char)0x99; } while (0) -#define x86_wait(inst) do { *(inst)++ = (unsigned char)0x9b; } while (0) - -#define x86_fp_op_mem(inst,opc,mem,is_double) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (is_double) ? (unsigned char)0xdc : (unsigned char)0xd8; \ - x86_mem_emit ((inst), (opc), (mem)); \ - } while (0) - -#define x86_fp_op_membase(inst,opc,basereg,disp,is_double) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (is_double) ? (unsigned char)0xdc : (unsigned char)0xd8; \ - x86_membase_emit ((inst), (opc), (basereg), (disp)); \ - } while (0) - -#define x86_fp_op(inst,opc,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd8; \ - *(inst)++ = (unsigned char)0xc0+((opc)<<3)+((index)&0x07); \ - } while (0) - -#define x86_fp_op_reg(inst,opc,index,pop_stack) \ - do { \ - static const unsigned char map[] = { 0, 1, 2, 3, 5, 4, 7, 6, 8}; \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (pop_stack) ? (unsigned char)0xde : (unsigned char)0xdc; \ - *(inst)++ = (unsigned char)0xc0+(map[(opc)]<<3)+((index)&0x07); \ - } while (0) - -/** - * @x86_fp_int_op_membase - * Supports FPU operations between ST(0) and integer operand in memory. - * Operation encoded using X86_FP_Opcode enum. - * Operand is addressed by [basereg + disp]. - * is_int specifies whether operand is int32 (TRUE) or int16 (FALSE). - */ -#define x86_fp_int_op_membase(inst,opc,basereg,disp,is_int) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (is_int) ? (unsigned char)0xda : (unsigned char)0xde; \ - x86_membase_emit ((inst), opc, (basereg), (disp)); \ - } while (0) - -#define x86_fstp(inst,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xdd; \ - *(inst)++ = (unsigned char)0xd8+(index); \ - } while (0) - -#define x86_fcompp(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xde; \ - *(inst)++ = (unsigned char)0xd9; \ - } while (0) - -#define x86_fucompp(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xda; \ - *(inst)++ = (unsigned char)0xe9; \ - } while (0) - -#define x86_fnstsw(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xdf; \ - *(inst)++ = (unsigned char)0xe0; \ - } while (0) - -#define x86_fnstcw(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xd9; \ - x86_mem_emit ((inst), 7, (mem)); \ - } while (0) - -#define x86_fnstcw_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xd9; \ - x86_membase_emit ((inst), 7, (basereg), (disp)); \ - } while (0) - -#define x86_fldcw(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xd9; \ - x86_mem_emit ((inst), 5, (mem)); \ - } while (0) - -#define x86_fldcw_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xd9; \ - x86_membase_emit ((inst), 5, (basereg), (disp)); \ - } while (0) - -#define x86_fchs(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd9; \ - *(inst)++ = (unsigned char)0xe0; \ - } while (0) - -#define x86_frem(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd9; \ - *(inst)++ = (unsigned char)0xf8; \ - } while (0) - -#define x86_fxch(inst,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd9; \ - *(inst)++ = (unsigned char)0xc8 + ((index) & 0x07); \ - } while (0) - -#define x86_fcomi(inst,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xdb; \ - *(inst)++ = (unsigned char)0xf0 + ((index) & 0x07); \ - } while (0) - -#define x86_fcomip(inst,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xdf; \ - *(inst)++ = (unsigned char)0xf0 + ((index) & 0x07); \ - } while (0) - -#define x86_fucomi(inst,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xdb; \ - *(inst)++ = (unsigned char)0xe8 + ((index) & 0x07); \ - } while (0) - -#define x86_fucomip(inst,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xdf; \ - *(inst)++ = (unsigned char)0xe8 + ((index) & 0x07); \ - } while (0) - -#define x86_fld(inst,mem,is_double) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (is_double) ? (unsigned char)0xdd : (unsigned char)0xd9; \ - x86_mem_emit ((inst), 0, (mem)); \ - } while (0) - -#define x86_fld_membase(inst,basereg,disp,is_double) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (is_double) ? (unsigned char)0xdd : (unsigned char)0xd9; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - } while (0) - -#define x86_fld80_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xdb; \ - x86_mem_emit ((inst), 5, (mem)); \ - } while (0) - -#define x86_fld80_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xdb; \ - x86_membase_emit ((inst), 5, (basereg), (disp)); \ - } while (0) - -#define x86_fild(inst,mem,is_long) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - if ((is_long)) { \ - *(inst)++ = (unsigned char)0xdf; \ - x86_mem_emit ((inst), 5, (mem)); \ - } else { \ - *(inst)++ = (unsigned char)0xdb; \ - x86_mem_emit ((inst), 0, (mem)); \ - } \ - } while (0) - -#define x86_fild_membase(inst,basereg,disp,is_long) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - if ((is_long)) { \ - *(inst)++ = (unsigned char)0xdf; \ - x86_membase_emit ((inst), 5, (basereg), (disp)); \ - } else { \ - *(inst)++ = (unsigned char)0xdb; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - } \ - } while (0) - -#define x86_fld_reg(inst,index) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd9; \ - *(inst)++ = (unsigned char)0xc0 + ((index) & 0x07); \ - } while (0) - -#define x86_fldz(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd9; \ - *(inst)++ = (unsigned char)0xee; \ - } while (0) - -#define x86_fld1(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd9; \ - *(inst)++ = (unsigned char)0xe8; \ - } while (0) - -#define x86_fldpi(inst) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xd9; \ - *(inst)++ = (unsigned char)0xeb; \ - } while (0) - -#define x86_fst(inst,mem,is_double,pop_stack) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (is_double) ? (unsigned char)0xdd: (unsigned char)0xd9; \ - x86_mem_emit ((inst), 2 + ((pop_stack) ? 1 : 0), (mem)); \ - } while (0) - -#define x86_fst_membase(inst,basereg,disp,is_double,pop_stack) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (is_double) ? (unsigned char)0xdd: (unsigned char)0xd9; \ - x86_membase_emit ((inst), 2 + ((pop_stack) ? 1 : 0), (basereg), (disp)); \ - } while (0) - -#define x86_fst80_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xdb; \ - x86_mem_emit ((inst), 7, (mem)); \ - } while (0) - - -#define x86_fst80_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xdb; \ - x86_membase_emit ((inst), 7, (basereg), (disp)); \ - } while (0) - - -#define x86_fist_pop(inst,mem,is_long) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - if ((is_long)) { \ - *(inst)++ = (unsigned char)0xdf; \ - x86_mem_emit ((inst), 7, (mem)); \ - } else { \ - *(inst)++ = (unsigned char)0xdb; \ - x86_mem_emit ((inst), 3, (mem)); \ - } \ - } while (0) - -#define x86_fist_pop_membase(inst,basereg,disp,is_long) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - if ((is_long)) { \ - *(inst)++ = (unsigned char)0xdf; \ - x86_membase_emit ((inst), 7, (basereg), (disp)); \ - } else { \ - *(inst)++ = (unsigned char)0xdb; \ - x86_membase_emit ((inst), 3, (basereg), (disp)); \ - } \ - } while (0) - -#define x86_fstsw(inst) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x9b; \ - *(inst)++ = (unsigned char)0xdf; \ - *(inst)++ = (unsigned char)0xe0; \ - } while (0) - -/** - * @x86_fist_membase - * Converts content of ST(0) to integer and stores it at memory location - * addressed by [basereg + disp]. - * is_int specifies whether destination is int32 (TRUE) or int16 (FALSE). - */ -#define x86_fist_membase(inst,basereg,disp,is_int) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - if ((is_int)) { \ - *(inst)++ = (unsigned char)0xdb; \ - x86_membase_emit ((inst), 2, (basereg), (disp)); \ - } else { \ - *(inst)++ = (unsigned char)0xdf; \ - x86_membase_emit ((inst), 2, (basereg), (disp)); \ - } \ - } while (0) - - -#define x86_push_reg(inst,reg) \ - do { \ - *(inst)++ = (unsigned char)0x50 + (reg); \ - } while (0) - -#define x86_push_regp(inst,reg) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xff; \ - x86_regp_emit ((inst), 6, (reg)); \ - } while (0) - -#define x86_push_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0xff; \ - x86_mem_emit ((inst), 6, (mem)); \ - } while (0) - -#define x86_push_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xff; \ - x86_membase_emit ((inst), 6, (basereg), (disp)); \ - } while (0) - -#define x86_push_memindex(inst,basereg,disp,indexreg,shift) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMemindexEmitPadding); \ - *(inst)++ = (unsigned char)0xff; \ - x86_memindex_emit ((inst), 6, (basereg), (disp), (indexreg), (shift)); \ - } while (0) - -#define x86_push_imm_template(inst) x86_push_imm (inst, 0xf0f0f0f0) - -#define x86_push_imm(inst,imm) \ - do { \ - int _imm = (int) (imm); \ - if (x86_is_imm8 (_imm)) { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0x6A; \ - x86_imm_emit8 ((inst), (_imm)); \ - } else { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0x68; \ - x86_imm_emit32 ((inst), (_imm)); \ - } \ - } while (0) - -#define x86_pop_reg(inst,reg) \ - do { \ - *(inst)++ = (unsigned char)0x58 + (reg); \ - } while (0) - -#define x86_pop_mem(inst,mem) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0x87; \ - x86_mem_emit ((inst), 0, (mem)); \ - } while (0) - -#define x86_pop_membase(inst,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 1 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x87; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - } while (0) - -#define x86_pushad(inst) do { *(inst)++ = (unsigned char)0x60; } while (0) -#define x86_pushfd(inst) do { *(inst)++ = (unsigned char)0x9c; } while (0) -#define x86_popad(inst) do { *(inst)++ = (unsigned char)0x61; } while (0) -#define x86_popfd(inst) do { *(inst)++ = (unsigned char)0x9d; } while (0) - -#define x86_loop(inst,imm) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xe2; \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) - -#define x86_loope(inst,imm) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xe1; \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) - -#define x86_loopne(inst,imm) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xe0; \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) - -#if defined(TARGET_X86) -#define x86_jump32(inst,imm) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0xe9; \ - x86_imm_emit32 ((inst), (imm)); \ - } while (0) - -#define x86_jump8(inst,imm) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - *(inst)++ = (unsigned char)0xeb; \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) -#elif defined(TARGET_AMD64) -/* These macros are used directly from mini-amd64.c and other */ -/* x64 specific files, so they need to be instrumented directly. */ -#define x86_jump32(inst,imm) \ - do { \ - x64_codegen_pre(inst); \ - *(inst)++ = (unsigned char)0xe9; \ - x86_imm_emit32 ((inst), (imm)); \ - x64_codegen_post(inst); \ - } while (0) - -#define x86_jump8(inst,imm) \ - do { \ - x64_codegen_pre(inst); \ - *(inst)++ = (unsigned char)0xeb; \ - x86_imm_emit8 ((inst), (imm)); \ - x64_codegen_post(inst); \ - } while (0) -#endif - -#if defined( __native_client_codegen__ ) && defined( TARGET_X86 ) -#define x86_jump_reg(inst,reg) do { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0x83; /* and */ \ - x86_reg_emit ((inst), 4, (reg)); /* reg */ \ - *(inst)++ = (unsigned char)nacl_align_byte; \ - *(inst)++ = (unsigned char)0xff; \ - x86_reg_emit ((inst), 4, (reg)); \ - } while (0) - -/* Let's hope ECX is available for these... */ -#define x86_jump_mem(inst,mem) do { \ - x86_mov_reg_mem(inst, (X86_ECX), (mem), 4); \ - x86_jump_reg(inst, (X86_ECX)); \ - } while (0) - -#define x86_jump_membase(inst,basereg,disp) do { \ - x86_mov_reg_membase(inst, (X86_ECX), basereg, disp, 4); \ - x86_jump_reg(inst, (X86_ECX)); \ - } while (0) - -/* like x86_jump_membase, but force a 32-bit displacement */ -#define x86_jump_membase32(inst,basereg,disp) do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0x8b; \ - x86_address_byte ((inst), 2, X86_ECX, (basereg)); \ - x86_imm_emit32 ((inst), (disp)); \ - x86_jump_reg(inst, (X86_ECX)); \ - } while (0) -#else /* __native_client_codegen__ */ -#define x86_jump_reg(inst,reg) \ - do { \ - *(inst)++ = (unsigned char)0xff; \ - x86_reg_emit ((inst), 4, (reg)); \ - } while (0) - -#define x86_jump_mem(inst,mem) \ - do { \ - *(inst)++ = (unsigned char)0xff; \ - x86_mem_emit ((inst), 4, (mem)); \ - } while (0) - -#define x86_jump_membase(inst,basereg,disp) \ - do { \ - *(inst)++ = (unsigned char)0xff; \ - x86_membase_emit ((inst), 4, (basereg), (disp)); \ - } while (0) -#endif /* __native_client_codegen__ */ -/* - * target is a pointer in our buffer. - */ -#define x86_jump_code_body(inst,target) \ - do { \ - int t; \ - x86_codegen_pre(&(inst), 2); \ - t = (unsigned char*)(target) - (inst) - 2; \ - if (x86_is_imm8(t)) { \ - x86_jump8 ((inst), t); \ - } else { \ - x86_codegen_pre(&(inst), 5); \ - t = (unsigned char*)(target) - (inst) - 5; \ - x86_jump32 ((inst), t); \ - } \ - } while (0) - -#if defined(__native_client_codegen__) -#if defined(TARGET_X86) -#define x86_jump_code(inst,target) \ - do { \ - guint8* jump_start = (inst); \ - x86_jump_code_body((inst),(target)); \ - x86_patch(jump_start, (target)); \ - } while (0) -#else if defined(TARGET_AMD64) -#define x86_jump_code(inst,target) \ - do { \ - /* jump_code_body is used twice because there are offsets */ \ - /* calculated based on the IP, which can change after the */ \ - /* call to x64_codegen_post */ \ - x64_codegen_pre(inst); \ - x86_jump_code_body((inst),(target)); \ - inst = x64_codegen_post(inst); \ - x86_jump_code_body((inst),(target)); \ - } while (0) -#endif -#else -#define x86_jump_code(inst,target) \ - do { \ - x86_jump_code_body((inst),(target)); \ - } while (0) -#endif /* __native_client_codegen__ */ - -#define x86_jump_disp(inst,disp) \ - do { \ - int t = (disp) - 2; \ - if (x86_is_imm8(t)) { \ - x86_jump8 ((inst), t); \ - } else { \ - t -= 3; \ - x86_jump32 ((inst), t); \ - } \ - } while (0) - -#if defined(TARGET_X86) -#define x86_branch8(inst,cond,imm,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 2); \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)]; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)]; \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) - -#define x86_branch32(inst,cond,imm,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 6); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] + 0x10; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] + 0x10; \ - x86_imm_emit32 ((inst), (imm)); \ - } while (0) -#elif defined(TARGET_AMD64) -/* These macros are used directly from mini-amd64.c and other */ -/* x64 specific files, so they need to be instrumented directly. */ -#define x86_branch8(inst,cond,imm,is_signed) \ - do { \ - x64_codegen_pre(inst); \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)]; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)]; \ - x86_imm_emit8 ((inst), (imm)); \ - x64_codegen_post(inst); \ - } while (0) -#define x86_branch32(inst,cond,imm,is_signed) \ - do { \ - x64_codegen_pre(inst); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] + 0x10; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] + 0x10; \ - x86_imm_emit32 ((inst), (imm)); \ - x64_codegen_post(inst); \ - } while (0) -#endif - -#if defined(TARGET_X86) -#define x86_branch(inst,cond,target,is_signed) \ - do { \ - int offset; \ - guint8* branch_start; \ - x86_codegen_pre(&(inst), 2); \ - offset = (target) - (inst) - 2; \ - branch_start = (inst); \ - if (x86_is_imm8 ((offset))) \ - x86_branch8 ((inst), (cond), offset, (is_signed)); \ - else { \ - x86_codegen_pre(&(inst), 6); \ - offset = (target) - (inst) - 6; \ - x86_branch32 ((inst), (cond), offset, (is_signed)); \ - } \ - x86_patch(branch_start, (target)); \ - } while (0) -#elif defined(TARGET_AMD64) -/* This macro is used directly from mini-amd64.c and other */ -/* x64 specific files, so it needs to be instrumented directly. */ - -#define x86_branch_body(inst,cond,target,is_signed) \ - do { \ - int offset = (target) - (inst) - 2; \ - if (x86_is_imm8 ((offset))) \ - x86_branch8 ((inst), (cond), offset, (is_signed)); \ - else { \ - offset = (target) - (inst) - 6; \ - x86_branch32 ((inst), (cond), offset, (is_signed)); \ - } \ - } while (0) - -#if defined(__native_client_codegen__) -#define x86_branch(inst,cond,target,is_signed) \ - do { \ - /* branch_body is used twice because there are offsets */ \ - /* calculated based on the IP, which can change after */ \ - /* the call to x64_codegen_post */ \ - x64_codegen_pre(inst); \ - x86_branch_body((inst),(cond),(target),(is_signed)); \ - inst = x64_codegen_post(inst); \ - x86_branch_body((inst),(cond),(target),(is_signed)); \ - } while (0) -#else -#define x86_branch(inst,cond,target,is_signed) \ - do { \ - x86_branch_body((inst),(cond),(target),(is_signed)); \ - } while (0) -#endif /* __native_client_codegen__ */ - -#endif /* TARGET_AMD64 */ - -#define x86_branch_disp(inst,cond,disp,is_signed) \ - do { \ - int offset = (disp) - 2; \ - if (x86_is_imm8 ((offset))) \ - x86_branch8 ((inst), (cond), offset, (is_signed)); \ - else { \ - offset -= 4; \ - x86_branch32 ((inst), (cond), offset, (is_signed)); \ - } \ - } while (0) - -#define x86_set_reg(inst,cond,reg,is_signed) \ - do { \ - g_assert (X86_IS_BYTE_REG (reg)); \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] + 0x20; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] + 0x20; \ - x86_reg_emit ((inst), 0, (reg)); \ - } while (0) - -#define x86_set_mem(inst,cond,mem,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] + 0x20; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] + 0x20; \ - x86_mem_emit ((inst), 0, (mem)); \ - } while (0) - -#define x86_set_membase(inst,cond,basereg,disp,is_signed) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] + 0x20; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] + 0x20; \ - x86_membase_emit ((inst), 0, (basereg), (disp)); \ - } while (0) - -#define x86_call_imm_body(inst,disp) \ - do { \ - *(inst)++ = (unsigned char)0xe8; \ - x86_imm_emit32 ((inst), (int)(disp)); \ - } while (0) - -#define x86_call_imm(inst,disp) \ - do { \ - x86_call_sequence_pre((inst)); \ - x86_call_imm_body((inst), (disp)); \ - x86_call_sequence_post((inst)); \ - } while (0) - - -#if defined( __native_client_codegen__ ) && defined( TARGET_X86 ) -#define x86_call_reg_internal(inst,reg) \ - do { \ - *(inst)++ = (unsigned char)0x83; /* and */ \ - x86_reg_emit ((inst), 4, (reg)); /* reg */ \ - *(inst)++ = (unsigned char)nacl_align_byte; \ - *(inst)++ = (unsigned char)0xff; /* call */ \ - x86_reg_emit ((inst), 2, (reg)); /* reg */ \ - } while (0) - -#define x86_call_reg(inst, reg) do { \ - x86_call_sequence_pre((inst)); \ - x86_call_reg_internal(inst, reg); \ - x86_call_sequence_post((inst)); \ - } while (0) - - -/* It appears that x86_call_mem() is never used, so I'm leaving it out. */ -#define x86_call_membase(inst,basereg,disp) do { \ - x86_call_sequence_pre((inst)); \ - /* x86_mov_reg_membase() inlined so its fixed size */ \ - *(inst)++ = (unsigned char)0x8b; \ - x86_address_byte ((inst), 2, (X86_ECX), (basereg)); \ - x86_imm_emit32 ((inst), (disp)); \ - x86_call_reg_internal(inst, X86_ECX); \ - x86_call_sequence_post((inst)); \ - } while (0) -#else /* __native_client_codegen__ */ -#define x86_call_reg(inst,reg) \ - do { \ - *(inst)++ = (unsigned char)0xff; \ - x86_reg_emit ((inst), 2, (reg)); \ - } while (0) - -#define x86_call_mem(inst,mem) \ - do { \ - *(inst)++ = (unsigned char)0xff; \ - x86_mem_emit ((inst), 2, (mem)); \ - } while (0) - -#define x86_call_membase(inst,basereg,disp) \ - do { \ - *(inst)++ = (unsigned char)0xff; \ - x86_membase_emit ((inst), 2, (basereg), (disp)); \ - } while (0) -#endif /* __native_client_codegen__ */ - - -#if defined( __native_client_codegen__ ) && defined( TARGET_X86 ) - -#define x86_call_code(inst,target) \ - do { \ - int _x86_offset; \ - guint8* call_start; \ - guint8* _aligned_start; \ - x86_call_sequence_pre_val((inst)); \ - _x86_offset = (unsigned char*)(target) - (inst); \ - _x86_offset -= 5; \ - x86_call_imm_body ((inst), _x86_offset); \ - _aligned_start = x86_call_sequence_post_val((inst)); \ - call_start = _aligned_start; \ - _x86_offset = (unsigned char*)(target) - (_aligned_start); \ - _x86_offset -= 5; \ - x86_call_imm_body ((_aligned_start), _x86_offset); \ - x86_patch(call_start, (target)); \ - } while (0) - -#define SIZE_OF_RET 6 -#define x86_ret(inst) do { \ - *(inst)++ = (unsigned char)0x59; /* pop ecx */ \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0x83; /* and 0xffffffff, ecx */ \ - *(inst)++ = (unsigned char)0xe1; \ - *(inst)++ = (unsigned char)nacl_align_byte; \ - *(inst)++ = (unsigned char)0xff; /* jmp ecx */ \ - *(inst)++ = (unsigned char)0xe1; \ - } while (0) - -/* pop return address */ -/* pop imm bytes from stack */ -/* return */ -#define x86_ret_imm(inst,imm) do { \ - *(inst)++ = (unsigned char)0x59; /* pop ecx */ \ - x86_alu_reg_imm ((inst), X86_ADD, X86_ESP, imm); \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0x83; /* and 0xffffffff, ecx */ \ - *(inst)++ = (unsigned char)0xe1; \ - *(inst)++ = (unsigned char)nacl_align_byte; \ - *(inst)++ = (unsigned char)0xff; /* jmp ecx */ \ - *(inst)++ = (unsigned char)0xe1; \ -} while (0) -#else /* __native_client_codegen__ */ - -#define x86_call_code(inst,target) \ - do { \ - int _x86_offset; \ - _x86_offset = (unsigned char*)(target) - (inst); \ - _x86_offset -= 5; \ - x86_call_imm_body ((inst), _x86_offset); \ - } while (0) - -#define x86_ret(inst) do { *(inst)++ = (unsigned char)0xc3; } while (0) - -#define x86_ret_imm(inst,imm) \ - do { \ - if ((imm) == 0) { \ - x86_ret ((inst)); \ - } else { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0xc2; \ - x86_imm_emit16 ((inst), (imm)); \ - } \ - } while (0) -#endif /* __native_client_codegen__ */ - -#define x86_cmov_reg(inst,cond,is_signed,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char) 0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] - 0x30; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] - 0x30; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#define x86_cmov_mem(inst,cond,is_signed,reg,mem) \ - do { \ - x86_codegen_pre(&(inst), 7); \ - *(inst)++ = (unsigned char) 0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] - 0x30; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] - 0x30; \ - x86_mem_emit ((inst), (reg), (mem)); \ - } while (0) - -#define x86_cmov_membase(inst,cond,is_signed,reg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char) 0x0f; \ - if ((is_signed)) \ - *(inst)++ = x86_cc_signed_map [(cond)] - 0x30; \ - else \ - *(inst)++ = x86_cc_unsigned_map [(cond)] - 0x30; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_enter(inst,framesize) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0xc8; \ - x86_imm_emit16 ((inst), (framesize)); \ - *(inst)++ = 0; \ - } while (0) - -#define x86_leave(inst) do { *(inst)++ = (unsigned char)0xc9; } while (0) -#define x86_sahf(inst) do { *(inst)++ = (unsigned char)0x9e; } while (0) - -#define x86_fsin(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xfe; } while (0) -#define x86_fcos(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xff; } while (0) -#define x86_fabs(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xe1; } while (0) -#define x86_ftst(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xe4; } while (0) -#define x86_fxam(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xe5; } while (0) -#define x86_fpatan(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xf3; } while (0) -#define x86_fprem(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xf8; } while (0) -#define x86_fprem1(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xf5; } while (0) -#define x86_frndint(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xfc; } while (0) -#define x86_fsqrt(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xfa; } while (0) -#define x86_fptan(inst) do { x86_codegen_pre(&(inst), 2); *(inst)++ = (unsigned char)0xd9; *(inst)++ = (unsigned char)0xf2; } while (0) - -#define x86_padding(inst,size) \ - do { \ - switch ((size)) { \ - case 1: x86_nop ((inst)); break; \ - case 2: *(inst)++ = 0x8b; \ - *(inst)++ = 0xc0; break; \ - case 3: *(inst)++ = 0x8d; *(inst)++ = 0x6d; \ - *(inst)++ = 0x00; break; \ - case 4: *(inst)++ = 0x8d; *(inst)++ = 0x64; \ - *(inst)++ = 0x24; *(inst)++ = 0x00; \ - break; \ - case 5: *(inst)++ = 0x8d; *(inst)++ = 0x64; \ - *(inst)++ = 0x24; *(inst)++ = 0x00; \ - x86_nop ((inst)); break; \ - case 6: *(inst)++ = 0x8d; *(inst)++ = 0xad; \ - *(inst)++ = 0x00; *(inst)++ = 0x00; \ - *(inst)++ = 0x00; *(inst)++ = 0x00; \ - break; \ - case 7: *(inst)++ = 0x8d; *(inst)++ = 0xa4; \ - *(inst)++ = 0x24; *(inst)++ = 0x00; \ - *(inst)++ = 0x00; *(inst)++ = 0x00; \ - *(inst)++ = 0x00; break; \ - default: assert (0); \ - } \ - } while (0) - -#ifdef __native_client_codegen__ - -#define kx86NaClLengthOfCallReg 5 -#define kx86NaClLengthOfCallImm 5 -#define kx86NaClLengthOfCallMembase (kx86NaClLengthOfCallReg + 6) - -#endif /* __native_client_codegen__ */ - -#define x86_prolog(inst,frame_size,reg_mask) \ - do { \ - unsigned i, m = 1; \ - x86_enter ((inst), (frame_size)); \ - for (i = 0; i < X86_NREG; ++i, m <<= 1) { \ - if ((reg_mask) & m) \ - x86_push_reg ((inst), i); \ - } \ - } while (0) - -#define x86_epilog(inst,reg_mask) \ - do { \ - unsigned i, m = 1 << X86_EDI; \ - for (i = X86_EDI; m != 0; i--, m=m>>1) { \ - if ((reg_mask) & m) \ - x86_pop_reg ((inst), i); \ - } \ - x86_leave ((inst)); \ - x86_ret ((inst)); \ - } while (0) - - -typedef enum { - X86_SSE_SQRT = 0x51, - X86_SSE_RSQRT = 0x52, - X86_SSE_RCP = 0x53, - X86_SSE_ADD = 0x58, - X86_SSE_DIV = 0x5E, - X86_SSE_MUL = 0x59, - X86_SSE_SUB = 0x5C, - X86_SSE_MIN = 0x5D, - X86_SSE_MAX = 0x5F, - X86_SSE_COMP = 0xC2, - X86_SSE_AND = 0x54, - X86_SSE_ANDN = 0x55, - X86_SSE_OR = 0x56, - X86_SSE_XOR = 0x57, - X86_SSE_UNPCKL = 0x14, - X86_SSE_UNPCKH = 0x15, - - X86_SSE_ADDSUB = 0xD0, - X86_SSE_HADD = 0x7C, - X86_SSE_HSUB = 0x7D, - X86_SSE_MOVSHDUP = 0x16, - X86_SSE_MOVSLDUP = 0x12, - X86_SSE_MOVDDUP = 0x12, - - X86_SSE_PAND = 0xDB, - X86_SSE_POR = 0xEB, - X86_SSE_PXOR = 0xEF, - - X86_SSE_PADDB = 0xFC, - X86_SSE_PADDW = 0xFD, - X86_SSE_PADDD = 0xFE, - X86_SSE_PADDQ = 0xD4, - - X86_SSE_PSUBB = 0xF8, - X86_SSE_PSUBW = 0xF9, - X86_SSE_PSUBD = 0xFA, - X86_SSE_PSUBQ = 0xFB, - - X86_SSE_PMAXSB = 0x3C, /*sse41*/ - X86_SSE_PMAXSW = 0xEE, - X86_SSE_PMAXSD = 0x3D, /*sse41*/ - - X86_SSE_PMAXUB = 0xDE, - X86_SSE_PMAXUW = 0x3E, /*sse41*/ - X86_SSE_PMAXUD = 0x3F, /*sse41*/ - - X86_SSE_PMINSB = 0x38, /*sse41*/ - X86_SSE_PMINSW = 0xEA, - X86_SSE_PMINSD = 0x39,/*sse41*/ - - X86_SSE_PMINUB = 0xDA, - X86_SSE_PMINUW = 0x3A, /*sse41*/ - X86_SSE_PMINUD = 0x3B, /*sse41*/ - - X86_SSE_PAVGB = 0xE0, - X86_SSE_PAVGW = 0xE3, - - X86_SSE_PCMPEQB = 0x74, - X86_SSE_PCMPEQW = 0x75, - X86_SSE_PCMPEQD = 0x76, - X86_SSE_PCMPEQQ = 0x29, /*sse41*/ - - X86_SSE_PCMPGTB = 0x64, - X86_SSE_PCMPGTW = 0x65, - X86_SSE_PCMPGTD = 0x66, - X86_SSE_PCMPGTQ = 0x37, /*sse42*/ - - X86_SSE_PSADBW = 0xf6, - - X86_SSE_PSHUFD = 0x70, - - X86_SSE_PUNPCKLBW = 0x60, - X86_SSE_PUNPCKLWD = 0x61, - X86_SSE_PUNPCKLDQ = 0x62, - X86_SSE_PUNPCKLQDQ = 0x6C, - - X86_SSE_PUNPCKHBW = 0x68, - X86_SSE_PUNPCKHWD = 0x69, - X86_SSE_PUNPCKHDQ = 0x6A, - X86_SSE_PUNPCKHQDQ = 0x6D, - - X86_SSE_PACKSSWB = 0x63, - X86_SSE_PACKSSDW = 0x6B, - - X86_SSE_PACKUSWB = 0x67, - X86_SSE_PACKUSDW = 0x2B,/*sse41*/ - - X86_SSE_PADDUSB = 0xDC, - X86_SSE_PADDUSW = 0xDD, - X86_SSE_PSUBUSB = 0xD8, - X86_SSE_PSUBUSW = 0xD9, - - X86_SSE_PADDSB = 0xEC, - X86_SSE_PADDSW = 0xED, - X86_SSE_PSUBSB = 0xE8, - X86_SSE_PSUBSW = 0xE9, - - X86_SSE_PMULLW = 0xD5, - X86_SSE_PMULLD = 0x40,/*sse41*/ - X86_SSE_PMULHUW = 0xE4, - X86_SSE_PMULHW = 0xE5, - X86_SSE_PMULUDQ = 0xF4, - - X86_SSE_PMOVMSKB = 0xD7, - - X86_SSE_PSHIFTW = 0x71, - X86_SSE_PSHIFTD = 0x72, - X86_SSE_PSHIFTQ = 0x73, - X86_SSE_SHR = 2, - X86_SSE_SAR = 4, - X86_SSE_SHL = 6, - - X86_SSE_PSRLW_REG = 0xD1, - X86_SSE_PSRAW_REG = 0xE1, - X86_SSE_PSLLW_REG = 0xF1, - - X86_SSE_PSRLD_REG = 0xD2, - X86_SSE_PSRAD_REG = 0xE2, - X86_SSE_PSLLD_REG = 0xF2, - - X86_SSE_PSRLQ_REG = 0xD3, - X86_SSE_PSLLQ_REG = 0xF3, - - X86_SSE_PREFETCH = 0x18, - X86_SSE_MOVNTPS = 0x2B, - X86_SSE_MOVHPD_REG_MEMBASE = 0x16, - X86_SSE_MOVHPD_MEMBASE_REG = 0x17, - - X86_SSE_MOVSD_REG_MEMBASE = 0x10, - X86_SSE_MOVSD_MEMBASE_REG = 0x11, - - X86_SSE_PINSRB = 0x20,/*sse41*/ - X86_SSE_PINSRW = 0xC4, - X86_SSE_PINSRD = 0x22,/*sse41*/ - - X86_SSE_PEXTRB = 0x14,/*sse41*/ - X86_SSE_PEXTRW = 0xC5, - X86_SSE_PEXTRD = 0x16,/*sse41*/ - - X86_SSE_SHUFP = 0xC6, - - X86_SSE_CVTDQ2PD = 0xE6, - X86_SSE_CVTDQ2PS = 0x5B, - X86_SSE_CVTPD2DQ = 0xE6, - X86_SSE_CVTPD2PS = 0x5A, - X86_SSE_CVTPS2DQ = 0x5B, - X86_SSE_CVTPS2PD = 0x5A, - X86_SSE_CVTTPD2DQ = 0xE6, - X86_SSE_CVTTPS2DQ = 0x5B, -} X86_SSE_Opcode; - - -/* minimal SSE* support */ -#define x86_movsd_reg_membase(inst,dreg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 3 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xf2; \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x10; \ - x86_membase_emit ((inst), (dreg), (basereg), (disp)); \ - } while (0) - -#define x86_cvttsd2si(inst,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0xf2; \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x2c; \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#define x86_sse_alu_reg_reg(inst,opc,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0F; \ - *(inst)++ = (unsigned char)(opc); \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#define x86_sse_alu_reg_membase(inst,opc,sreg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)(opc); \ - x86_membase_emit ((inst), (sreg), (basereg), (disp)); \ - } while (0) - -#define x86_sse_alu_membase_reg(inst,opc,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0F; \ - *(inst)++ = (unsigned char)(opc); \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_sse_alu_reg_reg_imm8(inst,opc,dreg,reg, imm8) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0x0F; \ - *(inst)++ = (unsigned char)(opc); \ - x86_reg_emit ((inst), (dreg), (reg)); \ - *(inst)++ = (unsigned char)(imm8); \ - } while (0) - -#define x86_sse_alu_pd_reg_reg_imm8(inst,opc,dreg,reg, imm8) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0x66; \ - x86_sse_alu_reg_reg_imm8 ((inst), (opc), (dreg), (reg), (imm8)); \ - } while (0) - -#define x86_sse_alu_pd_reg_reg(inst,opc,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0x66; \ - x86_sse_alu_reg_reg ((inst), (opc), (dreg), (reg)); \ - } while (0) - -#define x86_sse_alu_pd_membase_reg(inst,opc,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 3 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x66; \ - x86_sse_alu_membase_reg ((inst), (opc), (basereg), (disp), (reg)); \ - } while (0) - -#define x86_sse_alu_pd_reg_membase(inst,opc,dreg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 3 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x66; \ - x86_sse_alu_reg_membase ((inst), (opc), (dreg),(basereg), (disp)); \ - } while (0) - -#define x86_sse_alu_pd_reg_reg_imm(inst,opc,dreg,reg,imm) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - x86_sse_alu_pd_reg_reg ((inst), (opc), (dreg), (reg)); \ - *(inst)++ = (unsigned char)(imm); \ - } while (0) - -#define x86_sse_alu_pd_reg_membase_imm(inst,opc,dreg,basereg,disp,imm) \ - do { \ - x86_codegen_pre(&(inst), 4 + kMaxMembaseEmitPadding); \ - x86_sse_alu_pd_reg_membase ((inst), (opc), (dreg),(basereg), (disp)); \ - *(inst)++ = (unsigned char)(imm); \ - } while (0) - - -#define x86_sse_alu_ps_reg_reg(inst,opc,dreg,reg) \ - do { \ - x86_sse_alu_reg_reg ((inst), (opc), (dreg), (reg)); \ - } while (0) - -#define x86_sse_alu_ps_reg_reg_imm(inst,opc,dreg,reg, imm) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - x86_sse_alu_reg_reg ((inst), (opc), (dreg), (reg)); \ - *(inst)++ = (unsigned char)imm; \ - } while (0) - - -#define x86_sse_alu_sd_reg_reg(inst,opc,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0xF2; \ - x86_sse_alu_reg_reg ((inst), (opc), (dreg), (reg)); \ - } while (0) - -#define x86_sse_alu_sd_membase_reg(inst,opc,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 3 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xF2; \ - x86_sse_alu_membase_reg ((inst), (opc), (basereg), (disp), (reg)); \ - } while (0) - - -#define x86_sse_alu_ss_reg_reg(inst,opc,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0xF3; \ - x86_sse_alu_reg_reg ((inst), (opc), (dreg), (reg)); \ - } while (0) - -#define x86_sse_alu_ss_membase_reg(inst,opc,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 3 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0xF3; \ - x86_sse_alu_membase_reg ((inst), (opc), (basereg), (disp), (reg)); \ - } while (0) - - - -#define x86_sse_alu_sse41_reg_reg(inst,opc,dreg,reg) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)0x66; \ - *(inst)++ = (unsigned char)0x0F; \ - *(inst)++ = (unsigned char)0x38; \ - *(inst)++ = (unsigned char)(opc); \ - x86_reg_emit ((inst), (dreg), (reg)); \ - } while (0) - -#define x86_movups_reg_membase(inst,sreg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x10; \ - x86_membase_emit ((inst), (sreg), (basereg), (disp)); \ - } while (0) - -#define x86_movups_membase_reg(inst,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x11; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_movaps_reg_membase(inst,sreg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x28; \ - x86_membase_emit ((inst), (sreg), (basereg), (disp)); \ - } while (0) - -#define x86_movaps_membase_reg(inst,basereg,disp,reg) \ - do { \ - x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x29; \ - x86_membase_emit ((inst), (reg), (basereg), (disp)); \ - } while (0) - -#define x86_movaps_reg_reg(inst,dreg,sreg) \ - do { \ - x86_codegen_pre(&(inst), 3); \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x28; \ - x86_reg_emit ((inst), (dreg), (sreg)); \ - } while (0) - - -#define x86_movd_reg_xreg(inst,dreg,sreg) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0x66; \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x7e; \ - x86_reg_emit ((inst), (sreg), (dreg)); \ - } while (0) - -#define x86_movd_xreg_reg(inst,dreg,sreg) \ - do { \ - x86_codegen_pre(&(inst), 4); \ - *(inst)++ = (unsigned char)0x66; \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x6e; \ - x86_reg_emit ((inst), (dreg), (sreg)); \ - } while (0) - -#define x86_movd_xreg_membase(inst,sreg,basereg,disp) \ - do { \ - x86_codegen_pre(&(inst), 3 + kMaxMembaseEmitPadding); \ - *(inst)++ = (unsigned char)0x66; \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x6e; \ - x86_membase_emit ((inst), (sreg), (basereg), (disp)); \ - } while (0) - -#define x86_pshufw_reg_reg(inst,dreg,sreg,mask,high_words) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - *(inst)++ = (unsigned char)(high_words) ? 0xF3 : 0xF2; \ - *(inst)++ = (unsigned char)0x0f; \ - *(inst)++ = (unsigned char)0x70; \ - x86_reg_emit ((inst), (dreg), (sreg)); \ - *(inst)++ = (unsigned char)mask; \ - } while (0) - -#define x86_sse_shift_reg_imm(inst,opc,mode, dreg,imm) \ - do { \ - x86_codegen_pre(&(inst), 5); \ - x86_sse_alu_pd_reg_reg (inst, opc, mode, dreg); \ - x86_imm_emit8 ((inst), (imm)); \ - } while (0) - -#define x86_sse_shift_reg_reg(inst,opc,dreg,sreg) \ - do { \ - x86_sse_alu_pd_reg_reg (inst, opc, dreg, sreg); \ - } while (0) - - - -#endif // X86_H - diff --git a/FFTS/Sources/FFTS/src/codegen.c b/FFTS/Sources/FFTS/src/codegen.c deleted file mode 100644 index 4c641c2..0000000 --- a/FFTS/Sources/FFTS/src/codegen.c +++ /dev/null @@ -1,612 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, Anthony M. Blake - Copyright (c) 2012, The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "codegen.h" -#include "macros.h" - -#ifdef __arm__ -typedef uint32_t insns_t; -#else -typedef uint8_t insns_t; -#endif - -#ifdef HAVE_NEON -#include "codegen_arm.h" -#include "neon.h" -#elif HAVE_VFP -#include "vfp.h" -#include "codegen_arm.h" -#else -#include "codegen_sse.h" -#endif - -#include -#include -#include -/* #include */ - -#ifdef HAVE_STDLIB_H -#include -#endif - -#ifdef HAVE_STRING_H -#include -#endif - -#ifdef HAVE_UNISTD_H -#include -#endif - -static int ffts_tree_count(int N, int leaf_N, int offset) -{ - int count; - - if (N <= leaf_N) { - return 0; - } - - count = ffts_tree_count(N/4, leaf_N, offset); - count += ffts_tree_count(N/8, leaf_N, offset + N/4); - count += ffts_tree_count(N/8, leaf_N, offset + N/4 + N/8); - count += ffts_tree_count(N/4, leaf_N, offset + N/2); - count += ffts_tree_count(N/4, leaf_N, offset + 3*N/4); - - return 1 + count; -} - -static void ffts_elaborate_tree(size_t **p, int N, int leaf_N, int offset) -{ - if (N <= leaf_N) { - return; - } - - ffts_elaborate_tree(p, N/4, leaf_N, offset); - ffts_elaborate_tree(p, N/8, leaf_N, offset + N/4); - ffts_elaborate_tree(p, N/8, leaf_N, offset + N/4 + N/8); - ffts_elaborate_tree(p, N/4, leaf_N, offset + N/2); - ffts_elaborate_tree(p, N/4, leaf_N, offset + 3*N/4); - - (*p)[0] = N; - (*p)[1] = 2 * offset; - - (*p) += 2; -} - -transform_func_t ffts_generate_func_code(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) -{ - uint32_t offsets[8] = {0, 4*N, 2*N, 6*N, N, 5*N, 7*N, 3*N}; - uint32_t offsets_o[8] = {0, 4*N, 2*N, 6*N, 7*N, 3*N, N, 5*N}; - - int32_t pAddr = 0; - int32_t pN = 0; - int32_t pLUT = 0; - - insns_t *fp; - insns_t *start; - insns_t *x_4_addr; - insns_t *x_8_addr; - uint32_t loop_count; - - int count; - - size_t *ps; - size_t *pps; - - count = ffts_tree_count(N, leaf_N, 0) + 1; - - ps = pps = malloc(2 * count * sizeof(*ps)); - if (!ps) { - return NULL; - } - - ffts_elaborate_tree(&pps, N, leaf_N, 0); - - pps[0] = 0; - pps[1] = 0; - - pps = ps; - -#ifdef HAVE_SSE - if (sign < 0) { - p->constants = (const void*) sse_constants; - } else { - p->constants = (const void*) sse_constants_inv; - } -#endif - - fp = (insns_t*) p->transform_base; - - /* generate base cases */ - x_4_addr = generate_size4_base_case(&fp, sign); - x_8_addr = generate_size8_base_case(&fp, sign); - -#ifdef __arm__ - start = generate_prologue(&fp, p); - -#ifdef HAVE_NEON - memcpy(fp, neon_ee, neon_oo - neon_ee); - if (sign < 0) { - fp[33] ^= 0x00200000; - fp[37] ^= 0x00200000; - fp[38] ^= 0x00200000; - fp[39] ^= 0x00200000; - fp[40] ^= 0x00200000; - fp[41] ^= 0x00200000; - fp[44] ^= 0x00200000; - fp[45] ^= 0x00200000; - fp[46] ^= 0x00200000; - fp[47] ^= 0x00200000; - fp[48] ^= 0x00200000; - fp[57] ^= 0x00200000; - } - - fp += (neon_oo - neon_ee) / 4; -#else - memcpy(fp, vfp_e, vfp_o - vfp_e); - - if (sign > 0) { - fp[64] ^= 0x00000040; - fp[65] ^= 0x00000040; - fp[68] ^= 0x00000040; - fp[75] ^= 0x00000040; - fp[76] ^= 0x00000040; - fp[79] ^= 0x00000040; - fp[80] ^= 0x00000040; - fp[83] ^= 0x00000040; - fp[84] ^= 0x00000040; - fp[87] ^= 0x00000040; - fp[91] ^= 0x00000040; - fp[93] ^= 0x00000040; - } - fp += (vfp_o - vfp_e) / 4; -#endif -#else - /* generate functions */ - start = generate_prologue(&fp, p); - - loop_count = 4 * p->i0; - generate_leaf_init(&fp, loop_count); - - if (ffts_ctzl(N) & 1) { - generate_leaf_ee(&fp, offsets, p->i1 ? 6 : 0); - - if (p->i1) { - loop_count += 4 * p->i1; - generate_leaf_oo(&fp, loop_count, offsets_o, 7); - } - - loop_count += 4; - generate_leaf_oe(&fp, offsets_o); - } else { - generate_leaf_ee(&fp, offsets, N >= 256 ? 2 : 8); - - loop_count += 4; - generate_leaf_eo(&fp, offsets); - - if (p->i1) { - loop_count += 4 * p->i1; - generate_leaf_oo(&fp, loop_count, offsets_o, N >= 256 ? 4 : 7); - } - } - - if (p->i1) { - uint32_t offsets_oe[8] = {7*N, 3*N, N, 5*N, 0, 4*N, 6*N, 2*N}; - - loop_count += 4 * p->i1; - - /* align loop/jump destination */ -#ifdef _M_X64 - x86_mov_reg_imm(fp, X86_EBX, loop_count); -#else - x86_mov_reg_imm(fp, X86_ECX, loop_count); - ffts_align_mem16(&fp, 9); -#endif - - generate_leaf_ee(&fp, offsets_oe, 0); - } - - generate_transform_init(&fp); - - /* generate subtransform calls */ - count = 2; - while (pps[0]) { - int32_t ws_is; - - if (!pN) { -#ifdef _M_X64 - x86_mov_reg_imm(fp, X86_EBX, pps[0]); -#else - x86_mov_reg_imm(fp, X86_ECX, pps[0] / 4); -#endif - } else { - int offset = (4 * pps[1]) - pAddr; - if (offset) { -#ifdef _M_X64 - x64_alu_reg_imm_size(fp, X86_ADD, X64_R8, offset, 8); -#else - x64_alu_reg_imm_size(fp, X86_ADD, X64_RDX, offset, 8); -#endif - } - - if (pps[0] > leaf_N && pps[0] - pN) { - int factor = ffts_ctzl(pps[0]) - ffts_ctzl(pN); - -#ifdef _M_X64 - if (factor > 0) { - x86_shift_reg_imm(fp, X86_SHL, X86_EBX, factor); - } else { - x86_shift_reg_imm(fp, X86_SHR, X86_EBX, -factor); - } -#else - if (factor > 0) { - x86_shift_reg_imm(fp, X86_SHL, X86_ECX, factor); - } else { - x86_shift_reg_imm(fp, X86_SHR, X86_ECX, -factor); - } -#endif - } - } - - ws_is = 8 * p->ws_is[ffts_ctzl(pps[0] / leaf_N) - 1]; - if (ws_is != pLUT) { - int offset = (int) (ws_is - pLUT); - -#ifdef _M_X64 - x64_alu_reg_imm_size(fp, X86_ADD, X64_R9, offset, 8); -#else - x64_alu_reg_imm_size(fp, X86_ADD, X64_R8, offset, 8); -#endif - } - - if (pps[0] == 2 * leaf_N) { - x64_call_code(fp, x_4_addr); - } else { - x64_call_code(fp, x_8_addr); - } - - pAddr = 4 * pps[1]; - if (pps[0] > leaf_N) { - pN = pps[0]; - } - - pLUT = ws_is;//LUT_offset(pps[0], leafN); - //fprintf(stderr, "LUT offset for %d is %d\n", pN, pLUT); - count += 4; - pps += 2; - } -#endif - -#ifdef __arm__ -#ifdef HAVE_NEON - if (ffts_ctzl(N) & 1) { - ADDI(&fp, 2, 7, 0); - ADDI(&fp, 7, 9, 0); - ADDI(&fp, 9, 2, 0); - - ADDI(&fp, 2, 8, 0); - ADDI(&fp, 8, 10, 0); - ADDI(&fp, 10, 2, 0); - - if(p->i1) { - MOVI(&fp, 11, p->i1); - memcpy(fp, neon_oo, neon_eo - neon_oo); - if(sign < 0) { - fp[12] ^= 0x00200000; - fp[13] ^= 0x00200000; - fp[14] ^= 0x00200000; - fp[15] ^= 0x00200000; - fp[27] ^= 0x00200000; - fp[29] ^= 0x00200000; - fp[30] ^= 0x00200000; - fp[31] ^= 0x00200000; - fp[46] ^= 0x00200000; - fp[47] ^= 0x00200000; - fp[48] ^= 0x00200000; - fp[57] ^= 0x00200000; - } - fp += (neon_eo - neon_oo) / 4; - } - - *fp = LDRI(11, 1, ((uint32_t)&p->oe_ws) - ((uint32_t)p)); - fp++; - - memcpy(fp, neon_oe, neon_end - neon_oe); - if(sign < 0) { - fp[19] ^= 0x00200000; - fp[20] ^= 0x00200000; - fp[22] ^= 0x00200000; - fp[23] ^= 0x00200000; - fp[37] ^= 0x00200000; - fp[38] ^= 0x00200000; - fp[40] ^= 0x00200000; - fp[41] ^= 0x00200000; - fp[64] ^= 0x00200000; - fp[65] ^= 0x00200000; - fp[66] ^= 0x00200000; - fp[67] ^= 0x00200000; - } - fp += (neon_end - neon_oe) / 4; - - } else { - - *fp = LDRI(11, 1, ((uint32_t)&p->eo_ws) - ((uint32_t)p)); - fp++; - - memcpy(fp, neon_eo, neon_oe - neon_eo); - if(sign < 0) { - fp[10] ^= 0x00200000; - fp[11] ^= 0x00200000; - fp[13] ^= 0x00200000; - fp[14] ^= 0x00200000; - fp[31] ^= 0x00200000; - fp[33] ^= 0x00200000; - fp[34] ^= 0x00200000; - fp[35] ^= 0x00200000; - fp[59] ^= 0x00200000; - fp[60] ^= 0x00200000; - fp[61] ^= 0x00200000; - fp[62] ^= 0x00200000; - } - fp += (neon_oe - neon_eo) / 4; - - ADDI(&fp, 2, 7, 0); - ADDI(&fp, 7, 9, 0); - ADDI(&fp, 9, 2, 0); - - ADDI(&fp, 2, 8, 0); - ADDI(&fp, 8, 10, 0); - ADDI(&fp, 10, 2, 0); - - if(p->i1) { - MOVI(&fp, 11, p->i1); - memcpy(fp, neon_oo, neon_eo - neon_oo); - if(sign < 0) { - fp[12] ^= 0x00200000; - fp[13] ^= 0x00200000; - fp[14] ^= 0x00200000; - fp[15] ^= 0x00200000; - fp[27] ^= 0x00200000; - fp[29] ^= 0x00200000; - fp[30] ^= 0x00200000; - fp[31] ^= 0x00200000; - fp[46] ^= 0x00200000; - fp[47] ^= 0x00200000; - fp[48] ^= 0x00200000; - fp[57] ^= 0x00200000; - } - fp += (neon_eo - neon_oo) / 4; - } - } - - if(p->i1) { - ADDI(&fp, 2, 3, 0); - ADDI(&fp, 3, 7, 0); - ADDI(&fp, 7, 2, 0); - - ADDI(&fp, 2, 4, 0); - ADDI(&fp, 4, 8, 0); - ADDI(&fp, 8, 2, 0); - - ADDI(&fp, 2, 5, 0); - ADDI(&fp, 5, 9, 0); - ADDI(&fp, 9, 2, 0); - - ADDI(&fp, 2, 6, 0); - ADDI(&fp, 6, 10, 0); - ADDI(&fp, 10, 2, 0); - - ADDI(&fp, 2, 9, 0); - ADDI(&fp, 9, 10, 0); - ADDI(&fp, 10, 2, 0); - - *fp = LDRI(2, 1, ((uint32_t)&p->ee_ws) - ((uint32_t)p)); - fp++; - MOVI(&fp, 11, p->i1); - memcpy(fp, neon_ee, neon_oo - neon_ee); - if(sign < 0) { - fp[33] ^= 0x00200000; - fp[37] ^= 0x00200000; - fp[38] ^= 0x00200000; - fp[39] ^= 0x00200000; - fp[40] ^= 0x00200000; - fp[41] ^= 0x00200000; - fp[44] ^= 0x00200000; - fp[45] ^= 0x00200000; - fp[46] ^= 0x00200000; - fp[47] ^= 0x00200000; - fp[48] ^= 0x00200000; - fp[57] ^= 0x00200000; - } - fp += (neon_oo - neon_ee) / 4; - } -#else - ADDI(&fp, 2, 7, 0); - ADDI(&fp, 7, 9, 0); - ADDI(&fp, 9, 2, 0); - - ADDI(&fp, 2, 8, 0); - ADDI(&fp, 8, 10, 0); - ADDI(&fp, 10, 2, 0); - - MOVI(&fp, 11, (p->i1>0) ? p->i1 : 1); - memcpy(fp, vfp_o, vfp_x4 - vfp_o); - if(sign > 0) { - fp[22] ^= 0x00000040; - fp[24] ^= 0x00000040; - fp[25] ^= 0x00000040; - fp[26] ^= 0x00000040; - fp[62] ^= 0x00000040; - fp[64] ^= 0x00000040; - fp[65] ^= 0x00000040; - fp[66] ^= 0x00000040; - } - fp += (vfp_x4 - vfp_o) / 4; - - ADDI(&fp, 2, 3, 0); - ADDI(&fp, 3, 7, 0); - ADDI(&fp, 7, 2, 0); - - ADDI(&fp, 2, 4, 0); - ADDI(&fp, 4, 8, 0); - ADDI(&fp, 8, 2, 0); - - ADDI(&fp, 2, 5, 0); - ADDI(&fp, 5, 9, 0); - ADDI(&fp, 9, 2, 0); - - ADDI(&fp, 2, 6, 0); - ADDI(&fp, 6, 10, 0); - ADDI(&fp, 10, 2, 0); - - ADDI(&fp, 2, 9, 0); - ADDI(&fp, 9, 10, 0); - ADDI(&fp, 10, 2, 0); - - *fp = LDRI(2, 1, ((uint32_t)&p->ee_ws) - ((uint32_t)p)); - fp++; - MOVI(&fp, 11, (p->i2>0) ? p->i2 : 1); - memcpy(fp, vfp_e, vfp_o - vfp_e); - if(sign > 0) { - fp[64] ^= 0x00000040; - fp[65] ^= 0x00000040; - fp[68] ^= 0x00000040; - fp[75] ^= 0x00000040; - fp[76] ^= 0x00000040; - fp[79] ^= 0x00000040; - fp[80] ^= 0x00000040; - fp[83] ^= 0x00000040; - fp[84] ^= 0x00000040; - fp[87] ^= 0x00000040; - fp[91] ^= 0x00000040; - fp[93] ^= 0x00000040; - } - fp += (vfp_o - vfp_e) / 4; - -#endif - *fp = LDRI(2, 1, ((uint32_t)&p->ws) - ((uint32_t)p)); - fp++; // load offsets into r12 - //ADDI(&fp, 2, 1, 0); - MOVI(&fp, 1, 0); - - // args: r0 - out - // r1 - N - // r2 - ws - // ADDI(&fp, 3, 1, 0); // put N into r3 for counter - - count = 2; - while(pps[0]) { - - // fprintf(stderr, "size %zu at %zu - diff %zu\n", pps[0], pps[1]*4, (pps[1]*4) - pAddr); - if(!pN) { - MOVI(&fp, 1, pps[0]); - } else { - if((pps[1]*4)-pAddr) ADDI(&fp, 0, 0, (pps[1] * 4)- pAddr); - if(pps[0] - pN) ADDI(&fp, 1, 1, pps[0] - pN); - } - - if (p->ws_is[ffts_ctzl(pps[0]/leaf_N)-1]*8 - pLUT) { - ADDI(&fp, 2, 2, p->ws_is[ffts_ctzl(pps[0]/leaf_N)-1]*8 - pLUT); - } - - if(pps[0] == 2 * leaf_N) { - *fp = BL(fp+2, x_4_addr); - fp++; - } else if(!pps[2]) { - //uint32_t *x_8_t_addr = fp; -#ifdef HAVE_NEON - memcpy(fp, neon_x8_t, neon_ee - neon_x8_t); - if(sign < 0) { - fp[31] ^= 0x00200000; - fp[32] ^= 0x00200000; - fp[33] ^= 0x00200000; - fp[34] ^= 0x00200000; - fp[65] ^= 0x00200000; - fp[66] ^= 0x00200000; - fp[70] ^= 0x00200000; - fp[74] ^= 0x00200000; - fp[97] ^= 0x00200000; - fp[98] ^= 0x00200000; - fp[102] ^= 0x00200000; - fp[104] ^= 0x00200000; - } - fp += (neon_ee - neon_x8_t) / 4; - //*fp++ = BL(fp+2, x_8_t_addr); - -#else - *fp = BL(fp+2, x_8_addr); - fp++; -#endif - } else { - *fp = BL(fp+2, x_8_addr); - fp++; - } - - pAddr = pps[1] * 4; - pN = pps[0]; - pLUT = p->ws_is[ffts_ctzl(pps[0]/leaf_N)-1]*8;//LUT_offset(pps[0], leafN); - // fprintf(stderr, "LUT offset for %d is %d\n", pN, pLUT); - count += 4; - pps += 2; - } - - *fp++ = 0xecbd8b10; - *fp++ = POP_LR(); - count++; -#else - generate_epilogue(&fp); -#endif - - // *fp++ = B(14); count++; - - //for(int i=0;i<(neon_x8 - neon_x4)/4;i++) - // fprintf(stderr, "%08x\n", x_4_addr[i]); - //fprintf(stderr, "\n"); - //for(int i=0;i - Copyright (c) 2012, The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_CODEGEN_H -#define FFTS_CODEGEN_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts.h" -#include "ffts_internal.h" - -transform_func_t ffts_generate_func_code(ffts_plan_t *p, size_t N, size_t leaf_N, int sign); - -#endif /* FFTS_CODEGEN_H */ diff --git a/FFTS/Sources/FFTS/src/codegen_arm.h b/FFTS/Sources/FFTS/src/codegen_arm.h deleted file mode 100644 index 3d146da..0000000 --- a/FFTS/Sources/FFTS/src/codegen_arm.h +++ /dev/null @@ -1,228 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, Anthony M. Blake - Copyright (c) 2012, The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_CODEGEN_ARM_H -#define FFTS_CODEGEN_ARM_H - -#include "neon.h" - -#ifdef HAVE_STRING_H -#include -#endif - -uint32_t BL(void *pos, void *target) { - return 0xeb000000 | (((target - pos) / 4) & 0xffffff); -} - -uint32_t B(uint8_t r) { - return 0xe12fff10 | r; -} - -uint32_t MOV(uint8_t dst, uint8_t src) { - return 0xe1a00000 | (src & 0xf) | ((dst & 0xf) << 12); -} - -void ADDI(uint32_t **p, uint8_t dst, uint8_t src, int32_t imm) { - int32_t oimm = imm; - if(imm < 0) { - imm = -imm; - uint32_t shamt = (__builtin_ctzl(imm)>23)?23:__builtin_ctzl(imm); - if(shamt & 1) shamt -= 1; - imm >>= shamt; - shamt = (32 - shamt)/2; - - // if(imm > 255) fprintf(stderr, "imm>255: %d\n", oimm); - *(*p)++ = 0xe2400000 | ((src & 0xf) << 16) | ((dst & 0xf) << 12) | ((shamt & 0xf) << 8) | (imm & 0xff); - - if(imm > 255) ADDI(p, dst, src, (oimm + ((imm & 0xff) << (32-shamt*2)))); - - }else{ - uint32_t shamt = (__builtin_ctzl(imm)>23)?23:__builtin_ctzl(imm); - if(shamt & 1) shamt -= 1; - imm >>= shamt; - shamt = (32 - shamt)/2; - -// if(imm > 255) fprintf(stderr, "imm>255: %d\n", oimm); - - *(*p)++ = 0xe2800000 | ((src & 0xf) << 16) | ((dst & 0xf) << 12) | ((shamt & 0xf) << 8) | (imm & 0xff); - - if(imm > 255) ADDI(p, dst, src, (oimm - ((imm & 0xff) << (32-shamt*2)))); - } -} - -uint32_t LDRI(uint8_t dst, uint8_t base, uint32_t offset) { - return 0xe5900000 | ((dst & 0xf) << 12) - | ((base & 0xf) << 16) | (offset & 0xfff) ; -} - -void MOVI(uint32_t **p, uint8_t dst, uint32_t imm) { - uint32_t oimm = imm; - - uint32_t shamt = (__builtin_ctzl(imm)>23)?23:__builtin_ctzl(imm); - if(shamt & 1) shamt -= 1; - imm >>= shamt; - shamt = (32 - shamt)/2; - *(*p)++ = 0xe3a00000 | ((dst & 0xf) << 12) | ((shamt & 0xf) << 8) | (imm & 0xff) ; - if(imm > 255) ADDI(p, dst, dst, (oimm - ((imm & 0xff) << (32-shamt*2)))); -} - -uint32_t PUSH_LR() { return 0xe92d4ff0; } //0xe92d4000; } -uint32_t POP_LR() { return 0xe8bd8ff0; } //0xe8bd8000; } - -static FFTS_INLINE insns_t* generate_size4_base_case(insns_t **fp, int sign) -{ - insns_t *x_4_addr; - size_t len; - - x_4_addr = *fp; - -#ifdef HAVE_NEON - len = (char*) neon_x8 - (char*) neon_x4; - memcpy(x_4_addr, neon_x4, len); - - if (sign < 0) { - x_4_addr[26] ^= 0x00200000; - x_4_addr[28] ^= 0x00200000; - x_4_addr[31] ^= 0x00200000; - x_4_addr[32] ^= 0x00200000; - } -#else - len = (char*) vfp_x8 - (char*) vfp_x4; - memcpy(x_4_addr, vfp_x4, len); - - if (sign > 0) { - x_4_addr[36] ^= 0x00000040; - x_4_addr[38] ^= 0x00000040; - x_4_addr[43] ^= 0x00000040; - x_4_addr[44] ^= 0x00000040; - } -#endif - - *fp += len / 4; - return x_4_addr; -} - -static FFTS_INLINE insns_t* generate_size8_base_case(insns_t **fp, int sign) -{ - insns_t *x_8_addr; - ptrdiff_t len; - - x_8_addr = *fp; - -#ifdef HAVE_NEON - len = (char*) neon_x8_t - (char*) neon_x8; - memcpy(x_8_addr, neon_x8, len); - - /* - * Changes adds to subtracts and vice versa to allow the computation - * of both the IFFT and FFT - */ - if (sign < 0) { - x_8_addr[31] ^= 0x00200000; - x_8_addr[32] ^= 0x00200000; - x_8_addr[33] ^= 0x00200000; - x_8_addr[34] ^= 0x00200000; - x_8_addr[65] ^= 0x00200000; - x_8_addr[66] ^= 0x00200000; - x_8_addr[70] ^= 0x00200000; - x_8_addr[74] ^= 0x00200000; - x_8_addr[97] ^= 0x00200000; - x_8_addr[98] ^= 0x00200000; - x_8_addr[102] ^= 0x00200000; - x_8_addr[104] ^= 0x00200000; - } - - *fp += len / 4; - - //uint32_t *x_8_t_addr = fp; - //memcpy(fp, neon_x8_t, neon_end - neon_x8_t); - //fp += (neon_end - neon_x8_t) / 4; -#else - len = (char*) vfp_end - (char*) vfp_x8; - memcpy(x_8_addr, vfp_x8, len); - - if (sign > 0) { - x_8_addr[65] ^= 0x00000040; - x_8_addr[66] ^= 0x00000040; - x_8_addr[68] ^= 0x00000040; - x_8_addr[70] ^= 0x00000040; - x_8_addr[103] ^= 0x00000040; - x_8_addr[104] ^= 0x00000040; - x_8_addr[105] ^= 0x00000040; - x_8_addr[108] ^= 0x00000040; - x_8_addr[113] ^= 0x00000040; - x_8_addr[114] ^= 0x00000040; - x_8_addr[117] ^= 0x00000040; - x_8_addr[118] ^= 0x00000040; - } - - *fp += len / 4; -#endif - - return x_8_addr; -} - -static FFTS_INLINE insns_t* generate_prologue(insns_t **fp, ffts_plan_t *p) -{ - insns_t *start = *fp; - - *(*fp)++ = PUSH_LR(); - *(*fp)++ = 0xed2d8b10; - - ADDI(fp, 3, 1, 0); - ADDI(fp, 7, 1, p->N); - ADDI(fp, 5, 1, 2 * p->N); - ADDI(fp, 10, 7, 2 * p->N); - ADDI(fp, 4, 5, 2 * p->N); - ADDI(fp, 8, 10, 2 * p->N); - ADDI(fp, 6, 4, 2 * p->N); - ADDI(fp, 9, 8, 2 * p->N); - - // load offsets into r12 - *(*fp)++ = LDRI(12, 0, ((uint32_t) &p->offsets) - ((uint32_t) p)); - // *(*fp)++ = LDRI(1, 0, 4); // load ws into r1 - ADDI(fp, 1, 0, 0); - - ADDI(fp, 0, 2, 0), // mov out into r0 - *(*fp)++ = LDRI(2, 1, ((uint32_t) &p->ee_ws) - ((uint32_t) p)); - -#ifdef HAVE_NEON - MOVI(fp, 11, p->i0); -#else - MOVI(fp, 11, p->i0); -#endif - - return start; -} - -#endif /* FFTS_CODEGEN_ARM_H */ \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/codegen_sse.h b/FFTS/Sources/FFTS/src/codegen_sse.h deleted file mode 100644 index 2ca540e..0000000 --- a/FFTS/Sources/FFTS/src/codegen_sse.h +++ /dev/null @@ -1,1680 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_CODEGEN_SSE_H -#define FFTS_CODEGEN_SSE_H - -#define TARGET_AMD64 -#include "arch/x64/x64-codegen.h" - -#include - -static const FFTS_ALIGN(16) unsigned int sse_constants[20] = { - /* 0.0, -0.0, 0.0, -0.0 */ - 0x00000000, 0x80000000, 0x00000000, 0x80000000, - /* 0.707, 0.707, 0.707, 0.707 */ - 0x3f3504f3, 0x3f3504f3, 0x3f3504f3, 0x3f3504f3, - /* -0.707, 0.707, -0.707, 0.707 */ - 0xbf3504f3, 0x3f3504f3, 0xbf3504f3, 0x3f3504f3, - /* 1.0, 1.0, 0.707, 0.707 */ - 0x3f800000, 0x3f800000, 0x3f3504f3, 0x3f3504f3, - /* 0.0, 0.0, -.707, 0.707 */ - 0x00000000, 0x00000000, 0xbf3504f3, 0x3f3504f3 -}; - -static const FFTS_ALIGN(16) unsigned int sse_constants_inv[20] = { - /* -0.0, 0.0, -0.0, 0.0 */ - 0x80000000, 0x00000000, 0x80000000, 0x00000000, - /* 0.707, 0.707, 0.707, 0.707 */ - 0x3f3504f3, 0x3f3504f3, 0x3f3504f3, 0x3f3504f3, - /* 0.707, -0.707, 0.707, -0.707 */ - 0x3f3504f3, 0xbf3504f3, 0x3f3504f3, 0xbf3504f3, - /* 1.0, 1.0, 0.707, 0.707 */ - 0x3f800000, 0x3f800000, 0x3f3504f3, 0x3f3504f3, - /* 0.0, 0.0, 0.707, -0.707 */ - 0x00000000, 0x00000000, 0x3f3504f3, 0xbf3504f3 -}; - -#define P(x) (*(*p)++ = x) - -static FFTS_INLINE void -ffts_insert_nops(uint8_t **p, uint32_t count) -{ - if (count >= 9) { - P(0x66); - P(0x0F); - P(0x1F); - P(0x84); - P(0x00); - P(0x00); - P(0x00); - P(0x00); - P(0x00); - - if (count > 9) { - ffts_insert_nops(p, count - 9); - } - } else { - switch(count) { - case 0: - break; - case 2: - P(0x66); - /* fall through */ - case 1: - P(0x90); - break; - case 3: - P(0x0F); - P(0x1F); - P(0x00); - break; - case 4: - P(0x0F); - P(0x1F); - P(0x40); - P(0x00); - break; - case 5: - P(0x0F); - P(0x1F); - P(0x44); - P(0x00); - P(0x00); - break; - case 6: - P(0x66); - P(0x0F); - P(0x1F); - P(0x44); - P(0x00); - P(0x00); - break; - case 7: - P(0x0F); - P(0x1F); - P(0x80); - P(0x00); - P(0x00); - P(0x00); - P(0x00); - break; - case 8: - default: - P(0x0F); - P(0x1F); - P(0x84); - P(0x00); - P(0x00); - P(0x00); - P(0x00); - P(0x00); - break; - } - } -} - -static FFTS_INLINE void -ffts_align_mem16(uint8_t **p, uint32_t offset) -{ - int r = (16 - (offset & 0xf)) - (int) ((uintptr_t)(*p) & 0xf); - r = (16 + r) & 0xf; - ffts_insert_nops(p, r); -} - -static FFTS_INLINE void -generate_epilogue(insns_t **fp) -{ -#ifdef _M_X64 - /* restore nonvolatile registers */ - x64_mov_reg_membase(*fp, X64_RBX, X64_RSP, -64, 8); - x64_mov_reg_membase(*fp, X64_RSI, X64_RSP, -56, 8); - - x64_sse_movaps_reg_membase(*fp, X64_XMM6, X64_RSP, -48); - x64_sse_movaps_reg_membase(*fp, X64_XMM7, X64_RSP, -32); - x64_sse_movaps_reg_membase(*fp, X64_XMM8, X64_RSP, -16); - x64_sse_movaps_reg_membase(*fp, X64_XMM9, X64_RSP, 0); - x64_sse_movaps_reg_membase(*fp, X64_XMM10, X64_RSP, 16); - x64_sse_movaps_reg_membase(*fp, X64_XMM11, X64_RSP, 32); - x64_sse_movaps_reg_membase(*fp, X64_XMM12, X64_RSP, 48); - x64_sse_movaps_reg_membase(*fp, X64_XMM13, X64_RSP, 64); - - /* restore the last 2 registers from the shadow space */ - x64_sse_movaps_reg_membase(*fp, X64_XMM14, X64_RSP, 96); - x64_sse_movaps_reg_membase(*fp, X64_XMM15, X64_RSP, 112); - - /* restore stack */ - x64_alu_reg_imm_size(*fp, X86_ADD, X64_RSP, 88, 8); -#else - x64_pop_reg(*fp, X64_R15); - x64_pop_reg(*fp, X64_R14); - x64_pop_reg(*fp, X64_R13); - x64_pop_reg(*fp, X64_R12); - x64_pop_reg(*fp, X64_R11); - x64_pop_reg(*fp, X64_R10); - x64_pop_reg(*fp, X64_RBX); - x64_pop_reg(*fp, X64_RBP); -#endif - - x64_ret(*fp); -} - -static FFTS_INLINE insns_t* -generate_prologue(insns_t **fp, ffts_plan_t *p) -{ - insns_t *start; - - /* unreferenced parameter */ - (void) p; - - /* align call destination */ - ffts_align_mem16(fp, 0); - start = *fp; - - /* save nonvolatile registers */ -#ifdef _M_X64 - /* reserve space to save XMM6-XMM15 registers */ - x64_alu_reg_imm_size(*fp, X86_SUB, X64_RSP, 88, 8); - - x64_mov_membase_reg(*fp, X64_RSP, -64, X64_RBX, 8); - x64_mov_membase_reg(*fp, X64_RSP, -56, X64_RSI, 8); - - x64_sse_movaps_membase_reg(*fp, X64_RSP, -48, X64_XMM6); - x64_sse_movaps_membase_reg(*fp, X64_RSP, -32, X64_XMM7); - x64_sse_movaps_membase_reg(*fp, X64_RSP, -16, X64_XMM8); - x64_sse_movaps_membase_reg(*fp, X64_RSP, 0, X64_XMM9); - x64_sse_movaps_membase_reg(*fp, X64_RSP, 16, X64_XMM10); - x64_sse_movaps_membase_reg(*fp, X64_RSP, 32, X64_XMM11); - x64_sse_movaps_membase_reg(*fp, X64_RSP, 48, X64_XMM12); - x64_sse_movaps_membase_reg(*fp, X64_RSP, 64, X64_XMM13); - - /* use the shadow space to save last 2 registers */ - x64_sse_movaps_membase_reg(*fp, X64_RSP, 96, X64_XMM14); - x64_sse_movaps_membase_reg(*fp, X64_RSP, 112, X64_XMM15); -#else - x64_push_reg(*fp, X64_RBP); - x64_push_reg(*fp, X64_RBX); - x64_push_reg(*fp, X64_R10); - x64_push_reg(*fp, X64_R11); - x64_push_reg(*fp, X64_R12); - x64_push_reg(*fp, X64_R13); - x64_push_reg(*fp, X64_R14); - x64_push_reg(*fp, X64_R15); -#endif - - return start; -} - -static FFTS_INLINE void -generate_transform_init(insns_t **fp) -{ -#ifdef _M_X64 - /* generate function */ - x64_sse_movaps_reg_membase(*fp, X64_XMM3, X64_RSI, 0); - - /* set "pointer" to twiddle factors */ - x64_mov_reg_membase(*fp, X64_R9, X64_RCX, 0x20, 8); -#else - /* generate function */ - x64_sse_movaps_reg_membase(*fp, X64_XMM3, X64_R9, 0); - - /* set "pointer" to twiddle factors */ - x64_mov_reg_membase(*fp, X64_R8, X64_RDI, 0x20, 8); -#endif -} - -static FFTS_INLINE insns_t* -generate_size4_base_case(insns_t **fp, int sign) -{ - insns_t *ins; - insns_t *x4_addr; - - /* unreferenced parameter */ - (void) sign; - - /* to avoid deferring */ - ins = *fp; - - /* align call destination */ - ffts_align_mem16(&ins, 0); - x4_addr = ins; - -#ifdef _M_X64 - /* generate function */ - x64_sse_movaps_reg_membase(ins, X64_XMM0, X64_R8, 64); - x64_sse_movaps_reg_membase(ins, X64_XMM1, X64_R8, 96); - x64_sse_movaps_reg_membase(ins, X64_XMM7, X64_R8, 0); - x64_sse_movaps_reg_membase(ins, X64_XMM4, X64_R9, 0); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM4); - x64_sse_movaps_reg_membase(ins, X64_XMM2, X64_R9, 16); - x64_sse_mulps_reg_reg(ins, X64_XMM6, X64_XMM0); - x64_sse_mulps_reg_reg(ins, X64_XMM4, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM0, X64_XMM0, 0xB1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM1, X64_XMM1, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM0, X64_XMM2); - x64_sse_mulps_reg_reg(ins, X64_XMM2, X64_XMM1); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM0); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM2); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM4); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM4); - x64_sse_movaps_reg_membase(ins, X64_XMM8, X64_R8, 32); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM6, X64_XMM3); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM6, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_movaps_reg_membase(ins, X64_XMM12, X64_R8, 112); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM5); - x64_sse_addps_reg_reg(ins, X64_XMM7, X64_XMM5); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM8, X64_XMM6); - - x64_sse_movaps_membase_reg(ins, X64_R8, 0, X64_XMM7); - x64_sse_movaps_membase_reg(ins, X64_R8, 32, X64_XMM8); - x64_sse_movaps_membase_reg(ins, X64_R8, 64, X64_XMM9); - x64_sse_movaps_membase_reg(ins, X64_R8, 96, X64_XMM10); - - x64_sse_movaps_reg_membase(ins, X64_XMM14, X64_R9, 32); - x64_sse_movaps_reg_membase(ins, X64_XMM11, X64_R8, 80); - x64_sse_movaps_reg_reg(ins, X64_XMM0, X64_XMM14); - x64_sse_movaps_reg_membase(ins, X64_XMM13, X64_R9, 48); - x64_sse_mulps_reg_reg(ins, X64_XMM0, X64_XMM11); - x64_sse_mulps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM11, 0xB1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM13); - x64_sse_mulps_reg_reg(ins, X64_XMM13, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM13); - x64_sse_movaps_reg_reg(ins, X64_XMM15, X64_XMM0); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM15, X64_XMM14); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM0, X64_XMM3); - - x64_sse_movaps_reg_membase(ins, X64_XMM1, X64_R8, 16); - x64_sse_movaps_reg_membase(ins, X64_XMM2, X64_R8, 48); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM0, X64_XMM0, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM2); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM15); - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM0); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM0); - - x64_sse_movaps_membase_reg(ins, X64_R8, 16, X64_XMM1); - x64_sse_movaps_membase_reg(ins, X64_R8, 48, X64_XMM2); - x64_sse_movaps_membase_reg(ins, X64_R8, 80, X64_XMM4); - x64_sse_movaps_membase_reg(ins, X64_R8, 112, X64_XMM5); - - x64_ret(ins); -#else - /* generate function */ - x64_sse_movaps_reg_membase(ins, X64_XMM0, X64_RDX, 64); - x64_sse_movaps_reg_membase(ins, X64_XMM1, X64_RDX, 96); - x64_sse_movaps_reg_membase(ins, X64_XMM7, X64_RDX, 0); - x64_sse_movaps_reg_membase(ins, X64_XMM4, X64_R8, 0); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM4); - x64_sse_movaps_reg_membase(ins, X64_XMM2, X64_R8, 16); - x64_sse_mulps_reg_reg(ins, X64_XMM6, X64_XMM0); - x64_sse_mulps_reg_reg(ins, X64_XMM4, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM0, X64_XMM0, 0xB1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM1, X64_XMM1, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM0, X64_XMM2); - x64_sse_mulps_reg_reg(ins, X64_XMM2, X64_XMM1); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM0); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM2); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM4); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM4); - x64_sse_movaps_reg_membase(ins, X64_XMM8, X64_RDX, 32); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM6, X64_XMM3); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM6, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_movaps_reg_membase(ins, X64_XMM12, X64_RDX, 112); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM5); - x64_sse_addps_reg_reg(ins, X64_XMM7, X64_XMM5); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM8, X64_XMM6); - - x64_sse_movaps_membase_reg(ins, X64_RDX, 0, X64_XMM7); - x64_sse_movaps_membase_reg(ins, X64_RDX, 32, X64_XMM8); - x64_sse_movaps_membase_reg(ins, X64_RDX, 64, X64_XMM9); - x64_sse_movaps_membase_reg(ins, X64_RDX, 96, X64_XMM10); - - x64_sse_movaps_reg_membase(ins, X64_XMM14, X64_R8, 32); - x64_sse_movaps_reg_membase(ins, X64_XMM11, X64_RDX, 80); - x64_sse_movaps_reg_reg(ins, X64_XMM0, X64_XMM14); - x64_sse_movaps_reg_membase(ins, X64_XMM13, X64_R8, 48); - x64_sse_mulps_reg_reg(ins, X64_XMM0, X64_XMM11); - x64_sse_mulps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM11, 0xB1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM13); - x64_sse_mulps_reg_reg(ins, X64_XMM13, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM13); - x64_sse_movaps_reg_reg(ins, X64_XMM15, X64_XMM0); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM15, X64_XMM14); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM0, X64_XMM3); - - x64_sse_movaps_reg_membase(ins, X64_XMM1, X64_RDX, 16); - x64_sse_movaps_reg_membase(ins, X64_XMM2, X64_RDX, 48); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM0, X64_XMM0, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM2); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM15); - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM0); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM0); - - x64_sse_movaps_membase_reg(ins, X64_RDX, 16, X64_XMM1); - x64_sse_movaps_membase_reg(ins, X64_RDX, 48, X64_XMM2); - x64_sse_movaps_membase_reg(ins, X64_RDX, 80, X64_XMM4); - x64_sse_movaps_membase_reg(ins, X64_RDX, 112, X64_XMM5); - - x64_ret(ins); -#endif - - *fp = ins; - return x4_addr; -} - -static FFTS_INLINE void -generate_leaf_init(insns_t **fp, uint32_t loop_count) -{ - /* to avoid deferring */ - insns_t *ins = *fp; - -#ifdef _M_X64 - /* set loop counter */ - x86_mov_reg_imm(ins, X86_EBX, loop_count); - - /* generate function */ - - /* clear */ - x86_clear_reg(ins, X86_EAX); - - /* set "pointer" to offsets */ - x64_mov_reg_membase(ins, X64_R9, X64_RCX, - offsetof(struct _ffts_plan_t, offsets), 8); - - /* set "pointer" to constants */ - x64_mov_reg_membase(ins, X64_RSI, X64_RCX, - offsetof(struct _ffts_plan_t, constants), 8); - - /* use XMM3 for sign change */ - x64_sse_movaps_reg_membase(ins, X64_XMM3, X64_RSI, 0); -#else - /* set loop counter */ - x86_mov_reg_imm(ins, X86_ECX, loop_count); - - /* generate function */ - - /* clear */ - x86_clear_reg(ins, X86_EAX); - - /* set "pointer" to offsets */ - x64_mov_reg_membase(ins, X64_R8, X64_RDI, - offsetof(struct _ffts_plan_t, offsets), 8); - - /* set "pointer" to constants */ - x64_mov_reg_membase(ins, X64_R9, X64_RDI, - offsetof(struct _ffts_plan_t, constants), 8); - - /* align loop/jump destination */ - ffts_align_mem16(&ins, 9); -#endif - - *fp = ins; -} - -static FFTS_INLINE void -generate_leaf_ee(insns_t **fp, uint32_t *offsets, int extend) -{ - insns_t *leaf_ee_loop; - - /* to avoid deferring */ - insns_t *ins = *fp; - -#ifdef _M_X64 - x64_sse_movaps_reg_membase_size(ins, X64_XMM0, X64_RSI, 32, 1); - - /* beginning of the loop (make sure it's 16 byte aligned) */ - leaf_ee_loop = ins; - assert(!(((uintptr_t) leaf_ee_loop) & 0xF)); - - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RDX, offsets[0], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RDX, offsets[2], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM6, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM10, X64_RDX, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM10); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM12, X64_XMM3); - - x64_sse_movaps_reg_memindex(ins, X64_XMM9, X64_RDX, offsets[1], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM10, X64_RDX, offsets[4], X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM13, X64_RDX, offsets[5], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM10); - x64_sse_movaps_reg_memindex(ins, X64_XMM8, X64_RDX, offsets[6], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM5, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM14, X64_RDX, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM15, X64_XMM8); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM4, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_movsxd_reg_memindex(ins, X64_R10, X64_R9, 0, X64_RAX, 2); - x64_sse_subps_reg_reg(ins, X64_XMM10, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM8, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM7, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM13); - x64_sse_addps_reg_reg(ins, X64_XMM15, X64_XMM14); - x64_sse_movaps_reg_membase(ins, X64_XMM12, X64_RSI, 16); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM9); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM12); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM2, X64_XMM5, extend > 0 ? 8 : 0); - extend--; - - x64_sse_mulps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM15); - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM8); - - x64_sse_addps_reg_reg_size(ins, X64_XMM2, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg_size(ins, X64_XMM5, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM10, 0xB1); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM9, X64_XMM3); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM8, X64_XMM8, 0xB1); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM1, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_sse_mulps_reg_reg(ins, X64_XMM10, X64_XMM0); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM4); - x64_sse_mulps_reg_reg(ins, X64_XMM8, X64_XMM0); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM8); - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM12); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM7); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM9, X64_XMM9, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM8, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM9); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM9); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM8); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM8); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM12, X64_XMM3); - - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM6); - x64_movsxd_reg_memindex(ins, X64_R11, X64_R9, 8, X64_RAX, 2); - x64_sse_movlhps_reg_reg(ins, X64_XMM8, X64_XMM4); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM2, X64_XMM4, 0xEE); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM4, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_movlhps_reg_reg(ins, X64_XMM4, X64_XMM7); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM1, X64_XMM7, 0xEE); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM7, X64_XMM5, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movlhps_reg_reg(ins, X64_XMM7, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM9, X64_XMM14); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM13, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM14, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R10, 2, X64_XMM8); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R10, 2, X64_XMM4); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R10, 2, X64_XMM7); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R10, 2, X64_XMM9); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R11, 2, X64_XMM2); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R11, 2, X64_XMM1); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R11, 2, X64_XMM5); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R11, 2, X64_XMM6); - - /* loop condition */ - x64_alu_reg_reg_size(ins, X86_CMP, X64_RBX, X64_RAX, 8); - x64_branch_size(ins, X86_CC_NE, leaf_ee_loop, 0, 4); -#else - x64_sse_movaps_reg_membase_size(ins, X64_XMM0, X64_R9, 32, 1); - - /* use XMM8 for sign change */ - x64_sse_movaps_reg_membase(ins, X64_XMM8, X64_R9, 0); - - /* beginning of the loop (make sure it's 16 byte aligned) */ - leaf_ee_loop = ins; - assert(!(((uintptr_t) leaf_ee_loop) & 0xF)); - - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RSI, offsets[0], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RSI, offsets[2], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM6, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM10, X64_RSI, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM10); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM12, X64_XMM8); - - x64_sse_movaps_reg_memindex(ins, X64_XMM9, X64_RSI, offsets[1], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM10, X64_RSI, offsets[4], X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM9); - - x64_sse_movaps_reg_memindex(ins, X64_XMM13, X64_RSI, offsets[5], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM10); - x64_sse_movaps_reg_memindex(ins, X64_XMM3, X64_RSI, offsets[6], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM5, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM14, X64_RSI, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM15, X64_XMM3); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM4, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_movsxd_reg_memindex(ins, X64_R11, X64_R8, 0, X64_RAX, 2); - x64_sse_subps_reg_reg(ins, X64_XMM10, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM3, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM7, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM13); - x64_sse_addps_reg_reg(ins, X64_XMM15, X64_XMM14); - x64_sse_movaps_reg_membase(ins, X64_XMM12, X64_R9, 16); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM9); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM12); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM2, X64_XMM5, extend > 0 ? 8 : 0); - extend--; - - x64_sse_mulps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM15); - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM3); - - x64_sse_addps_reg_reg_size(ins, X64_XMM2, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg_size(ins, X64_XMM5, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM10, 0xB1); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM9, X64_XMM8); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM3, X64_XMM3, 0xB1); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM1, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_sse_mulps_reg_reg(ins, X64_XMM10, X64_XMM0); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM4); - x64_sse_mulps_reg_reg(ins, X64_XMM3, X64_XMM0); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM3); - x64_sse_movaps_reg_reg(ins, X64_XMM3, X64_XMM12); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM7); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM9, X64_XMM9, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM3, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM9); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM9); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM3); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM3); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM12, X64_XMM8); - - x64_sse_movaps_reg_reg(ins, X64_XMM3, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM6); - x64_movsxd_reg_memindex(ins, X64_R12, X64_R8, 8, X64_RAX, 2); - x64_sse_movlhps_reg_reg(ins, X64_XMM3, X64_XMM4); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM2, X64_XMM4, 0xEE); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM4, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_movlhps_reg_reg(ins, X64_XMM4, X64_XMM7); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM1, X64_XMM7, 0xEE); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM7, X64_XMM5, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movlhps_reg_reg(ins, X64_XMM7, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM9, X64_XMM14); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM13, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM14, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R11, 2, X64_XMM3); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R11, 2, X64_XMM4); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R11, 2, X64_XMM7); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R11, 2, X64_XMM9); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R12, 2, X64_XMM2); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R12, 2, X64_XMM1); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R12, 2, X64_XMM5); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R12, 2, X64_XMM6); - - /* loop condition */ - x64_alu_reg_reg_size(ins, X86_CMP, X64_RCX, X64_RAX, 8); - x64_branch_size(ins, X86_CC_NE, leaf_ee_loop, 0, 4); -#endif - - *fp = ins; -} - -static FFTS_INLINE void -generate_leaf_eo(insns_t **fp, uint32_t *offsets) -{ - /* to avoid deferring */ - insns_t *ins = *fp; - -#ifdef _M_X64 - x64_sse_movaps_reg_memindex(ins, X64_XMM9, X64_RDX, offsets[0], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RDX, offsets[2], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM5, X64_RDX, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM7); - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_RDX, offsets[1], X64_RAX, 2); - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM5); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM4); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM4); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM5); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM11); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM7, X64_XMM3); - - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM9); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM8, X64_XMM7); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_movsxd_reg_memindex(ins, X64_R11, X64_R9, 8, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM2, X64_XMM10); - x64_movsxd_reg_memindex(ins, X64_R10, X64_R9, 0, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM8, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM9, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R11, 2, X64_XMM10); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R11, 2, X64_XMM11); - x64_sse_movaps_reg_memindex(ins, X64_XMM15, X64_RDX, offsets[4], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RDX, offsets[5], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM15); - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_RDX, offsets[6], X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM15, X64_XMM12); - x64_sse_movaps_reg_memindex(ins, X64_XMM13, X64_RDX, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM7, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM2, X64_XMM8); - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM5); - x64_sse_movlhps_reg_reg(ins, X64_XMM7, X64_XMM15); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM15, X64_XMM3); - - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM5); - x64_sse_subps_reg_reg(ins, X64_XMM5, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM14); - x64_sse_movlhps_reg_reg(ins, X64_XMM1, X64_XMM9); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM4); - x64_sse_movlhps_reg_reg(ins, X64_XMM8, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM12, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM15, X64_XMM15, 0xB1); - x64_sse_movaps_reg_membase(ins, X64_XMM11, X64_RSI, 48); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM15); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM11); - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM7); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM15); - x64_sse_movaps_reg_membase(ins, X64_XMM15, X64_RSI, 64); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_mulps_reg_reg(ins, X64_XMM7, X64_XMM15); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM8, X64_XMM8, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM7); - x64_sse_mulps_reg_reg(ins, X64_XMM8, X64_XMM15); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM14, 0xEE); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM9); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM11, X64_XMM3); - - x64_sse_movaps_reg_reg(ins, X64_XMM0, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM11, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM4, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R11, 2, X64_XMM5); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R11, 2, X64_XMM6); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R10, 2, X64_XMM2); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R10, 2, X64_XMM1); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R10, 2, X64_XMM0); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R10, 2, X64_XMM12); -#else - x64_sse_movaps_reg_memindex(ins, X64_XMM9, X64_RSI, offsets[0], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RSI, offsets[2], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM5, X64_RSI, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM7); - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_RSI, offsets[1], X64_RAX, 2); - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM5); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM4); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM4); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM5); - x64_sse_movaps_reg_membase(ins, X64_XMM3, X64_R9, 0); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM11); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM7, X64_XMM3); - - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM9); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM8, X64_XMM7); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_movsxd_reg_memindex(ins, X64_R12, X64_R8, 8, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM2, X64_XMM10); - x64_movsxd_reg_memindex(ins, X64_R11, X64_R8, 0, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM8, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM9, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R12, 2, X64_XMM10); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R12, 2, X64_XMM11); - x64_sse_movaps_reg_memindex(ins, X64_XMM15, X64_RSI, offsets[4], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RSI, offsets[5], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM15); - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_RSI, offsets[6], X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM15, X64_XMM12); - x64_sse_movaps_reg_memindex(ins, X64_XMM13, X64_RSI, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM7, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM2, X64_XMM8); - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM5); - x64_sse_movlhps_reg_reg(ins, X64_XMM7, X64_XMM15); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM15, X64_XMM3); - - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM5); - x64_sse_subps_reg_reg(ins, X64_XMM5, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM14); - x64_sse_movlhps_reg_reg(ins, X64_XMM1, X64_XMM9); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM4); - x64_sse_movlhps_reg_reg(ins, X64_XMM8, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM12, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM15, X64_XMM15, 0xB1); - x64_sse_movaps_reg_membase(ins, X64_XMM11, X64_R9, 48); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM15); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM11); - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM7); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM15); - x64_sse_movaps_reg_membase(ins, X64_XMM15, X64_R9, 64); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_mulps_reg_reg(ins, X64_XMM7, X64_XMM15); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM8, X64_XMM8, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM7); - x64_sse_mulps_reg_reg(ins, X64_XMM8, X64_XMM15); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM14, 0xEE); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM9); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM11, X64_XMM3); - - x64_sse_movaps_reg_reg(ins, X64_XMM3, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM11, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM3, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM4, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R12, 2, X64_XMM5); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R12, 2, X64_XMM6); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R11, 2, X64_XMM2); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R11, 2, X64_XMM1); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R11, 2, X64_XMM3); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R11, 2, X64_XMM12); -#endif - - *fp = ins; -} - -static FFTS_INLINE void -generate_leaf_oe(insns_t **fp, uint32_t *offsets) -{ - /* to avoid deferring */ - insns_t *ins = *fp; - -#ifdef _M_X64 - x64_sse_movaps_reg_memindex(ins, X64_XMM6, X64_RDX, offsets[2], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM8, X64_RDX, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM6); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM8, 0xE4); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM10); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM8, X64_XMM6, 0xE4); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RDX, offsets[0], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RDX, offsets[1], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_movsxd_reg_memindex(ins, X64_R10, X64_R9, 0, X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_subps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM7); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM9); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM14); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM4, X64_XMM10, 0xEE); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM10, X64_XMM3); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM10, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM12); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM13, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM10); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM9); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM12, 0xEE); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_movsxd_reg_memindex(ins, X64_R11, X64_R9, 8, X64_RAX, 2); - x64_sse_movlhps_reg_reg(ins, X64_XMM13, X64_XMM11); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R10, 2, X64_XMM13); - x64_sse_movaps_reg_membase(ins, X64_XMM13, X64_RSI, 48); - x64_sse_movlhps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM13); - x64_sse_movaps_reg_membase(ins, X64_XMM12, X64_RSI, 64); - x64_sse_mulps_reg_reg(ins, X64_XMM13, X64_XMM5); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM5, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM5, X64_XMM12); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R10, 2, X64_XMM14); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM5); - x64_sse_mulps_reg_reg(ins, X64_XMM1, X64_XMM4); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM4, X64_XMM4, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM4, X64_XMM12); - x64_sse_movaps_reg_memindex(ins, X64_XMM9, X64_RDX, offsets[4], X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM4); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RDX, offsets[6], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM0, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM2, X64_RDX, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM7); - x64_sse_movaps_reg_memindex(ins, X64_XMM15, X64_RDX, offsets[5], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM2); - x64_sse_addps_reg_reg(ins, X64_XMM0, X64_XMM15); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM2); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM1); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM1); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM7, X64_XMM3); - - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_movaps_reg_reg(ins, X64_XMM2, X64_XMM0); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM9); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM13, X64_XMM3); - - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM8, X64_XMM7); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM6); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM2); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM0); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM2, X64_XMM8, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM0, X64_XMM9, 0xEE); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM13, X64_XMM13, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM4); - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM0); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM13); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_movlhps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R10, 2, X64_XMM10); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R10, 2, X64_XMM11); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R11, 2, X64_XMM2); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R11, 2, X64_XMM0); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R11, 2, X64_XMM14); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R11, 2, X64_XMM4); -#else - x64_sse_movaps_reg_membase(ins, X64_XMM0, X64_R9, 0); - x64_sse_movaps_reg_memindex(ins, X64_XMM6, X64_RSI, offsets[2], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM8, X64_RSI, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM6); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM8, 0xE4); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM10); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM8, X64_XMM6, 0xE4); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RSI, offsets[0], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RSI, offsets[1], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_movsxd_reg_memindex(ins, X64_R11, X64_R8, 0, X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_subps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_addps_reg_reg(ins, X64_XMM14, X64_XMM7); - x64_sse_subps_reg_reg(ins, X64_XMM12, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM9); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM14); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM4, X64_XMM10, 0xEE); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM10, X64_XMM0); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM10, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM12); - x64_sse_movaps_reg_reg(ins, X64_XMM5, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM13, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM10); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM9); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM12, 0xEE); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM10); - x64_movsxd_reg_memindex(ins, X64_R12, X64_R8, 8, X64_RAX, 2); - x64_sse_movlhps_reg_reg(ins, X64_XMM13, X64_XMM11); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R11, 2, X64_XMM13); - x64_sse_movaps_reg_membase(ins, X64_XMM13, X64_R9, 48); - x64_sse_movlhps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM13); - x64_sse_movaps_reg_membase(ins, X64_XMM12, X64_R9, 64); - x64_sse_mulps_reg_reg(ins, X64_XMM13, X64_XMM5); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM5, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM5, X64_XMM12); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R11, 2, X64_XMM14); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM5); - x64_sse_mulps_reg_reg(ins, X64_XMM1, X64_XMM4); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM4, X64_XMM4, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM4, X64_XMM12); - x64_sse_movaps_reg_memindex(ins, X64_XMM9, X64_RSI, offsets[4], X64_RAX, 2); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM4); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RSI, offsets[6], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM3, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM2, X64_RSI, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM7); - x64_sse_movaps_reg_memindex(ins, X64_XMM15, X64_RSI, offsets[5], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM7, X64_XMM2); - x64_sse_addps_reg_reg(ins, X64_XMM3, X64_XMM15); - x64_sse_subps_reg_reg(ins, X64_XMM9, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM2); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM1); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM1); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM7, X64_XMM0); - - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_movaps_reg_reg(ins, X64_XMM2, X64_XMM3); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM9); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM13, X64_XMM0); - - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM8, X64_XMM7); - x64_sse_subps_reg_reg(ins, X64_XMM3, X64_XMM6); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM2); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM3); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM2, X64_XMM8, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM3, X64_XMM9, 0xEE); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM13, X64_XMM13, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM4); - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM3); - x64_sse_subps_reg_reg(ins, X64_XMM3, X64_XMM13); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_movlhps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R11, 2, X64_XMM10); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R11, 2, X64_XMM11); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R12, 2, X64_XMM2); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R12, 2, X64_XMM3); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R12, 2, X64_XMM14); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R12, 2, X64_XMM4); -#endif - - *fp = ins; -} - -static FFTS_INLINE void -generate_leaf_oo(insns_t **fp, uint32_t loop_count, uint32_t *offsets, int extend) -{ - insns_t *leaf_oo_loop; - - /* to avoid deferring */ - insns_t *ins = *fp; - -#ifdef _M_X64 - /* align loop/jump destination */ - x86_mov_reg_imm(ins, X86_EBX, loop_count); - - /* beginning of the loop (make sure it's 16 byte aligned) */ - leaf_oo_loop = ins; - assert(!(((uintptr_t) leaf_oo_loop) & 0xF)); - - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_RDX, offsets[0], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM6, X64_XMM4, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RDX, offsets[1], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM10, X64_RDX, offsets[2], X64_RAX, 2); - - x64_sse_addps_reg_reg_size(ins, X64_XMM6, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg_size(ins, X64_XMM4, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM8, X64_RDX, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM10); - x64_sse_movaps_reg_memindex(ins, X64_XMM1, X64_RDX, offsets[4], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM5, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM11, X64_RDX, offsets[5], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM2, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM14, X64_RDX, offsets[6], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM15, X64_XMM4); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RDX, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM14); - x64_movsxd_reg_memindex(ins, X64_R10, X64_R9, 0, X64_RAX, 2); - x64_sse_subps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM13, X64_XMM12); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM10, X64_XMM3); - - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM9); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM14, X64_XMM3); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM10, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM14, X64_XMM14, 0xB1); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM7, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_movsxd_reg_memindex(ins, X64_R11, X64_R9, 8, X64_RAX, 2); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM15, X64_XMM10); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM1); - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM2); - - x64_sse_movlhps_reg_reg_size(ins, X64_XMM7, X64_XMM4, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM14); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM4, 0xEE); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM5); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM9); - x64_sse_movlhps_reg_reg(ins, X64_XMM14, X64_XMM15); - x64_sse_movlhps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM8, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM5, X64_XMM15, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM9, X64_XMM13, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM2, X64_XMM1, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R10, 2, X64_XMM14); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R10, 2, X64_XMM7); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R10, 2, X64_XMM4); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R10, 2, X64_XMM8); - x64_sse_movaps_memindex_reg(ins, X64_R8, 0, X64_R11, 2, X64_XMM5); - x64_sse_movaps_memindex_reg(ins, X64_R8, 16, X64_R11, 2, X64_XMM6); - x64_sse_movaps_memindex_reg(ins, X64_R8, 32, X64_R11, 2, X64_XMM9); - x64_sse_movaps_memindex_reg(ins, X64_R8, 48, X64_R11, 2, X64_XMM2); - - /* loop condition */ - x64_alu_reg_reg_size(ins, X86_CMP, X64_RBX, X64_RAX, 8); - x64_branch_size(ins, X86_CC_NE, leaf_oo_loop, 0, 4); -#else - /* align loop/jump destination */ - x86_mov_reg_imm(ins, X86_ECX, loop_count); - ffts_align_mem16(&ins, 4); - - x64_sse_movaps_reg_membase(ins, X64_XMM5, X64_R9, 0); - - /* beginning of the loop (make sure it's 16 byte aligned) */ - leaf_oo_loop = ins; - assert(!(((uintptr_t) leaf_oo_loop) & 0xF)); - - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_RSI, offsets[0], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM6, X64_XMM4, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RSI, offsets[1], X64_RAX, 2); - x64_sse_movaps_reg_memindex(ins, X64_XMM10, X64_RSI, offsets[2], X64_RAX, 2); - - x64_sse_addps_reg_reg_size(ins, X64_XMM6, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg_size(ins, X64_XMM4, X64_XMM7, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM8, X64_RSI, offsets[3], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM10); - x64_sse_movaps_reg_memindex(ins, X64_XMM1, X64_RSI, offsets[4], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM3, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM11, X64_RSI, offsets[5], X64_RAX, 2); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM2, X64_XMM1, extend > 0 ? 8 : 0); - extend--; - - x64_sse_movaps_reg_memindex(ins, X64_XMM14, X64_RSI, offsets[6], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM15, X64_XMM4); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RSI, offsets[7], X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM14); - x64_movsxd_reg_memindex(ins, X64_R11, X64_R8, 0, X64_RAX, 2); - x64_sse_subps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_addps_reg_reg(ins, X64_XMM2, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM12); - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM13, X64_XMM12); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM10, X64_XMM5); - - x64_sse_addps_reg_reg(ins, X64_XMM3, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM9); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM14, X64_XMM5); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM10, X64_XMM10, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM9, X64_XMM2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM14, X64_XMM14, 0xB1); - - x64_sse_movaps_reg_reg_size(ins, X64_XMM7, X64_XMM6, extend > 0 ? 8 : 0); - extend--; - - x64_movsxd_reg_memindex(ins, X64_R12, X64_R8, 8, X64_RAX, 2); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM15, X64_XMM10); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM1); - x64_sse_movaps_reg_reg(ins, X64_XMM8, X64_XMM2); - - x64_sse_movlhps_reg_reg_size(ins, X64_XMM7, X64_XMM4, extend > 0 ? 8 : 0); - extend--; - - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM14); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM14); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM4, 0xEE); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM3); - x64_sse_movaps_reg_reg(ins, X64_XMM4, X64_XMM9); - x64_sse_movlhps_reg_reg(ins, X64_XMM14, X64_XMM15); - x64_sse_movlhps_reg_reg(ins, X64_XMM4, X64_XMM13); - x64_sse_movlhps_reg_reg(ins, X64_XMM8, X64_XMM1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM3, X64_XMM15, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM9, X64_XMM13, 0xEE); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM2, X64_XMM1, 0xEE); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R11, 2, X64_XMM14); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R11, 2, X64_XMM7); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R11, 2, X64_XMM4); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R11, 2, X64_XMM8); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 0, X64_R12, 2, X64_XMM3); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 16, X64_R12, 2, X64_XMM6); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 32, X64_R12, 2, X64_XMM9); - x64_sse_movaps_memindex_reg(ins, X64_RDX, 48, X64_R12, 2, X64_XMM2); - - /* loop condition */ - x64_alu_reg_reg_size(ins, X86_CMP, X64_RCX, X64_RAX, 8); - x64_branch_size(ins, X86_CC_NE, leaf_oo_loop, 0, 4); -#endif - - *fp = ins; -} - -static FFTS_INLINE insns_t* -generate_size8_base_case(insns_t **fp, int sign) -{ - insns_t *ins; - insns_t *x8_addr; - insns_t *x8_soft_loop; - - /* unreferenced parameter */ - (void) sign; - - /* to avoid deferring */ - ins = *fp; - - /* align call destination */ - ffts_align_mem16(&ins, 0); - x8_addr = ins; - - /* align loop/jump destination */ -#ifdef _M_X64 - ffts_align_mem16(&ins, 6); -#else - ffts_align_mem16(&ins, 5); -#endif - -#ifdef _M_X64 - /* generate function */ - - /* input */ - x64_mov_reg_reg(ins, X64_RAX, X64_R9, 8); - - /* output */ - x64_mov_reg_reg(ins, X64_RCX, X64_R8, 8); - - /* loop stop (RDX = output + output_stride) */ - x64_lea_memindex(ins, X64_RDX, X64_R8, 0, X64_RBX, 0); - - /* RSI = 3 * output_stride */ - x64_lea_memindex(ins, X64_RSI, X64_RBX, 0, X64_RBX, 1); - - /* R10 = 5 * output_stride */ - x64_lea_memindex(ins, X64_R10, X64_RBX, 0, X64_RBX, 2); - - /* R11 = 7 * output_stride */ - x64_lea_memindex(ins, X64_R11, X64_RSI, 0, X64_RBX, 2); - - /* beginning of the loop (make sure it's 16 byte aligned) */ - x8_soft_loop = ins; - assert(!(((uintptr_t) x8_soft_loop) & 0xF)); - - /* load [input + 0 * input_stride] */ - x64_sse_movaps_reg_membase(ins, X64_XMM9, X64_RAX, 0); - - /* load [output + 2 * output_stride] */ - x64_sse_movaps_reg_memindex(ins, X64_XMM6, X64_RCX, 0, X64_RBX, 1); - - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM9); - - /* load [output + 3 * output_stride] */ - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RCX, 0, X64_RSI, 0); - - /* load [input + 1 * input_stride] */ - x64_sse_movaps_reg_membase(ins, X64_XMM8, X64_RAX, 16); - - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM6); - x64_sse_mulps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM6, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM6, X64_XMM8); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM6); - x64_sse_mulps_reg_reg(ins, X64_XMM8, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - - /* load [input + 2 * input_stride] */ - x64_sse_movaps_reg_membase(ins, X64_XMM15, X64_RAX, 32); - - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM9); - - /* load [output + 0 * output_stride] */ - x64_sse_movaps_reg_membase(ins, X64_XMM5, X64_RCX, 0); - - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM15); - - /* load [output + 4 * output_stride] */ - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_RCX, 0, X64_RBX, 2); - - x64_sse_movaps_reg_reg(ins, X64_XMM2, X64_XMM5); - - /* load [output + 6 * output_stride] */ - x64_sse_movaps_reg_memindex(ins, X64_XMM13, X64_RCX, 0, X64_RSI, 1); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM11, X64_XMM3); - - /* load [input + 3 * input_stride] */ - x64_sse_movaps_reg_membase(ins, X64_XMM14, X64_RAX, 48); - - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM10); - x64_sse_mulps_reg_reg(ins, X64_XMM6, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM10); - x64_sse_mulps_reg_reg(ins, X64_XMM15, X64_XMM13); - - /* load [input + 4 * input_stride] */ - x64_sse_movaps_reg_membase(ins, X64_XMM10, X64_RAX, 64); - - x64_sse_movaps_reg_reg(ins, X64_XMM0, X64_XMM5); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM13, X64_XMM13, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM12, X64_XMM14); - x64_sse_mulps_reg_reg(ins, X64_XMM14, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM15, X64_XMM14); - - /* load [output + 5 * output_stride] */ - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_RCX, 0, X64_R10, 0); - - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM10); - - /* load [output + 7 * output_stride] */ - x64_sse_movaps_reg_memindex(ins, X64_XMM8, X64_RCX, 0, X64_R11, 0); - - x64_sse_movaps_reg_reg(ins, X64_XMM12, X64_XMM6); - - /* load [input + 5 * input_stride] */ - x64_sse_movaps_reg_membase(ins, X64_XMM9, X64_RAX, 80); - - /* move input by 6 * input_stride */ - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 0x60, 8); - - x64_sse_mulps_reg_reg(ins, X64_XMM13, X64_XMM7); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM15); - x64_sse_mulps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM12); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM6, X64_XMM3); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM8, X64_XMM8, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM12, X64_XMM2); - x64_sse_mulps_reg_reg(ins, X64_XMM7, X64_XMM9); - x64_sse_mulps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM7); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM9); - - /* load [output + 1 * output_stride] */ - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_RCX, 0, X64_RBX, 0); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM11, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM4); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM6, 0xB1); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM6); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM13); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM1); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM10); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM13, X64_XMM3); - - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM11); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM13, X64_XMM13, 0xB1); - - /* store [output + 0 * output_stride] */ - x64_sse_movaps_membase_reg(ins, X64_RCX, 0, X64_XMM5); - - /* store [output + 1 * output_stride] */ - x64_sse_movaps_memindex_reg(ins, X64_RCX, 0, X64_RBX, 0, X64_XMM4); - - /* store [output + 2 * output_stride] */ - x64_sse_movaps_memindex_reg(ins, X64_RCX, 0, X64_RBX, 1, X64_XMM2); - - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM13); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM13); - - /* store [output + 3 * output_stride] */ - x64_sse_movaps_memindex_reg(ins, X64_RCX, 0, X64_RSI, 0, X64_XMM1); - - /* store [output + 4 * output_stride] */ - x64_sse_movaps_memindex_reg(ins, X64_RCX, 0, X64_RBX, 2, X64_XMM0); - - /* store [output + 5 * output_stride] */ - x64_sse_movaps_memindex_reg(ins, X64_RCX, 0, X64_R10, 0, X64_XMM14); - - /* store [output + 6 * output_stride] */ - x64_sse_movaps_memindex_reg(ins, X64_RCX, 0, X64_RSI, 1, X64_XMM12); - - /* store [output + 7 * output_stride] */ - x64_sse_movaps_memindex_reg(ins, X64_RCX, 0, X64_R11, 0, X64_XMM6); - - /* move output by 16 */ - x64_alu_reg_imm_size(ins, X86_ADD, X64_RCX, 16, 8); - - /* loop condition */ - x64_alu_reg_reg_size(ins, X86_CMP, X64_RCX, X64_RDX, 8); - x64_branch_size(ins, X86_CC_NE, x8_soft_loop, 0, 4); - - x64_ret(ins); -#else - /* generate function */ - x86_clear_reg(ins, X86_EAX); - x64_mov_reg_reg(ins, X64_RBX, X64_RDX, 8); - x64_mov_reg_reg(ins, X64_RSI, X64_R8, 8); - - x64_lea_memindex(ins, X64_R9, X64_RDX, 0, X64_RCX, 2); - x64_lea_memindex(ins, X64_R10, X64_R9, 0, X64_RCX, 2); - x64_lea_memindex(ins, X64_R11, X64_R10, 0, X64_RCX, 2); - x64_lea_memindex(ins, X64_R12, X64_R11, 0, X64_RCX, 2); - x64_lea_memindex(ins, X64_R13, X64_R12, 0, X64_RCX, 2); - x64_lea_memindex(ins, X64_R14, X64_R13, 0, X64_RCX, 2); - x64_lea_memindex(ins, X64_R15, X64_R14, 0, X64_RCX, 2); - - /* beginning of the loop (make sure it's 16 byte aligned) */ - x8_soft_loop = ins; - assert(!(((uintptr_t) x8_soft_loop) & 0xF)); - - x64_sse_movaps_reg_membase(ins, X64_XMM9, X64_RSI, 0); - x64_sse_movaps_reg_memindex(ins, X64_XMM6, X64_R10, 0, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_R11, 0, X64_RAX, 2); - x64_sse_movaps_reg_membase(ins, X64_XMM8, X64_RSI, 16); - x64_sse_mulps_reg_reg(ins, X64_XMM11, X64_XMM6); - x64_sse_mulps_reg_reg(ins, X64_XMM9, X64_XMM7); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM6, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM6, X64_XMM8); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM6); - x64_sse_mulps_reg_reg(ins, X64_XMM8, X64_XMM7); - x64_sse_movaps_reg_reg(ins, X64_XMM10, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_movaps_reg_membase(ins, X64_XMM15, X64_RSI, 32); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM9); - x64_sse_subps_reg_reg(ins, X64_XMM11, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM5, X64_RBX, 0, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM15); - x64_sse_movaps_reg_memindex(ins, X64_XMM12, X64_R12, 0, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM2, X64_XMM5); - x64_sse_movaps_reg_memindex(ins, X64_XMM13, X64_R14, 0, X64_RAX, 2); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM11, X64_XMM3); - - x64_sse_movaps_reg_membase(ins, X64_XMM14, X64_RSI, 48); - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM10); - x64_sse_mulps_reg_reg(ins, X64_XMM6, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM10); - x64_sse_mulps_reg_reg(ins, X64_XMM15, X64_XMM13); - x64_sse_movaps_reg_membase(ins, X64_XMM10, X64_RSI, 64); - x64_sse_movaps_reg_reg(ins, X64_XMM0, X64_XMM5); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM12, X64_XMM12, 0xB1); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM13, X64_XMM13, 0xB1); - x64_sse_mulps_reg_reg(ins, X64_XMM12, X64_XMM14); - x64_sse_mulps_reg_reg(ins, X64_XMM14, X64_XMM13); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM15, X64_XMM14); - x64_sse_movaps_reg_memindex(ins, X64_XMM7, X64_R13, 0, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM13, X64_XMM10); - x64_sse_movaps_reg_memindex(ins, X64_XMM8, X64_R15, 0, X64_RAX, 2); - x64_sse_movaps_reg_reg(ins, X64_XMM12, X64_XMM6); - x64_sse_movaps_reg_membase(ins, X64_XMM9, X64_RSI, 80); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RSI, 0x60, 8); - x64_sse_mulps_reg_reg(ins, X64_XMM13, X64_XMM7); - x64_sse_subps_reg_reg(ins, X64_XMM6, X64_XMM15); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM15); - x64_sse_mulps_reg_reg(ins, X64_XMM10, X64_XMM8); - x64_sse_subps_reg_reg(ins, X64_XMM0, X64_XMM12); - x64_sse_addps_reg_reg(ins, X64_XMM5, X64_XMM12); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM7, X64_XMM7, 0xB1); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM6, X64_XMM3); - - x64_sse_shufps_reg_reg_imm(ins, X64_XMM8, X64_XMM8, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM12, X64_XMM2); - x64_sse_mulps_reg_reg(ins, X64_XMM7, X64_XMM9); - x64_sse_mulps_reg_reg(ins, X64_XMM9, X64_XMM8); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM7); - x64_sse_addps_reg_reg(ins, X64_XMM10, X64_XMM9); - x64_sse_movaps_reg_memindex(ins, X64_XMM4, X64_R9, 0, X64_RAX, 2); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM11, X64_XMM11, 0xB1); - x64_sse_movaps_reg_reg(ins, X64_XMM1, X64_XMM4); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM6, X64_XMM6, 0xB1); - x64_sse_addps_reg_reg(ins, X64_XMM1, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM4, X64_XMM11); - x64_sse_addps_reg_reg(ins, X64_XMM12, X64_XMM6); - x64_sse_subps_reg_reg(ins, X64_XMM2, X64_XMM6); - x64_sse_movaps_reg_reg(ins, X64_XMM11, X64_XMM13); - x64_sse_movaps_reg_reg(ins, X64_XMM14, X64_XMM4); - x64_sse_movaps_reg_reg(ins, X64_XMM6, X64_XMM1); - x64_sse_subps_reg_reg(ins, X64_XMM13, X64_XMM10); - x64_sse_addps_reg_reg(ins, X64_XMM11, X64_XMM10); - - /* change sign */ - x64_sse_xorps_reg_reg(ins, X64_XMM13, X64_XMM3); - - x64_sse_addps_reg_reg(ins, X64_XMM4, X64_XMM11); - x64_sse_subps_reg_reg(ins, X64_XMM14, X64_XMM11); - x64_sse_shufps_reg_reg_imm(ins, X64_XMM13, X64_XMM13, 0xB1); - x64_sse_movaps_memindex_reg(ins, X64_RBX, 0, X64_RAX, 2, X64_XMM5); - x64_sse_movaps_memindex_reg(ins, X64_R9, 0, X64_RAX, 2, X64_XMM4); - x64_sse_movaps_memindex_reg(ins, X64_R10, 0, X64_RAX, 2, X64_XMM2); - x64_sse_subps_reg_reg(ins, X64_XMM1, X64_XMM13); - x64_sse_addps_reg_reg(ins, X64_XMM6, X64_XMM13); - x64_sse_movaps_memindex_reg(ins, X64_R11, 0, X64_RAX, 2, X64_XMM1); - x64_sse_movaps_memindex_reg(ins, X64_R12, 0, X64_RAX, 2, X64_XMM0); - x64_sse_movaps_memindex_reg(ins, X64_R13, 0, X64_RAX, 2, X64_XMM14); - x64_sse_movaps_memindex_reg(ins, X64_R14, 0, X64_RAX, 2, X64_XMM12); - x64_sse_movaps_memindex_reg(ins, X64_R15, 0, X64_RAX, 2, X64_XMM6); - x64_alu_reg_imm_size(ins, X86_ADD, X64_RAX, 4, 8); - - /* loop condition */ - x64_alu_reg_reg_size(ins, X86_CMP, X64_RCX, X64_RAX, 8); - x64_branch_size(ins, X86_CC_NE, x8_soft_loop, 0, 4); - x64_ret(ins); -#endif - - *fp = ins; - return x8_addr; -} - -#endif /* FFTS_CODEGEN_SSE_H */ \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/ffts.c b/FFTS/Sources/FFTS/src/ffts.c deleted file mode 100644 index 2c26007..0000000 --- a/FFTS/Sources/FFTS/src/ffts.c +++ /dev/null @@ -1,793 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts.h" - -#include "ffts_internal.h" -#include "ffts_chirp_z.h" -#include "ffts_static.h" -#include "ffts_trig.h" -#include "macros.h" -#include "patterns.h" - -#ifndef DYNAMIC_DISABLED -#include "codegen.h" -#endif - -#if _WIN32 -#include -#else -#if __APPLE__ -#include -#endif - -#if HAVE_SYS_MMAN_H -#include -#endif -#endif - -#if defined(HAVE_NEON) -static const FFTS_ALIGN(64) float w_data[16] = { - 0.70710678118654757273731092936941f, - 0.70710678118654746171500846685376f, - -0.70710678118654757273731092936941f, - -0.70710678118654746171500846685376f, - 1.0f, - 0.70710678118654757273731092936941f, - -0.0f, - -0.70710678118654746171500846685376f, - 0.70710678118654757273731092936941f, - 0.70710678118654746171500846685376f, - 0.70710678118654757273731092936941f, - 0.70710678118654746171500846685376f, - 1.0f, - 0.70710678118654757273731092936941f, - 0.0f, - 0.70710678118654746171500846685376f -}; -#endif - -static FFTS_INLINE int -ffts_allow_execute(void *start, size_t len) -{ - int result; - -#ifdef _WIN32 - DWORD old_protect; - result = !VirtualProtect(start, len, PAGE_EXECUTE_READ, &old_protect); -#else - result = mprotect(start, len, PROT_READ | PROT_EXEC); -#endif - - return result; -} - -static FFTS_INLINE int -ffts_deny_execute(void *start, size_t len) -{ - int result; - -#ifdef _WIN32 - DWORD old_protect; - result = (int) VirtualProtect(start, len, PAGE_READWRITE, &old_protect); -#else - result = mprotect(start, len, PROT_READ | PROT_WRITE); -#endif - - return result; -} - -static FFTS_INLINE int -ffts_flush_instruction_cache(void *start, size_t length) -{ -#ifdef _WIN32 - return !FlushInstructionCache(GetCurrentProcess(), start, length); -#else -#ifdef __APPLE__ - sys_icache_invalidate(start, length); -#elif __ANDROID__ -#if __ARM_ARCH_ISA_A64 - __builtin___clear_cache((long) start, (long) start + length); -#else - cacheflush((long) start, (long) start + length, 0); -#endif -#elif __linux__ -#if GCC_VERSION_AT_LEAST(4,3) - __builtin___clear_cache(start, (char*) start + length); -#elif __GNUC__ - __builtin___clear_cache((char*) start, (char*) start + length); -#endif -#endif - return 0; -#endif -} - -static FFTS_INLINE void* -ffts_vmem_alloc(size_t length) -{ -#if __APPLE__ - return mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0); -#elif _WIN32 - return VirtualAlloc(NULL, length, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); -#else -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS 0x20 -#endif - - return mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0); -#endif -} - -static FFTS_INLINE void -ffts_vmem_free(void *addr, size_t length) -{ -#ifdef _WIN32 - (void) length; - VirtualFree(addr, 0, MEM_RELEASE); -#else - munmap(addr, length); -#endif -} - -FFTS_API void -ffts_execute(ffts_plan_t *p, const void *in, void *out) -{ - /* TODO: Define NEEDS_ALIGNED properly instead */ -#if defined(HAVE_SSE) || defined(HAVE_NEON) - if (((uintptr_t) in % 16) != 0) { - LOG("ffts_execute: input buffer needs to be aligned to a 128bit boundary\n"); - } - - if (((uintptr_t) out % 16) != 0) { - LOG("ffts_execute: output buffer needs to be aligned to a 128bit boundary\n"); - } -#endif - - p->transform(p, (const float*) in, (float*) out); -} - -FFTS_API void -ffts_free(ffts_plan_t *p) -{ - if (p) { - p->destroy(p); - } -} - -static void -ffts_free_1d(ffts_plan_t *p) -{ -#if !defined(DYNAMIC_DISABLED) - if (p->transform_base) { - ffts_deny_execute(p->transform_base, p->transform_size); - ffts_vmem_free(p->transform_base, p->transform_size); - } -#endif - - if (p->ws_is) { - free(p->ws_is); - } - - if (p->ws) { - ffts_aligned_free(p->ws); - } - - if (p->is) { - free(p->is); - } - - if (p->offsets) { - free(p->offsets); - } - - free(p); -} - -static int -ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) -{ - V4SF MULI_SIGN; - size_t n_luts; - ffts_cpx_32f *w; - ffts_cpx_32f *tmp; - size_t i, j, m, n; - int stride; - - if (sign < 0) { - MULI_SIGN = V4SF_LIT4(-0.0f, 0.0f, -0.0f, 0.0f); - } else { - MULI_SIGN = V4SF_LIT4(0.0f, -0.0f, 0.0f, -0.0f); - } - - /* LUTS */ - n_luts = ffts_ctzl(N / leaf_N); - if (n_luts >= 32) { - n_luts = 0; - } - - if (n_luts) { - size_t lut_size; - -#if defined(__arm__) && !defined(HAVE_NEON) - lut_size = leaf_N * (((1 << n_luts) - 2) * 3 + 1) * sizeof(ffts_cpx_32f) / 2; -#else - lut_size = leaf_N * (((1 << n_luts) - 2) * 3 + 1) * sizeof(ffts_cpx_32f); -#endif - - p->ws = ffts_aligned_malloc(lut_size); - if (!p->ws) { - goto cleanup; - } - - p->ws_is = (size_t*) malloc(n_luts * sizeof(*p->ws_is)); - if (!p->ws_is) { - goto cleanup; - } - } - - w = p->ws; - n = leaf_N * 2; - -#ifdef HAVE_NEON - V4SF neg = (sign < 0) ? V4SF_LIT4(0.0f, 0.0f, 0.0f, 0.0f) : V4SF_LIT4(-0.0f, -0.0f, -0.0f, -0.0f); -#endif - - /* calculate factors */ - m = leaf_N << (n_luts - 2); - tmp = ffts_aligned_malloc(m * sizeof(ffts_cpx_32f)); - - ffts_generate_cosine_sine_pow2_32f(tmp, m); - - /* generate lookup tables */ - stride = 1 << (n_luts - 1); - for (i = 0; i < n_luts; i++) { - p->ws_is[i] = w - (ffts_cpx_32f*) p->ws; - - if (!i) { - ffts_cpx_32f *w0 = ffts_aligned_malloc(n/4 * sizeof(ffts_cpx_32f)); - float *fw0 = (float*) w0; - float *fw = (float*) w; - - for (j = 0; j < n/4; j++) { - w0[j][0] = tmp[j * stride][0]; - w0[j][1] = tmp[j * stride][1]; - } - -#if defined(__arm__) -#ifdef HAVE_NEON - for (j = 0; j < n/4; j += 4) { - V4SF2 temp0 = V4SF2_LD(fw0 + j*2); - temp0.val[1] = V4SF_XOR(temp0.val[1], neg); - V4SF2_STORE_SPR(fw + j*2, temp0); - } -#else - for (j = 0; j < n/4; j++) { - fw[j*2+0] = fw0[j*2+0]; - fw[j*2+1] = (sign < 0) ? fw0[j*2+1] : -fw0[j*2+1]; - } -#endif - w += n/4; -#else - for (j = 0; j < n/4; j += 2) { - V4SF re, im, temp0; - temp0 = V4SF_LD(fw0 + j*2); - re = V4SF_DUPLICATE_RE(temp0); - im = V4SF_DUPLICATE_IM(temp0); - im = V4SF_XOR(im, MULI_SIGN); - V4SF_ST(fw + j*4 + 0, re); - V4SF_ST(fw + j*4 + 4, im); - } - - w += n/4 * 2; -#endif - - ffts_aligned_free(w0); - } else { - ffts_cpx_32f *w0 = (ffts_cpx_32f*) ffts_aligned_malloc(n/8 * sizeof(ffts_cpx_32f)); - ffts_cpx_32f *w1 = (ffts_cpx_32f*) ffts_aligned_malloc(n/8 * sizeof(ffts_cpx_32f)); - ffts_cpx_32f *w2 = (ffts_cpx_32f*) ffts_aligned_malloc(n/8 * sizeof(ffts_cpx_32f)); - - float *fw0 = (float*) w0; - float *fw1 = (float*) w1; - float *fw2 = (float*) w2; - - float *fw = (float *)w; - - for (j = 0; j < n/8; j++) { - w0[j][0] = tmp[2 * j * stride][0]; - w0[j][1] = tmp[2 * j * stride][1]; - - w1[j][0] = tmp[j * stride][0]; - w1[j][1] = tmp[j * stride][1]; - - w2[j][0] = tmp[(j + (n/8)) * stride][0]; - w2[j][1] = tmp[(j + (n/8)) * stride][1]; - } - -#if defined(__arm__) -#ifdef HAVE_NEON - for (j = 0; j < n/8; j += 4) { - V4SF2 temp0, temp1, temp2; - - temp0 = V4SF2_LD(fw0 + j*2); - temp0.val[1] = V4SF_XOR(temp0.val[1], neg); - V4SF2_STORE_SPR(fw + j*2*3, temp0); - - temp1 = V4SF2_LD(fw1 + j*2); - temp1.val[1] = V4SF_XOR(temp1.val[1], neg); - V4SF2_STORE_SPR(fw + j*2*3 + 8, temp1); - - temp2 = V4SF2_LD(fw2 + j*2); - temp2.val[1] = V4SF_XOR(temp2.val[1], neg); - V4SF2_STORE_SPR(fw + j*2*3 + 16, temp2); - } -#else - for (j = 0; j < n/8; j++) { - fw[j*6+0] = fw0[j*2+0]; - fw[j*6+1] = (sign < 0) ? fw0[j*2+1] : -fw0[j*2+1]; - fw[j*6+2] = fw1[j*2+0]; - fw[j*6+3] = (sign < 0) ? fw1[j*2+1] : -fw1[j*2+1]; - fw[j*6+4] = fw2[j*2+0]; - fw[j*6+5] = (sign < 0) ? fw2[j*2+1] : -fw2[j*2+1]; - } -#endif - w += n/8 * 3; -#else - for (j = 0; j < n/8; j += 2) { - V4SF temp0, temp1, temp2, re, im; - - temp0 = V4SF_LD(fw0 + j*2); - re = V4SF_DUPLICATE_RE(temp0); - im = V4SF_DUPLICATE_IM(temp0); - im = V4SF_XOR(im, MULI_SIGN); - V4SF_ST(fw + j*2*6+0, re); - V4SF_ST(fw + j*2*6+4, im); - - temp1 = V4SF_LD(fw1 + j*2); - re = V4SF_DUPLICATE_RE(temp1); - im = V4SF_DUPLICATE_IM(temp1); - im = V4SF_XOR(im, MULI_SIGN); - V4SF_ST(fw + j*2*6+8 , re); - V4SF_ST(fw + j*2*6+12, im); - - temp2 = V4SF_LD(fw2 + j*2); - re = V4SF_DUPLICATE_RE(temp2); - im = V4SF_DUPLICATE_IM(temp2); - im = V4SF_XOR(im, MULI_SIGN); - V4SF_ST(fw + j*2*6+16, re); - V4SF_ST(fw + j*2*6+20, im); - } - - w += n/8 * 3 * 2; -#endif - - ffts_aligned_free(w0); - ffts_aligned_free(w1); - ffts_aligned_free(w2); - } - - n *= 2; - stride >>= 1; - } - -#if defined(HAVE_NEON) - if (sign < 0) { - p->oe_ws = (void*)(w_data + 4); - p->ee_ws = (void*)(w_data); - p->eo_ws = (void*)(w_data + 4); - } else { - p->oe_ws = (void*)(w_data + 12); - p->ee_ws = (void*)(w_data + 8); - p->eo_ws = (void*)(w_data + 12); - } -#endif - - ffts_aligned_free(tmp); - - p->lastlut = w; - p->n_luts = n_luts; - return 0; - -cleanup: - return -1; -} - -#ifdef FFTS_DOUBLE -static int -ffts_generate_luts_64f(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) -{ - V4DF MULI_SIGN; - size_t n_luts; - ffts_cpx_64f *w; - ffts_cpx_64f *tmp; - size_t i, j, m, n; - int stride; - - if (sign < 0) { - MULI_SIGN = V4DF_LIT4(-0.0, 0.0, -0.0, 0.0); - } else { - MULI_SIGN = V4DF_LIT4(0.0, -0.0, 0.0, -0.0); - } - - /* LUTS */ - n_luts = ffts_ctzl(N / leaf_N); - if (n_luts >= 32) { - n_luts = 0; - } - - if (n_luts) { - size_t lut_size; - - lut_size = leaf_N * (((1 << n_luts) - 2) * 3 + 1) * sizeof(ffts_cpx_64f); - - p->ws = ffts_aligned_malloc(lut_size); - if (!p->ws) { - goto cleanup; - } - - p->ws_is = (size_t*) malloc(n_luts * sizeof(*p->ws_is)); - if (!p->ws_is) { - goto cleanup; - } - } - - w = p->ws; - n = leaf_N * 2; - - /* calculate factors */ - m = leaf_N << (n_luts - 2); - tmp = ffts_aligned_malloc(m * sizeof(ffts_cpx_64f)); - - ffts_generate_cosine_sine_pow2_64f(tmp, m); - - /* generate lookup tables */ - stride = 1 << (n_luts - 1); - for (i = 0; i < n_luts; i++) { - p->ws_is[i] = w - (ffts_cpx_64f*) p->ws; - - if (!i) { - ffts_cpx_64f *w0 = ffts_aligned_malloc(n/4 * sizeof(ffts_cpx_64f)); - double *fw0 = (double*) w0; - double *fw = (double*) w; - - for (j = 0; j < n/4; j++) { - w0[j][0] = tmp[j * stride][0]; - w0[j][1] = tmp[j * stride][1]; - } - - for (j = 0; j < n/4; j += 2) { - V4DF re, im, temp0; - temp0 = V4DF_LD(fw0 + j*2); - re = V4DF_DUPLICATE_RE(temp0); - im = V4DF_DUPLICATE_IM(temp0); - im = V4DF_XOR(im, MULI_SIGN); - V4DF_ST(fw + j*4 + 0, re); - V4DF_ST(fw + j*4 + 4, im); - } - - w += n/4 * 2; - ffts_aligned_free(w0); - } else { - ffts_cpx_64f *w0 = (ffts_cpx_64f*) ffts_aligned_malloc(n/8 * sizeof(ffts_cpx_64f)); - ffts_cpx_64f *w1 = (ffts_cpx_64f*) ffts_aligned_malloc(n/8 * sizeof(ffts_cpx_64f)); - ffts_cpx_64f *w2 = (ffts_cpx_64f*) ffts_aligned_malloc(n/8 * sizeof(ffts_cpx_64f)); - - double *fw0 = (double*) w0; - double *fw1 = (double*) w1; - double *fw2 = (double*) w2; - - double *fw = (double*)w; - - for (j = 0; j < n/8; j++) { - w0[j][0] = tmp[2 * j * stride][0]; - w0[j][1] = tmp[2 * j * stride][1]; - - w1[j][0] = tmp[j * stride][0]; - w1[j][1] = tmp[j * stride][1]; - - w2[j][0] = tmp[(j + (n/8)) * stride][0]; - w2[j][1] = tmp[(j + (n/8)) * stride][1]; - } - - for (j = 0; j < n/8; j += 2) { - V4DF temp0, temp1, temp2, re, im; - - temp0 = V4DF_LD(fw0 + j*2); - re = V4DF_DUPLICATE_RE(temp0); - im = V4DF_DUPLICATE_IM(temp0); - im = V4DF_XOR(im, MULI_SIGN); - V4DF_ST(fw + j*2*6+0, re); - V4DF_ST(fw + j*2*6+4, im); - - temp1 = V4DF_LD(fw1 + j*2); - re = V4DF_DUPLICATE_RE(temp1); - im = V4DF_DUPLICATE_IM(temp1); - im = V4DF_XOR(im, MULI_SIGN); - V4DF_ST(fw + j*2*6+8 , re); - V4DF_ST(fw + j*2*6+12, im); - - temp2 = V4DF_LD(fw2 + j*2); - re = V4DF_DUPLICATE_RE(temp2); - im = V4DF_DUPLICATE_IM(temp2); - im = V4DF_XOR(im, MULI_SIGN); - V4DF_ST(fw + j*2*6+16, re); - V4DF_ST(fw + j*2*6+20, im); - } - - w += n/8 * 3 * 2; - ffts_aligned_free(w0); - ffts_aligned_free(w1); - ffts_aligned_free(w2); - } - - n *= 2; - stride >>= 1; - } - - ffts_aligned_free(tmp); - - p->lastlut = w; - p->n_luts = n_luts; - return 0; - -cleanup: - return -1; -} -#endif - -FFTS_API ffts_plan_t* -ffts_init_1d(size_t N, int sign) -{ - const size_t leaf_N = 8; - ffts_plan_t *p; - - if (N < 2) { - LOG("FFT size must be greater than 1"); - return NULL; - } - - /* check if size is not a power of two */ - if (N & (N - 1)) { - return ffts_chirp_z_init(N, sign); - } - - p = (ffts_plan_t*) calloc(1, sizeof(*p)); - if (!p) { - return NULL; - } - - p->destroy = ffts_free_1d; - p->N = N; - - if (N >= 32) { - /* generate lookup tables */ - if (ffts_generate_luts(p, N, leaf_N, sign)) { - goto cleanup; - } - - p->offsets = ffts_init_offsets(N, leaf_N); - if (!p->offsets) { - goto cleanup; - } - - p->is = ffts_init_is(N, leaf_N, 1); - if (!p->is) { - goto cleanup; - } - - p->i0 = N/leaf_N/3 + 1; - p->i1 = p->i2 = N/leaf_N/3; - if ((N/leaf_N) % 3 > 1) { - p->i1++; - } - -#if !defined(HAVE_VFP) || defined(DYNAMIC_DISABLED) - p->i0 /= 2; - p->i1 /= 2; -#endif - -#ifdef DYNAMIC_DISABLED - if (sign < 0) { - p->transform = ffts_static_transform_f_32f; - } else { - p->transform = ffts_static_transform_i_32f; - } -#else - /* determinate transform size */ -#if defined(__arm__) - if (N < 8192) { - p->transform_size = 8192; - } else { - p->transform_size = N; - } -#else - if (N < 2048) { - p->transform_size = 16384; - } else { - p->transform_size = 16384 + 2*N/8 * ffts_ctzl(N); - } -#endif - - /* allocate code/function buffer */ - p->transform_base = ffts_vmem_alloc(p->transform_size); - if (!p->transform_base) { - goto cleanup; - } - - /* generate code */ - p->transform = ffts_generate_func_code(p, N, leaf_N, sign); - if (!p->transform) { - goto cleanup; - } - - /* enable execution with read access for the block */ - if (ffts_allow_execute(p->transform_base, p->transform_size)) { - goto cleanup; - } - - /* flush from the instruction cache */ - if (ffts_flush_instruction_cache(p->transform_base, p->transform_size)) { - goto cleanup; - } -#endif - } else { - switch (N) { - case 2: - p->transform = &ffts_small_2_32f; - break; - case 4: - if (sign == -1) { - p->transform = &ffts_small_forward4_32f; - } else if (sign == 1) { - p->transform = &ffts_small_backward4_32f; - } - break; - case 8: - if (sign == -1) { - p->transform = &ffts_small_forward8_32f; - } else if (sign == 1) { - p->transform = &ffts_small_backward8_32f; - } - break; - case 16: - default: - if (sign == -1) { - p->transform = &ffts_small_forward16_32f; - } else { - p->transform = &ffts_small_backward16_32f; - } - break; - } - } - - return p; - -cleanup: - ffts_free_1d(p); - return NULL; -} - -#ifdef FFTS_DOUBLE -FFTS_API ffts_plan_t* -ffts_init_1d_64f(size_t N, int sign) -{ - const size_t leaf_N = 8; - ffts_plan_t *p; - - if (N < 2) { - LOG("FFT size must be greater than 1"); - return NULL; - } - - p = (ffts_plan_t*) calloc(1, sizeof(*p)); - if (!p) { - return NULL; - } - - p->destroy = ffts_free_1d; - p->N = N; - - if (N >= 32) { - /* generate lookup tables */ - if (ffts_generate_luts_64f(p, N, leaf_N, sign)) { - goto cleanup; - } - - p->offsets = ffts_init_offsets(N, leaf_N); - if (!p->offsets) { - goto cleanup; - } - - p->is = ffts_init_is(N, leaf_N, 1); - if (!p->is) { - goto cleanup; - } - - p->i0 = N/leaf_N/3 + 1; - p->i1 = p->i2 = N/leaf_N/3; - if ((N/leaf_N) % 3 > 1) { - p->i1++; - } - - p->i0 /= 2; - p->i1 /= 2; - - if (sign < 0) { - p->transform = ffts_static_transform_f_64f; - } else { - p->transform = ffts_static_transform_i_64f; - } - } else { - switch (N) { - case 2: - p->transform = &ffts_small_2_64f; - break; - case 4: - if (sign == -1) { - p->transform = &ffts_small_forward4_64f; - } else if (sign == 1) { - p->transform = &ffts_small_backward4_64f; - } - break; - case 8: - if (sign == -1) { - p->transform = &ffts_small_forward8_64f; - } else if (sign == 1) { - p->transform = &ffts_small_backward8_64f; - } - break; - case 16: - default: - if (sign == -1) { - p->transform = &ffts_small_forward16_64f; - } else { - p->transform = &ffts_small_backward16_64f; - } - break; - } - } - - return p; - -cleanup: - ffts_free_1d(p); - return NULL; -} -#else -FFTS_API ffts_plan_t* -ffts_init_1d_64f(size_t N, int sign) -{ - /* disabled */ - return NULL; -} -#endif \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/ffts_attributes.h b/FFTS/Sources/FFTS/src/ffts_attributes.h deleted file mode 100644 index bdfd616..0000000 --- a/FFTS/Sources/FFTS/src/ffts_attributes.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, Anthony M. Blake - Copyright (c) 2012, The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_ATTRIBUTES_H -#define FFTS_ATTRIBUTES_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Macro definitions for various function/variable attributes */ -#ifdef __GNUC__ -#define GCC_VERSION_AT_LEAST(x,y) \ - (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y) -#else -#define GCC_VERSION_AT_LEAST(x,y) 0 -#endif - -#ifdef __GNUC__ -#define FFTS_ALIGN(x) __attribute__((aligned(x))) -#elif defined(_MSC_VER) -#define FFTS_ALIGN(x) __declspec(align(x)) -#else -#define FFTS_ALIGN(x) -#endif - -#if GCC_VERSION_AT_LEAST(3,1) -#define FFTS_ALWAYS_INLINE __attribute__((always_inline)) inline -#elif defined(_MSC_VER) -#define FFTS_ALWAYS_INLINE __forceinline -#else -#define FFTS_ALWAYS_INLINE inline -#endif - -#if defined(_MSC_VER) -#define FFTS_INLINE __inline -#else -#define FFTS_INLINE inline -#endif - -#if defined(__GNUC__) -#define FFTS_RESTRICT __restrict -#elif defined(_MSC_VER) -#define FFTS_RESTRICT __restrict -#else -#define FFTS_RESTRICT -#endif - -#if GCC_VERSION_AT_LEAST(4,5) -#define FFTS_ASSUME(cond) do { if (!(cond)) __builtin_unreachable(); } while (0) -#elif defined(_MSC_VER) -#define FFTS_ASSUME(cond) __assume(cond) -#else -#define FFTS_ASSUME(cond) -#endif - -#if GCC_VERSION_AT_LEAST(4,7) -#define FFTS_ASSUME_ALIGNED_16(x) __builtin_assume_aligned(x, 16) -#else -#define FFTS_ASSUME_ALIGNED_16(x) x -#endif - -#if GCC_VERSION_AT_LEAST(4,7) -#define FFTS_ASSUME_ALIGNED_32(x) __builtin_assume_aligned(x, 32) -#else -#define FFTS_ASSUME_ALIGNED_32(x) x -#endif - -#if defined(__GNUC__) -#define FFTS_LIKELY(cond) __builtin_expect(!!(cond), 1) -#else -#define FFTS_LIKELY(cond) cond -#endif - -#if defined(__GNUC__) -#define FFTS_UNLIKELY(cond) __builtin_expect(!!(cond), 0) -#else -#define FFTS_UNLIKELY(cond) cond -#endif - -#endif /* FFTS_ATTRIBUTES_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_chirp_z.c b/FFTS/Sources/FFTS/src/ffts_chirp_z.c deleted file mode 100644 index e463a55..0000000 --- a/FFTS/Sources/FFTS/src/ffts_chirp_z.c +++ /dev/null @@ -1,225 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2016, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_chirp_z.h" - -#include "ffts_internal.h" -#include "ffts_trig.h" - -/* -* For more information on algorithms: -* -* L. I. Bluestein, A linear filtering approach to the computation of -* the discrete Fourier transform, 1968 NEREM Rec., pp. 218-219 -* -* Lawrence R. Rabiner, Ronald W. Schafer, Charles M. Rader, -* The Chirp z-Transform Algorithm and Its Application -* Bell Sys. Tech. J., vol. 48, pp. 1249-1292, May 1969. -* -* Rick Lyons, Four Ways to Compute an Inverse FFT Using the Forward FFT Algorithm -* https://www.dsprelated.com/showarticle/800.php, July 7, 2015 -*/ - -/* forward declarations */ -static void -ffts_chirp_z_transform_f_32f(struct _ffts_plan_t *p, const void *in, void *out); - -static void -ffts_chirp_z_transform_i_32f(struct _ffts_plan_t *p, const void *in, void *out); - -static void -ffts_chirp_z_free(ffts_plan_t *p) -{ - if (p->B) - ffts_aligned_free(p->B); - - if (p->A) - ffts_aligned_free(p->A); - - if (p->buf) - ffts_aligned_free(p->buf); - - if (p->plans[0]) - ffts_free(p->plans[0]); - - free(p); -} - -ffts_plan_t* -ffts_chirp_z_init(size_t N, int sign) -{ - float *A, *B, reciprocal_M, *tmp; - ffts_plan_t *p; - size_t i, M; - - FFTS_ASSUME(N > 2); - - p = (ffts_plan_t*) calloc(1, sizeof(*p) + sizeof(*p->plans)); - if (!p) - return NULL; - - p->destroy = ffts_chirp_z_free; - p->N = N; - p->rank = 1; - p->plans = (ffts_plan_t**) &p[1]; - - if (sign < 0) - p->transform = ffts_chirp_z_transform_f_32f; - else - p->transform = ffts_chirp_z_transform_i_32f; - - /* determinate next power of two such that M >= 2*N-1 */ - M = ffts_next_power_of_2(2*N-1); - p->plans[0] = ffts_init_1d(M, FFTS_FORWARD); - if (!p->plans[0]) - goto cleanup; - - p->A = A = (float*) ffts_aligned_malloc(2 * N * sizeof(float)); - if (!p->A) - goto cleanup; - - p->B = B = (float*) ffts_aligned_malloc(2 * M * sizeof(float)); - if (!p->B) - goto cleanup; - - p->buf = tmp = (float*) ffts_aligned_malloc(2 * 2 * M * sizeof(float)); - - ffts_generate_chirp_32f((ffts_cpx_32f*) A, N); - - /* scale with reciprocal of length */ - reciprocal_M = 1.0f / M; - tmp[0] = A[0] * reciprocal_M; - tmp[1] = A[1] * reciprocal_M; - for (i = 1; i < N; ++i) { - tmp[2 * i + 0] = tmp[2 * (M - i) + 0] = A[2 * i + 0] * reciprocal_M; - tmp[2 * i + 1] = tmp[2 * (M - i) + 1] = A[2 * i + 1] * reciprocal_M; - } - - /* zero pad */ - for (; i <= M - N; ++i) - tmp[2 * i] = tmp[2 * i + 1] = 0.0f; - - /* FFT */ - p->plans[0]->transform(p->plans[0], tmp, B); - return p; - -cleanup: - ffts_chirp_z_free(p); - return NULL; -} - -static void -ffts_chirp_z_transform_f_32f(struct _ffts_plan_t *p, const void *in, void *out) -{ - const float *A = FFTS_ASSUME_ALIGNED_32(p->A); - const float *B = FFTS_ASSUME_ALIGNED_32(p->B); - size_t i, M = p->plans[0]->N, N = p->N; - float *t1 = (float*) FFTS_ASSUME_ALIGNED_32(p->buf); - float *t2 = FFTS_ASSUME_ALIGNED_32(&t1[2 * M]); - const float *din = (const float*) in; - float *dout = (float*) out; - - /* we know this */ - FFTS_ASSUME(M >= 8); - - /* multiply input with conjugated sequence */ - for (i = 0; i < N; ++i) { - t1[2 * i + 0] = din[2 * i + 0] * A[2 * i + 0] + din[2 * i + 1] * A[2 * i + 1]; - t1[2 * i + 1] = din[2 * i + 1] * A[2 * i + 0] - din[2 * i + 0] * A[2 * i + 1]; - } - - /* zero pad */ - for (; i < M; ++i) - t1[2 * i] = t1[2 * i + 1] = 0.0f; - - /* convolution using FFT */ - p->plans[0]->transform(p->plans[0], t1, t2); - - /* complex multiply */ - for (i = 0; i < M; ++i) { - t1[2 * i + 0] = t2[2 * i + 1] * B[2 * i + 0] + t2[2 * i + 0] * B[2 * i + 1]; - t1[2 * i + 1] = t2[2 * i + 0] * B[2 * i + 0] - t2[2 * i + 1] * B[2 * i + 1]; - } - - /* IFFT using FFT with real and imaginary parts swapped */ - p->plans[0]->transform(p->plans[0], t1, t2); - - /* multiply output with conjugated sequence */ - for (i = 0; i < N; ++i) { - dout[2 * i + 0] = t2[2 * i + 1] * A[2 * i + 0] + t2[2 * i + 0] * A[2 * i + 1]; - dout[2 * i + 1] = t2[2 * i + 0] * A[2 * i + 0] - t2[2 * i + 1] * A[2 * i + 1]; - } -} - -/* IFFT using FFT with real and imaginary parts swapped */ -static void -ffts_chirp_z_transform_i_32f(struct _ffts_plan_t *p, const void *in, void *out) -{ - const float *A = FFTS_ASSUME_ALIGNED_32(p->A); - const float *B = FFTS_ASSUME_ALIGNED_32(p->B); - size_t i, M = p->plans[0]->N, N = p->N; - float *t1 = (float*) FFTS_ASSUME_ALIGNED_32(p->buf); - float *t2 = FFTS_ASSUME_ALIGNED_32(&t1[2 * M]); - const float *din = (const float*) in; - float *dout = (float*) out; - - /* we know this */ - FFTS_ASSUME(M >= 8); - - /* multiply input with conjugated sequence */ - for (i = 0; i < N; ++i) { - t1[2 * i + 0] = din[2 * i + 1] * A[2 * i + 0] + din[2 * i + 0] * A[2 * i + 1]; - t1[2 * i + 1] = din[2 * i + 0] * A[2 * i + 0] - din[2 * i + 1] * A[2 * i + 1]; - } - - /* zero pad */ - for (; i < M; ++i) - t1[2 * i] = t1[2 * i + 1] = 0.0f; - - /* convolution using FFT */ - p->plans[0]->transform(p->plans[0], t1, t2); - - /* complex multiply */ - for (i = 0; i < M; ++i) { - t1[2 * i + 0] = t2[2 * i + 1] * B[2 * i + 0] + t2[2 * i + 0] * B[2 * i + 1]; - t1[2 * i + 1] = t2[2 * i + 0] * B[2 * i + 0] - t2[2 * i + 1] * B[2 * i + 1]; - } - - /* IFFT using FFT with real and imaginary parts swapped */ - p->plans[0]->transform(p->plans[0], t1, t2); - - /* multiply output with conjugated sequence */ - for (i = 0; i < N; ++i) { - dout[2 * i + 0] = t2[2 * i + 0] * A[2 * i + 0] - t2[2 * i + 1] * A[2 * i + 1]; - dout[2 * i + 1] = t2[2 * i + 1] * A[2 * i + 0] + t2[2 * i + 0] * A[2 * i + 1]; - } -} diff --git a/FFTS/Sources/FFTS/src/ffts_chirp_z.h b/FFTS/Sources/FFTS/src/ffts_chirp_z.h deleted file mode 100644 index 2a6aa7b..0000000 --- a/FFTS/Sources/FFTS/src/ffts_chirp_z.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2016, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_CHIRP_Z_H -#define FFTS_CHIRP_Z_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts.h" - -ffts_plan_t* -ffts_chirp_z_init(size_t N, int sign); - -#endif /* FFTS_CHIRP_Z_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_cpu.c b/FFTS/Sources/FFTS/src/ffts_cpu.c deleted file mode 100644 index daf92c8..0000000 --- a/FFTS/Sources/FFTS/src/ffts_cpu.c +++ /dev/null @@ -1,371 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_cpu.h" - -#if defined(FFTS_BUILDING_CPU_TEST) -#include -#endif - -#if defined(_WIN32) -#include -#include -#endif - -/* TODO: add detection/declaration of these to CMake phase */ -#if !defined(FFTS_CPU_X64) -#if defined(_M_AMD64) || defined(__amd64) || defined(__amd64__) || defined(_M_X64) || defined(__x86_64) || defined(__x86_64__) -/* 64 bit x86 detected */ -#define FFTS_CPU_X64 -#endif -#endif - -#if !defined(FFTS_CPU_X64) && !defined(FFTS_CPU_X86) -#if defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__X86__) || defined(_X86_) -/* 32 bit x86 detected */ -#define FFTS_CPU_X86 -#endif -#endif - -/* check if build is 32 bit or 64 bit x86 */ -#if defined(FFTS_CPU_X64) || defined(FFTS_CPU_X86) - -/* Build and tested on -CentOS 6.8 2.6.32-642.11.1.el6.x86_64 - gcc version 4.4.7 20120313 -Mac OSX 10.9 - Apple Clang 6.0 -Ubuntu 14.04 LTS 4.2.0-42 x86_64 - gcc version 4.8.4 -Windows XP SP3 - Visual Studio 2005 SP1 x86/x64 -Windows Vista SP2 - Visual Studio 2010 SP1 x86/x64 -Windows 7 Ultimate SP1 - Visual Studio 2015 x86/x64 -Windows 7 Ultimate SP1 - gcc version 4.9.2 (i686-posix-dwarf-rev1) -Windows 7 Ultimate SP1 - gcc version 4.9.2 (x86_64-posix-seh-rev3) -Windows 10 Pro - Visual Studio 2017 x86/x64 -*/ - -/* Visual Studio 2010 SP1 or newer have _xgetbv intrinsic */ -#if (defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 160040219) -#define FFTS_HAVE_XGETBV -#endif - -#ifndef BIT -#define BIT(n) (1u << n) -#endif - -/* bit masks */ -#define FFTS_CPU_X86_SSE_BITS (BIT(0) | BIT(15) | BIT(23) | BIT(24) | BIT(25)) -#define FFTS_CPU_X86_SSE2_BITS (BIT(26)) -#define FFTS_CPU_X86_SSE3_BITS (BIT(0)) -#define FFTS_CPU_X86_SSSE3_BITS (BIT(9)) -#define FFTS_CPU_X86_SSE4_1_BITS (BIT(19)) -#define FFTS_CPU_X86_SSE4_2_BITS (BIT(20) | BIT(23)) -#define FFTS_CPU_X86_AVX_BITS (BIT(26) | BIT(27) | BIT(28)) -#define FFTS_CPU_X86_XCR0_BITS ( -#define FFTS_CPU_X86_AVX2_BITS (BIT(5)) -#define FFTS_CPU_X86_AVX512_BITS (BIT(16)) - -/* Visual Studio 2008 or older */ -#if defined(FFTS_CPU_X64) && defined(_MSC_VER) && _MSC_VER <= 1500 -#pragma optimize("", off) -static void __fastcall ffts_cpuidex(int subleaf, int regs[4], int leaf) -{ - /* x64 uses a four register fast-call calling convention by default and - arguments are passed in registers RCX, RDX, R8, and R9. By disabling - optimization and passing subleaf as first argument we get __cpuidex - */ - (void) subleaf; - __cpuid(regs, leaf); -} -#pragma optimize("", on) -#endif - -static FFTS_INLINE void ffts_cpuid(int regs[4], int leaf, int subleaf) -{ -#if defined(_MSC_VER) -#if defined(FFTS_CPU_X64) - /* Visual Studio 2010 or newer */ -#if _MSC_VER > 1500 - __cpuidex(regs, leaf, subleaf); -#else - ffts_cpuidex(subleaf, regs, leaf); -#endif -#else - __asm { - mov eax, leaf - mov ecx, subleaf - mov esi, regs - cpuid - mov [esi + 0x0], eax - mov [esi + 0x4], ebx - mov [esi + 0x8], ecx - mov [esi + 0xc], edx - } -#endif -#elif defined(__GNUC__) && __GNUC__ -#if defined(FFTS_CPU_X64) - __asm__ __volatile__( - "cpuid\n\t" - : "=a"(regs[0]), "=b"(regs[1]), "=c"(regs[2]), "=d"(regs[3]) - : "a"(leaf), "c"(subleaf)); -#elif defined(__PIC__) - __asm__ __volatile__( - "xchgl %%ebx, %1\n\t" - "cpuid \n\t" - "xchgl %%ebx, %1\n\t" - : "=a"(regs[0]), "=r"(regs[1]), "=c"(regs[2]), "=d"(regs[3]) - : "a"(leaf), "c"(subleaf)); -#else - __asm__ __volatile__( - "cpuid\n\t" - : "=a"(regs[0]), "=b"(regs[1]), "=c"(regs[2]), "=d"(regs[3]) - : "a"(leaf), "c"(subleaf)); -#endif -#else - /* unknown compiler for x86 */ - regs[0] = regs[1] = regs[2] = regs[3] = 0; -#endif -} - -/* at least Visual Studio 2010 generates invalidate optimized _xgetbv */ -#if defined(FFTS_HAVE_XGETBV) -#pragma optimize("", off) -#endif -static FFTS_INLINE unsigned int ffts_get_xcr0(void) -{ -#if defined(FFTS_HAVE_XGETBV) - return (unsigned int) _xgetbv(0); -#elif defined(_MSC_VER) -#if defined(FFTS_CPU_X64) - /* emulate xgetbv(0) on Windows 7 SP1 or newer */ - typedef DWORD64 (WINAPI *PGETENABLEDXSTATEFEATURES)(VOID); - PGETENABLEDXSTATEFEATURES pfnGetEnabledXStateFeatures = - (PGETENABLEDXSTATEFEATURES) GetProcAddress( - GetModuleHandle(TEXT("kernel32.dll")), "GetEnabledXStateFeatures"); - return pfnGetEnabledXStateFeatures ? (unsigned int) pfnGetEnabledXStateFeatures() : 0; -#else - /* note that we have to touch edx register to tell compiler it's used by emited xgetbv */ - unsigned __int32 hi, lo; - __asm { - xor ecx, ecx - _emit 0x0f - _emit 0x01 - _emit 0xd0 - mov lo, eax - mov hi, edx - } - return (unsigned int) lo; -#endif -#elif defined(__GNUC__) && __GNUC__ - unsigned int lo; - __asm__ __volatile__(".byte 0x0f, 0x01, 0xd0\n" - : "=a"(lo) - : "c"(0) - : "edx"); - return lo; -#else - /* unknown x86 compiler */ - return 0; -#endif -} -#if defined(FFTS_HAVE_XGETBV) -#pragma optimize("", on) -#endif - -int -ffts_cpu_detect(int *extra_flags) -{ - static int cpu_flags = -1; - static int cpu_extra_flags = -1; - int max_basic_func; - int regs[4]; - unsigned int xcr0; - - if (cpu_flags >= 0) { - goto exit; - } - - /* initialize */ - cpu_flags = cpu_extra_flags = 0; - -#if defined(FFTS_BUILDING_CPU_TEST) - printf("cpuid check: "); -#endif -#if defined(FFTS_CPU_X64) - /* cpuid is always supported on x64 */ -#if defined(FFTS_BUILDING_CPU_TEST) - printf("skipped\n"); -#endif -#else -#if defined(_MSC_VER) - _asm { - pushfd - pop eax - mov ebx,eax - xor eax,200000h - push eax - popfd - pushfd - pop eax - push ebx - popfd - mov regs[0 * TYPE regs],eax - mov regs[1 * TYPE regs],ebx - } -#else - __asm__ ( - "pushfl\n\t" - "pop %0\n\t" - "movl %0,%1\n\t" - "xorl $0x200000,%0\n\t" - "pushl %0\n\t" - "popfl\n\t" - "pushfl\n\t" - "popl %0\n\t" - "pushl %1\n\t" - "popfl\n\t" - : "=r" (regs[0]), "=r" (regs[1]) - ); -#endif - /* check CPUID bit (bit 21) in EFLAGS register can be toggled */ - if (((regs[0] ^ regs[1]) & 0x200000) == 0) { -#if defined(FFTS_BUILDING_CPU_TEST) - printf("not supported\n"); -#endif - goto exit; - } -#if defined(FFTS_BUILDING_CPU_TEST) - printf("supported\n"); -#endif -#endif - - /* get the number of basic functions */ - ffts_cpuid(regs, 0, 0); - max_basic_func = regs[0]; -#if defined(FFTS_BUILDING_CPU_TEST) - printf("cpuid eax=0, ecx=0: %d\n", max_basic_func); -#endif - if (max_basic_func == 0) - goto exit; - - /* get feature flags */ - ffts_cpuid(regs, 1, 0); - -#if defined(FFTS_BUILDING_CPU_TEST) - printf("cpuid eax=1, ecx=0: eax=%08x ebx=%08x ecx=%08x edx=%08x\n", regs[0], regs[1], regs[2], regs[3]); -#endif - -#if defined(FFTS_CPU_X64) - /* minimum for any x64 */ - cpu_flags = FFTS_CPU_X86_SSE | FFTS_CPU_X86_SSE2; -#else - /* test if SSE is supported */ - if ((regs[3] & FFTS_CPU_X86_SSE_BITS) != FFTS_CPU_X86_SSE_BITS) - goto exit; - cpu_flags = FFTS_CPU_X86_SSE; - - /* test if SSE2 is supported */ - if (!(regs[3] & FFTS_CPU_X86_SSE2_BITS)) - goto exit; - cpu_flags |= FFTS_CPU_X86_SSE2; -#endif - - /* test if SSE3 is supported */ - if (!(regs[2] & FFTS_CPU_X86_SSE3_BITS)) - goto exit; - cpu_flags |= FFTS_CPU_X86_SSE3; - - /* test if SSSE3 is supported */ - if (!(regs[2] & FFTS_CPU_X86_SSSE3_BITS)) - goto exit; - cpu_flags |= FFTS_CPU_X86_SSSE3; - - /* test if SSE4.1 is supported */ - if (!(regs[2] & FFTS_CPU_X86_SSE4_1_BITS)) - goto exit; - cpu_flags |= FFTS_CPU_X86_SSE4_1; - - /* test if SSE4.2 is supported */ - if ((regs[2] & FFTS_CPU_X86_SSE4_2_BITS) != FFTS_CPU_X86_SSE4_2_BITS) - goto exit; - cpu_flags |= FFTS_CPU_X86_SSE4_2; - - /* test if AVX is supported */ - if ((regs[2] & FFTS_CPU_X86_AVX_BITS) != FFTS_CPU_X86_AVX_BITS) - goto exit; - - /* test if legaxy x87, 128-bit SSE and 256-bit AVX states are enabled in XCR0 */ - xcr0 = ffts_get_xcr0(); -#if defined(FFTS_BUILDING_CPU_TEST) - printf("xcr0: %u\n", xcr0); -#endif - if ((xcr0 & 0x6) != 0x6) - goto exit; - - cpu_flags |= FFTS_CPU_X86_AVX; - - /* check that cpuid extended features exist */ - if (max_basic_func < 7) - goto exit; - - /* get extended features */ - ffts_cpuid(regs, 7, 0); - -#if defined(FFTS_BUILDING_CPU_TEST) - printf("cpuid eax=7, ecx=0: eax=%08x ebx=%08x ecx=%08x edx=%08x\n", regs[0], regs[1], regs[2], regs[3]); -#endif - - /* test if AVX2 is supported */ - if ((regs[1] & FFTS_CPU_X86_AVX2_BITS) != FFTS_CPU_X86_AVX2_BITS) - goto exit; - cpu_flags |= FFTS_CPU_X86_AVX2; - - /* test if AVX512 is supported */ - if ((regs[1] & FFTS_CPU_X86_AVX512_BITS) != FFTS_CPU_X86_AVX512_BITS) - goto exit; - cpu_flags |= FFTS_CPU_X86_AVX512; - -exit: - if (extra_flags) { - *extra_flags = cpu_extra_flags; - } - return cpu_flags; -} -#else -int -ffts_cpu_detect(int *extra_flags) -{ - /* not implemented */ -#if defined(FFTS_BUILDING_CPU_TEST) - printf("CPU detection not implemented!!\n"); -#endif - return 0; -} -#endif \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/ffts_cpu.h b/FFTS/Sources/FFTS/src/ffts_cpu.h deleted file mode 100644 index 37d77e4..0000000 --- a/FFTS/Sources/FFTS/src/ffts_cpu.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_CPU_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts_internal.h" - -#define FFTS_CPU_X86_SSE 0x001 -#define FFTS_CPU_X86_SSE2 0x002 -#define FFTS_CPU_X86_SSE3 0x004 -#define FFTS_CPU_X86_SSSE3 0x008 -#define FFTS_CPU_X86_SSE4_1 0x010 -#define FFTS_CPU_X86_SSE4_2 0x020 -#define FFTS_CPU_X86_AVX 0x040 -#define FFTS_CPU_X86_AVX2 0x080 -#define FFTS_CPU_X86_AVX512 0x100 - -int -ffts_cpu_detect(int *extra_flags); - -#endif /* FFTS_CPU_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_dd.h b/FFTS/Sources/FFTS/src/ffts_dd.h deleted file mode 100644 index f8bbee4..0000000 --- a/FFTS/Sources/FFTS/src/ffts_dd.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2015, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_DD_H -#define FFTS_DD_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts_attributes.h" - -#if HAVE_SSE2 -#include -#endif - -/* double-double number */ -struct ffts_dd_t -{ - double hi; - double lo; -}; - -#if HAVE_SSE2 -/* double-double vector */ -struct ffts_dd2_t { - __m128d hi; - __m128d lo; -}; -#endif - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_add_dd_unnormalized(const struct ffts_dd_t a, - const struct ffts_dd_t b); - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_mul_dd_unnormalized(const struct ffts_dd_t a, - const struct ffts_dd_t b); - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_split(double a); - -/* aka quick-two-sum */ -static FFTS_INLINE struct ffts_dd_t -ffts_dd_add(double a, double b) -{ - struct ffts_dd_t dd; - dd.hi = a + b; - dd.lo = b - (dd.hi - a); - return dd; -} - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_add_dd(const struct ffts_dd_t a, - const struct ffts_dd_t b) -{ - struct ffts_dd_t t1 = ffts_dd_add_dd_unnormalized(a, b); - return ffts_dd_add(t1.hi, t1.lo); -} - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_add_dd_unnormalized(const struct ffts_dd_t a, - const struct ffts_dd_t b) -{ - struct ffts_dd_t dd; - double e1; - dd.hi = a.hi + b.hi; - e1 = dd.hi - a.hi; - dd.lo = ((a.hi - (dd.hi - e1)) + (b.hi - e1)) + (a.lo + b.lo); - return dd; -} - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_mul(const double a, const double b) -{ - struct ffts_dd_t dd; - struct ffts_dd_t t1 = ffts_dd_split(a); - struct ffts_dd_t t2 = ffts_dd_split(b); - dd.hi = a * b; - dd.lo = (t1.hi * t2.hi - dd.hi); - dd.lo += (t1.hi * t2.lo + t1.lo * t2.hi); - dd.lo += t1.lo * t2.lo; - return dd; -} - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_mul_dd(const struct ffts_dd_t a, - const struct ffts_dd_t b) -{ - struct ffts_dd_t dd = ffts_dd_mul_dd_unnormalized(a, b); - return ffts_dd_add(dd.hi, dd.lo); -} - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_mul_dd_unnormalized(const struct ffts_dd_t a, - const struct ffts_dd_t b) -{ - struct ffts_dd_t dd = ffts_dd_mul(a.hi, b.hi); - dd.lo += (a.hi * b.lo + a.lo * b.hi); - return dd; -} - -static FFTS_INLINE struct ffts_dd_t -ffts_dd_split(double a) -{ - /* 2^27+1 = 134217729 */ - struct ffts_dd_t dd; - double t = 134217729.0 * a; - dd.hi = t - (t - a); - dd.lo = a - dd.hi; - return dd; -} - -#if HAVE_SSE2 -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_add_dd2_unnormalized(const struct ffts_dd2_t *const FFTS_RESTRICT a, - const struct ffts_dd2_t *const FFTS_RESTRICT b); - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_mul_dd2_unnormalized(const struct ffts_dd2_t *const FFTS_RESTRICT a, - const struct ffts_dd2_t *const FFTS_RESTRICT b); - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_split(__m128d a); - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_add(__m128d a, __m128d b) -{ - struct ffts_dd2_t dd2; - dd2.hi = _mm_add_pd(a, b); - dd2.lo = _mm_sub_pd(b, _mm_sub_pd(dd2.hi, a)); - return dd2; -} - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_add_dd2(const struct ffts_dd2_t *const FFTS_RESTRICT a, - const struct ffts_dd2_t *const FFTS_RESTRICT b) -{ - struct ffts_dd2_t t1 = ffts_dd2_add_dd2_unnormalized(a, b); - return ffts_dd2_add(t1.hi, t1.lo); -} - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_add_dd2_unnormalized(const struct ffts_dd2_t *const FFTS_RESTRICT a, - const struct ffts_dd2_t *const FFTS_RESTRICT b) -{ - struct ffts_dd2_t dd2; - __m128d e1; - dd2.hi = _mm_add_pd(a->hi, b->hi); - e1 = _mm_sub_pd(dd2.hi, a->hi); - dd2.lo = _mm_add_pd(_mm_add_pd(_mm_sub_pd(a->hi, _mm_sub_pd(dd2.hi, e1)), - _mm_sub_pd(b->hi, e1)), _mm_add_pd(a->lo, b->lo)); - return dd2; -} - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_mul(const __m128d a, const __m128d b) -{ - struct ffts_dd2_t dd2; - struct ffts_dd2_t t1 = ffts_dd2_split(a); - struct ffts_dd2_t t2 = ffts_dd2_split(b); - dd2.hi = _mm_mul_pd(a, b); - dd2.lo = _mm_add_pd(_mm_add_pd(_mm_sub_pd( - _mm_mul_pd(t1.hi, t2.hi), dd2.hi), - _mm_add_pd(_mm_mul_pd(t1.hi, t2.lo), - _mm_mul_pd(t1.lo, t2.hi))), - _mm_mul_pd(t1.lo, t2.lo)); - return dd2; -} - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_mul_dd2(const struct ffts_dd2_t *const FFTS_RESTRICT a, - const struct ffts_dd2_t *const FFTS_RESTRICT b) -{ - struct ffts_dd2_t dd2 = ffts_dd2_mul_dd2_unnormalized(a, b); - return ffts_dd2_add(dd2.hi, dd2.lo); -} - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_mul_dd2_unnormalized(const struct ffts_dd2_t *const FFTS_RESTRICT a, - const struct ffts_dd2_t *const FFTS_RESTRICT b) -{ - struct ffts_dd2_t dd2 = ffts_dd2_mul(a->hi, b->hi); - dd2.lo = _mm_add_pd(dd2.lo, _mm_add_pd( - _mm_mul_pd(a->hi, b->lo), _mm_mul_pd(a->lo, b->hi))); - return dd2; -} - -static FFTS_INLINE struct ffts_dd2_t -ffts_dd2_split(__m128d a) -{ - /* 2^27+1 = 134217729 */ - struct ffts_dd2_t dd2; - __m128d t = _mm_mul_pd(a, _mm_set1_pd(134217729.0)); - dd2.hi = _mm_sub_pd(t, _mm_sub_pd(t, a)); - dd2.lo = _mm_sub_pd(a, dd2.hi); - return dd2; -} -#endif /* HAVE_SSE2 */ - -#endif /* FFTS_DD_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_internal.h b/FFTS/Sources/FFTS/src/ffts_internal.h deleted file mode 100644 index 04ebb9c..0000000 --- a/FFTS/Sources/FFTS/src/ffts_internal.h +++ /dev/null @@ -1,310 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2015-2016, Jukka Ojanen -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_INTERNAL_H -#define FFTS_INTERNAL_H - -#ifdef AUTOTOOLS_BUILD -#include "config.h" -#endif - -#include "ffts_attributes.h" -#include "types.h" - -#ifdef HAVE_MALLOC_H -#include -#endif - -#ifdef HAVE_MM_ALLOC_H -#include -#ifndef HAVE__MM_MALLOC -#define HAVE__MM_MALLOC -#endif -#endif - -#include - -#ifdef HAVE_INTTYPES_H -#include -#elif HAVE_STDINT_H -#include -#elif _MSC_VER -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; -#else -typedef signed long int int32_t; -typedef unsigned long int uint32_t; -typedef signed long long int int64_t; -typedef unsigned long long int uint64_t; -#endif - -#ifdef HAVE_STDLIB_H -#include -#endif - -#ifdef HAVE_STRING_H -#include -#endif - -#include - -#if defined(HAVE_DECL_MEMALIGN) && !HAVE_DECL_MEMALIGN -extern void *memalign(size_t, size_t); -#endif - -#if defined(HAVE_DECL_POSIX_MEMALIGN) && !HAVE_DECL_POSIX_MEMALIGN -extern int posix_memalign(void **, size_t, size_t); -#endif - -#if defined(HAVE_DECL_VALLOC) && !HAVE_DECL_VALLOC -extern void *valloc(size_t); -#endif - -#ifdef _mm_malloc -#ifndef HAVE__MM_MALLOC -#define HAVE__MM_MALLOC -#endif -#endif - -#ifdef ENABLE_LOG -#ifdef __ANDROID__ -#include -#define LOG(s) __android_log_print(ANDROID_LOG_ERROR, "FFTS", s) -#else -#define LOG(s) fprintf(stderr, s) -#endif -#else -#define LOG(s) -#endif - -struct _ffts_plan_t; -typedef void (*transform_func_t)(struct _ffts_plan_t *p, const void *in, void *out); - -/** - * Contains all the Information need to perform FFT - * - * - * DO NOT CHANGE THE ORDER OF MEMBERS - * ASSEMBLY CODE USES HARD CODED OFFSETS TO REFERENCE - * SOME OF THESE VARIABES!! - */ -struct _ffts_plan_t { - - /** - * - */ - ptrdiff_t *offsets; -#ifdef DYNAMIC_DISABLED - /** - * Twiddle factors - */ - void *ws; - - /** - * ee - 2 size x size8 - * oo - 2 x size4 in parallel - * oe - - */ - void *oe_ws, *eo_ws, *ee_ws; -#else - void FFTS_ALIGN(32) *ws; - void FFTS_ALIGN(32) *oe_ws, *eo_ws, *ee_ws; -#endif - - /** - * Pointer into an array of precomputed indexes for the input data array - */ - ptrdiff_t *is; - - /** - * Twiddle Factor Indexes - */ - size_t *ws_is; - - /** - * Size of the loops for the base cases - */ - size_t i0, i1, n_luts; - - /** - * Size fo the Transform - */ - size_t N; - void *lastlut; - -#ifdef __arm__ - size_t *temporary_fix_as_dynamic_code_assumes_fixed_offset; -#endif - - /** - * Pointer to the dynamically generated function - * that will execute the FFT - */ - transform_func_t transform; - - /** - * Pointer to the base memory address of - * of the transform function - */ - void *transform_base; - - /** - * Size of the memory block contain the - * generated code - */ - size_t transform_size; - - /* pointer to the constant variable used by SSE for sign change */ - /* TODO: #ifdef HAVE_SSE */ - const void *constants; - - // multi-dimensional stuff: - struct _ffts_plan_t **plans; - int rank; - size_t *Ns, *Ms; - void *buf; - - void *transpose_buf; - - /** - * Pointer to the destroy function - * to clean up the plan after use - * (differs for real and multi dimension transforms - */ - void (*destroy)(struct _ffts_plan_t *); - - /** - * Coefficiants for the real valued transforms - */ - float *A, *B; - - size_t i2; -}; - -static FFTS_INLINE void* -ffts_aligned_malloc(size_t size) -{ - void *p = NULL; - - /* various ways to allocate aligned memory in order of preferance */ -#if defined(__ICC) || defined(__INTEL_COMPILER) || defined(HAVE__MM_MALLOC) - p = (void*) _mm_malloc(size, 32); -#elif defined(HAVE_POSIX_MEMALIGN) - if (posix_memalign(&p, 32, size)) - p = NULL; -#elif defined(HAVE_MEMALIGN) - p = memalign(32, size); -#elif defined(__ALTIVEC__) - p = vec_malloc(size); -#elif defined(_MSC_VER) || defined(WIN32) - p = _aligned_malloc(size, 32); -#elif defined(HAVE_VALLOC) - p = valloc(size); -#else - p = malloc(size); -#endif - - return p; -} - -static FFTS_INLINE -void ffts_aligned_free(void *p) -{ - /* order must match with ffts_aligned_malloc */ -#if defined(__ICC) || defined(__INTEL_COMPILER) || defined(HAVE__MM_MALLOC) - _mm_free(p); -#elif defined(HAVE_POSIX_MEMALIGN) || defined(HAVE_MEMALIGN) - free(p); -#elif defined(__ALTIVEC__) - vec_free(p); -#elif defined(_MSC_VER) || defined(WIN32) - _aligned_free(p); -#else - /* valloc or malloc */ - free(p); -#endif -} - -#if GCC_VERSION_AT_LEAST(3,3) -#define ffts_ctzl __builtin_ctzl - -static FFTS_INLINE size_t -ffts_next_power_of_2(size_t N) -{ - return 1 << (32 - __builtin_clzl(N)); -} -#elif defined(_MSC_VER) -#include -#ifdef _M_X64 -#pragma intrinsic(_BitScanForward64) -static FFTS_INLINE unsigned long -ffts_ctzl(size_t N) -{ - unsigned long count; - _BitScanForward64((unsigned long*) &count, N); - return count; -} - -#pragma intrinsic(_BitScanReverse64) -static FFTS_INLINE size_t -ffts_next_power_of_2(size_t N) -{ - unsigned long log_2; - _BitScanReverse64((unsigned long*)&log_2, N); - return 1ULL << (log_2 + 1); -} -#else -#pragma intrinsic(_BitScanForward) -static FFTS_INLINE unsigned long -ffts_ctzl(size_t N) -{ - unsigned long count; - _BitScanForward((unsigned long*) &count, N); - return count; -} - -#pragma intrinsic(_BitScanReverse) -static FFTS_INLINE size_t -ffts_next_power_of_2(size_t N) -{ - unsigned long log_2; - _BitScanReverse((unsigned long*)&log_2, N); - return 1 << (log_2 + 1); -} -#endif /* _WIN64 */ -#endif /* _MSC_VER */ - -#endif /* FFTS_INTERNAL_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_nd.c b/FFTS/Sources/FFTS/src/ffts_nd.c deleted file mode 100644 index 64220f1..0000000 --- a/FFTS/Sources/FFTS/src/ffts_nd.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2016, Jukka Ojanen -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_nd.h" -#include "ffts_internal.h" -#include "ffts_transpose.h" - -static void -ffts_free_nd(ffts_plan_t *p) -{ - if (p->plans) { - int i, j; - - for (i = 0; i < p->rank; i++) { - ffts_plan_t *plan = p->plans[i]; - - if (plan) { - for (j = 0; j < i; j++) { - if (p->Ns[i] == p->Ns[j]) { - plan = NULL; - break; - } - } - - if (plan) { - ffts_free(plan); - } - } - } - - free(p->plans); - } - - if (p->Ns) { - free(p->Ns); - } - - if (p->Ms) { - free(p->Ms); - } - - if (p->buf) { - ffts_aligned_free(p->buf); - } - - free(p); -} - -static void -ffts_execute_nd(ffts_plan_t *p, const void *in, void *out) -{ - uint64_t *din = (uint64_t*) in; - uint64_t *buf = p->buf; - uint64_t *dout = (uint64_t*) out; - - ffts_plan_t *plan; - int i; - size_t j; - - plan = p->plans[0]; - for (j = 0; j < p->Ms[0]; j++) { - plan->transform(plan, din + (j * p->Ns[0]), buf + (j * p->Ns[0])); - } - - ffts_transpose(buf, dout, p->Ns[0], p->Ms[0]); - - for (i = 1; i < p->rank; i++) { - plan = p->plans[i]; - - for (j = 0; j < p->Ms[i]; j++) { - plan->transform(plan, dout + (j * p->Ns[i]), buf + (j * p->Ns[i])); - } - - ffts_transpose(buf, dout, p->Ns[i], p->Ms[i]); - } -} - -FFTS_API ffts_plan_t* -ffts_init_nd(int rank, size_t *Ns, int sign) -{ - ffts_plan_t *p; - size_t vol = 1; - int i, j; - - if (!Ns) { - return NULL; - } - - if (rank == 1) { - return ffts_init_1d(Ns[0], sign); - } - - p = calloc(1, sizeof(*p)); - if (!p) { - return NULL; - } - - p->transform = &ffts_execute_nd; - p->destroy = &ffts_free_nd; - p->rank = rank; - - p->Ms = malloc(rank * sizeof(*p->Ms)); - if (!p->Ms) { - goto cleanup; - } - - p->Ns = malloc(rank * sizeof(*p->Ns)); - if (!p->Ns) { - goto cleanup; - } - - /* reverse the order */ - for (i = 0; i < rank; i++) { - size_t N = Ns[rank - i - 1]; - p->Ns[i] = N; - vol *= N; - } - - p->buf = ffts_aligned_malloc(2 * vol * sizeof(float)); - if (!p->buf) { - goto cleanup; - } - - p->plans = calloc(rank, sizeof(*p->plans)); - if (!p->plans) { - goto cleanup; - } - - for (i = 0; i < rank; i++) { - p->Ms[i] = vol / p->Ns[i]; - - for (j = 0; j < i; j++) { - if (p->Ns[i] == p->Ns[j]) { - p->plans[i] = p->plans[j]; - break; - } - } - - if (!p->plans[i]) { - p->plans[i] = ffts_init_1d(p->Ns[i], sign); - if (!p->plans) { - goto cleanup; - } - } - } - - return p; - -cleanup: - ffts_free_nd(p); - return NULL; -} - -FFTS_API ffts_plan_t* -ffts_init_2d(size_t N1, size_t N2, int sign) -{ - size_t Ns[2]; - - Ns[0] = N1; /* x */ - Ns[1] = N2; /* y */ - return ffts_init_nd(2, Ns, sign); -} diff --git a/FFTS/Sources/FFTS/src/ffts_nd.h b/FFTS/Sources/FFTS/src/ffts_nd.h deleted file mode 100644 index 1998cc6..0000000 --- a/FFTS/Sources/FFTS/src/ffts_nd.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_ND_H -#define FFTS_ND_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts.h" -#include - -ffts_plan_t* -ffts_init_nd(int rank, size_t *Ns, int sign); - -ffts_plan_t* -ffts_init_2d(size_t N1, size_t N2, int sign); - -#endif /* FFTS_ND_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_real.c b/FFTS/Sources/FFTS/src/ffts_real.c deleted file mode 100644 index e0f0e1f..0000000 --- a/FFTS/Sources/FFTS/src/ffts_real.c +++ /dev/null @@ -1,802 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato -Copyright (c) 2015 - 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_real.h" -#include "ffts_cpu.h" -#include "ffts_internal.h" -#include "ffts_trig.h" - -#ifdef HAVE_NEON -#include -#elif HAVE_SSE -#include - -/* check if have SSE3 intrinsics */ -#ifdef HAVE_PMMINTRIN_H -#include -#elif HAVE_INTRIN_H -#include -#endif - -/* avoid using negative zero as some configurations have problems with those */ -static const FFTS_ALIGN(16) unsigned int sign_mask_even[4] = { - 0x80000000, 0, 0x80000000, 0 -}; -static const FFTS_ALIGN(16) unsigned int sign_mask_odd[4] = { - 0, 0x80000000, 0, 0x80000000 -}; -#endif - -static void -ffts_free_1d_real(ffts_plan_t *p) -{ - if (p->B) { - ffts_aligned_free(p->B); - } - - if (p->A) { - ffts_aligned_free(p->A); - } - - if (p->buf) { - ffts_aligned_free(p->buf); - } - - if (p->plans[0]) { - ffts_free(p->plans[0]); - } - - free(p); -} - -#ifdef __ARM_NEON__ -static void -ffts_execute_1d_real_neon(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT out = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(output); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - float *p_buf0 = buf; - float *p_buf1 = buf + N - 2; - float *p_out = out; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - p->plans[0]->transform(p->plans[0], input, buf); - - buf[N + 0] = buf[0]; - buf[N + 1] = buf[1]; - - for (i = 0; i < N; i += 4) { - __asm__ __volatile__ ( - "vld1.32 {q8}, [%[pa]]!\n\t" - "vld1.32 {q9}, [%[pb]]!\n\t" - "vld1.32 {q10}, [%[buf0]]!\n\t" - "vld1.32 {q11}, [%[buf1]]\n\t" - "sub %[buf1], %[buf1], #16\n\t" - - "vdup.32 d26, d16[1]\n\t" - "vdup.32 d27, d17[1]\n\t" - "vdup.32 d24, d16[0]\n\t" - "vdup.32 d25, d17[0]\n\t" - - "vdup.32 d30, d23[1]\n\t" - "vdup.32 d31, d22[1]\n\t" - "vdup.32 d28, d23[0]\n\t" - "vdup.32 d29, d22[0]\n\t" - - "vmul.f32 q13, q13, q10\n\t" - "vmul.f32 q15, q15, q9\n\t" - "vmul.f32 q12, q12, q10\n\t" - "vmul.f32 q14, q14, q9\n\t" - "vrev64.f32 q13, q13\n\t" - "vrev64.f32 q15, q15\n\t" - - "vtrn.32 d26, d27\n\t" - "vtrn.32 d30, d31\n\t" - "vneg.f32 d26, d26\n\t" - "vneg.f32 d31, d31\n\t" - "vtrn.32 d26, d27\n\t" - "vtrn.32 d30, d31\n\t" - - "vadd.f32 q12, q12, q14\n\t" - "vadd.f32 q13, q13, q15\n\t" - "vadd.f32 q12, q12, q13\n\t" - "vst1.32 {q12}, [%[pout]]!\n\t" - : [buf0] "+r" (p_buf0), [buf1] "+r" (p_buf1), [pout] "+r" (p_out) - : [pa] "r" (A), [pb] "r" (B) - : "memory", "q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15" - ); - } - - out[N + 0] = buf[0] - buf[1]; - out[N + 1] = 0.0f; -} -#endif - -#if HAVE_SSE3 -static void -ffts_execute_1d_real_sse3(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT out = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(output); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - p->plans[0]->transform(p->plans[0], input, buf); - - buf[N + 0] = buf[0]; - buf[N + 1] = buf[1]; - - if (FFTS_UNLIKELY(N <= 8)) { - __m128 t0 = _mm_load_ps(buf); - __m128 t1 = _mm_load_ps(buf + N - 4); - __m128 t2 = _mm_load_ps(A); - __m128 t3 = _mm_load_ps(B); - - _mm_store_ps(out, _mm_add_ps(_mm_addsub_ps( - _mm_mul_ps(t0, _mm_moveldup_ps(t2)), - _mm_mul_ps(_mm_shuffle_ps(t0, t0, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t2))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t0, t1, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t0, t1, _MM_SHUFFLE(2,2,0,0)), t3)))); - - if (N == 8) { - t2 = _mm_load_ps(A + 4); - t3 = _mm_load_ps(B + 4); - - _mm_store_ps(out + 4, _mm_add_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t2)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t2))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t1, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t1, t0, _MM_SHUFFLE(2,2,0,0)), t3)))); - } - } else { - __m128 t0 = _mm_load_ps(buf); - - for (i = 0; i < N; i += 16) { - __m128 t1 = _mm_load_ps(buf + i); - __m128 t2 = _mm_load_ps(buf + N - i - 4); - __m128 t3 = _mm_load_ps(A + i); - __m128 t4 = _mm_load_ps(B + i); - - _mm_store_ps(out + i, _mm_add_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), t4)))); - - t0 = _mm_load_ps(buf + N - i - 8); - t1 = _mm_load_ps(buf + i + 4); - t3 = _mm_load_ps(A + i + 4); - t4 = _mm_load_ps(B + i + 4); - - _mm_store_ps(out + i + 4, _mm_add_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), t4)))); - - t1 = _mm_load_ps(buf + i + 8); - t2 = _mm_load_ps(buf + N - i - 12); - t3 = _mm_load_ps(A + i + 8); - t4 = _mm_load_ps(B + i + 8); - - _mm_store_ps(out + i + 8, _mm_add_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), t4)))); - - t0 = _mm_load_ps(buf + N - i - 16); - t1 = _mm_load_ps(buf + i + 12); - t3 = _mm_load_ps(A + i + 12); - t4 = _mm_load_ps(B + i + 12); - - _mm_store_ps(out + i + 12, _mm_add_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), t4)))); - } - } - - out[N + 0] = buf[0] - buf[1]; - out[N + 1] = 0.0f; -} -#endif - -#ifdef HAVE_SSE -static void -ffts_execute_1d_real_sse(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT out = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(output); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - p->plans[0]->transform(p->plans[0], input, buf); - - if (FFTS_UNLIKELY(N <= 8)) { - __m128 c0 = _mm_load_ps((const float*) sign_mask_even); - __m128 t0 = _mm_load_ps(buf); - __m128 t1 = _mm_load_ps(buf + N - 4); - __m128 t2 = _mm_load_ps(A); - __m128 t3 = _mm_load_ps(B); - - _mm_store_ps(out, _mm_add_ps(_mm_add_ps(_mm_add_ps( - _mm_mul_ps(t0, _mm_shuffle_ps(t2, t2, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t0, t0, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t2, t2, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t0, t1, _MM_SHUFFLE(2,2,0,0)), t3)), - _mm_mul_ps(_mm_shuffle_ps(t0, t1, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(_mm_xor_ps(t3, c0), _mm_xor_ps(t3, c0), - _MM_SHUFFLE(2,3,0,1))))); - - if (N == 8) { - t2 = _mm_load_ps(A + 4); - t3 = _mm_load_ps(B + 4); - - _mm_store_ps(out + 4, _mm_add_ps(_mm_add_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t2, t2, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t2, t2, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t0, _MM_SHUFFLE(2,2,0,0)), t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(_mm_xor_ps(t3, c0), _mm_xor_ps(t3, c0), - _MM_SHUFFLE(2,3,0,1))))); - } - } else { - __m128 c0 = _mm_load_ps((const float*) sign_mask_even); - __m128 t0 = _mm_load_ps(buf); - - for (i = 0; i < N; i += 16) { - __m128 t1 = _mm_load_ps(buf + i); - __m128 t2 = _mm_load_ps(buf + N - i - 4); - __m128 t3 = _mm_load_ps(A + i); - __m128 t4 = _mm_load_ps(B + i); - - _mm_store_ps(out + i, _mm_add_ps(_mm_add_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), t4)), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(_mm_xor_ps(t4, c0), _mm_xor_ps(t4, c0), - _MM_SHUFFLE(2,3,0,1))))); - - t0 = _mm_load_ps(buf + N - i - 8); - t1 = _mm_load_ps(buf + i + 4); - t3 = _mm_load_ps(A + i + 4); - t4 = _mm_load_ps(B + i + 4); - - _mm_store_ps(out + i + 4, _mm_add_ps(_mm_add_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), t4)), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(_mm_xor_ps(t4, c0), _mm_xor_ps(t4, c0), - _MM_SHUFFLE(2,3,0,1))))); - - t1 = _mm_load_ps(buf + i + 8); - t2 = _mm_load_ps(buf + N - i - 12); - t3 = _mm_load_ps(A + i + 8); - t4 = _mm_load_ps(B + i + 8); - - _mm_store_ps(out + i + 8, _mm_add_ps(_mm_add_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), t4)), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(_mm_xor_ps(t4, c0), _mm_xor_ps(t4, c0), - _MM_SHUFFLE(2,3,0,1))))); - - t0 = _mm_load_ps(buf + N - i - 16); - t1 = _mm_load_ps(buf + i + 12); - t3 = _mm_load_ps(A + i + 12); - t4 = _mm_load_ps(B + i + 12); - - _mm_store_ps(out + i + 12, _mm_add_ps(_mm_add_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), t4)), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(_mm_xor_ps(t4, c0), _mm_xor_ps(t4, c0), - _MM_SHUFFLE(2,3,0,1))))); - } - } - - out[N + 0] = buf[0] - buf[1]; - out[N + 1] = 0.0f; -} -#endif - -static void -ffts_execute_1d_real(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT out = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(output); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - p->plans[0]->transform(p->plans[0], input, buf); - - buf[N + 0] = buf[0]; - buf[N + 1] = buf[1]; - - for (i = 0; i < N/2; i++) { - out[2*i + 0] = - buf[ 2*i + 0] * A[2*i + 0] - buf[ 2*i + 1] * A[2*i + 1] + - buf[N - 2*i + 0] * B[2*i + 0] + buf[N - 2*i + 1] * B[2*i + 1]; - out[2*i + 1] = - buf[ 2*i + 1] * A[2*i + 0] + buf[ 2*i + 0] * A[2*i + 1] + - buf[N - 2*i + 0] * B[2*i + 1] - buf[N - 2*i + 1] * B[2*i + 0]; - } - - out[N + 0] = buf[0] - buf[1]; - out[N + 1] = 0.0f; -} - -#ifdef __ARM_NEON__ -static void -ffts_execute_1d_real_inv_neon(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT in = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(input); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - float *p_buf0 = in; - float *p_buf1 = in + N - 2; - float *p_out = buf; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - for (i = 0; i < N/2; i += 2) { - __asm__ __volatile__ ( - "vld1.32 {q8}, [%[pa]]!\n\t" - "vld1.32 {q9}, [%[pb]]!\n\t" - "vld1.32 {q10}, [%[buf0]]!\n\t" - "vld1.32 {q11}, [%[buf1]]\n\t" - "sub %[buf1], %[buf1], #16\n\t" - - "vdup.32 d26, d16[1]\n\t" - "vdup.32 d27, d17[1]\n\t" - "vdup.32 d24, d16[0]\n\t" - "vdup.32 d25, d17[0]\n\t" - - "vdup.32 d30, d23[1]\n\t" - "vdup.32 d31, d22[1]\n\t" - "vdup.32 d28, d23[0]\n\t" - "vdup.32 d29, d22[0]\n\t" - - "vmul.f32 q13, q13, q10\n\t" - "vmul.f32 q15, q15, q9\n\t" - "vmul.f32 q12, q12, q10\n\t" - "vmul.f32 q14, q14, q9\n\t" - "vrev64.f32 q13, q13\n\t" - "vrev64.f32 q15, q15\n\t" - - "vtrn.32 d26, d27\n\t" - "vtrn.32 d28, d29\n\t" - "vneg.f32 d27, d27\n\t" - "vneg.f32 d29, d29\n\t" - "vtrn.32 d26, d27\n\t" - "vtrn.32 d28, d29\n\t" - - "vadd.f32 q12, q12, q14\n\t" - "vsub.f32 q13, q13, q15\n\t" - "vadd.f32 q12, q12, q13\n\t" - "vst1.32 {q12}, [%[pout]]!\n\t" - : [buf0] "+r" (p_buf0), [buf1] "+r" (p_buf1), [pout] "+r" (p_out) - : [pa] "r" (A), [pb] "r" (B) - : "memory", "q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15" - ); - } - - p->plans[0]->transform(p->plans[0], buf, output); -} -#endif - -#if HAVE_SSE3 -static void -ffts_execute_1d_real_inv_sse3(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT in = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(input); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - if (FFTS_UNLIKELY(N <= 8)) { - __m128 t0 = _mm_loadl_pi(_mm_setzero_ps(), (const __m64*) &in[N]); - __m128 t1 = _mm_load_ps(in); - __m128 t2 = _mm_load_ps(in + N - 4); - __m128 t3 = _mm_load_ps(A); - __m128 t4 = _mm_load_ps(B); - - _mm_store_ps(buf, _mm_sub_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), t4)))); - - if (N == 8) { - t3 = _mm_load_ps(A + 4); - t4 = _mm_load_ps(B + 4); - - _mm_store_ps(buf + 4, _mm_sub_ps(_mm_addsub_ps( - _mm_mul_ps(t2, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t2, t2, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t2, t1, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t2, t1, _MM_SHUFFLE(2,2,0,0)), t4)))); - } - } else { - __m128 t0 = _mm_loadl_pi(_mm_setzero_ps(), (const __m64*) &in[N]); - - for (i = 0; i < N; i += 16) { - __m128 t1 = _mm_load_ps(in + i); - __m128 t2 = _mm_load_ps(in + N - i - 4); - __m128 t3 = _mm_load_ps(A + i); - __m128 t4 = _mm_load_ps(B + i); - - _mm_store_ps(buf + i, _mm_sub_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), t4)))); - - t0 = _mm_load_ps(in + N - i - 8); - t1 = _mm_load_ps(in + i + 4); - t3 = _mm_load_ps(A + i + 4); - t4 = _mm_load_ps(B + i + 4); - - _mm_store_ps(buf + i + 4, _mm_sub_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), t4)))); - - t1 = _mm_load_ps(in + i + 8); - t2 = _mm_load_ps(in + N - i - 12); - t3 = _mm_load_ps(A + i + 8); - t4 = _mm_load_ps(B + i + 8); - - _mm_store_ps(buf + i + 8, _mm_sub_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), t4)))); - - t0 = _mm_load_ps(in + N - i - 16); - t1 = _mm_load_ps(in + i + 12); - t3 = _mm_load_ps(A + i + 12); - t4 = _mm_load_ps(B + i + 12); - - _mm_store_ps(buf + i + 12, _mm_sub_ps(_mm_addsub_ps( - _mm_mul_ps(t1, _mm_moveldup_ps(t3)), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_movehdup_ps(t3))), _mm_addsub_ps( - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), t4)))); - } - } - - p->plans[0]->transform(p->plans[0], buf, output); -} -#endif - -#if HAVE_SSE -static void -ffts_execute_1d_real_inv_sse(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT in = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(input); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - if (FFTS_UNLIKELY(N <= 8)) { - __m128 c0 = _mm_load_ps((const float*) sign_mask_odd); - __m128 t0 = _mm_loadl_pi(_mm_setzero_ps(), (const __m64*) &in[N]); - __m128 t1 = _mm_load_ps(in); - __m128 t2 = _mm_load_ps(in + N - 4); - __m128 t3 = _mm_load_ps(A); - __m128 t4 = _mm_load_ps(B); - - _mm_store_ps(buf, _mm_add_ps(_mm_sub_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1)))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), - _mm_xor_ps(t4, c0)))); - - if (N == 8) { - t3 = _mm_load_ps(A + 4); - t4 = _mm_load_ps(B + 4); - - _mm_store_ps(buf + 4, _mm_add_ps(_mm_sub_ps(_mm_add_ps( - _mm_mul_ps(t2, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t2, t2, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t2, t1, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1)))), - _mm_mul_ps(_mm_shuffle_ps(t2, t1, _MM_SHUFFLE(2,2,0,0)), - _mm_xor_ps(t4, c0)))); - } - } else { - __m128 c0 = _mm_load_ps((const float*) sign_mask_odd); - __m128 t0 = _mm_loadl_pi(_mm_setzero_ps(), (const __m64*) &in[N]); - - for (i = 0; i < N; i += 16) { - __m128 t1 = _mm_load_ps(in + i); - __m128 t2 = _mm_load_ps(in + N - i - 4); - __m128 t3 = _mm_load_ps(A + i); - __m128 t4 = _mm_load_ps(B + i); - - _mm_store_ps(buf + i, _mm_add_ps(_mm_sub_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1)))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), - _mm_xor_ps(t4, c0)))); - - t0 = _mm_load_ps(in + N - i - 8); - t1 = _mm_load_ps(in + i + 4); - t3 = _mm_load_ps(A + i + 4); - t4 = _mm_load_ps(B + i + 4); - - _mm_store_ps(buf + i + 4, _mm_add_ps(_mm_sub_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1)))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), - _mm_xor_ps(t4, c0)))); - - t1 = _mm_load_ps(in + i + 8); - t2 = _mm_load_ps(in + N - i - 12); - t3 = _mm_load_ps(A + i + 8); - t4 = _mm_load_ps(B + i + 8); - - _mm_store_ps(buf + i + 8, _mm_add_ps(_mm_sub_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1)))), - _mm_mul_ps(_mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2,2,0,0)), - _mm_xor_ps(t4, c0)))); - - t0 = _mm_load_ps(in + N - i - 16); - t1 = _mm_load_ps(in + i + 12); - t3 = _mm_load_ps(A + i + 12); - t4 = _mm_load_ps(B + i + 12); - - _mm_store_ps(buf + i + 12, _mm_add_ps(_mm_sub_ps(_mm_add_ps( - _mm_mul_ps(t1, _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(2,2,0,0))), - _mm_mul_ps(_mm_shuffle_ps(t1, t1, _MM_SHUFFLE(2,3,0,1)), - _mm_xor_ps(_mm_shuffle_ps(t3, t3, _MM_SHUFFLE(3,3,1,1)), c0))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(3,3,1,1)), - _mm_shuffle_ps(t4, t4, _MM_SHUFFLE(2,3,0,1)))), - _mm_mul_ps(_mm_shuffle_ps(t2, t0, _MM_SHUFFLE(2,2,0,0)), - _mm_xor_ps(t4, c0)))); - } - } - - p->plans[0]->transform(p->plans[0], buf, output); -} -#endif - -static void -ffts_execute_1d_real_inv(ffts_plan_t *p, const void *input, void *output) -{ - float *const FFTS_RESTRICT in = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_16(input); - float *const FFTS_RESTRICT buf = - (float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->buf); - const float *const FFTS_RESTRICT A = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->A); - const float *const FFTS_RESTRICT B = - (const float *const FFTS_RESTRICT) FFTS_ASSUME_ALIGNED_32(p->B); - const int N = (const int) p->N; - int i; - - /* we know this */ - FFTS_ASSUME(N/2 > 0); - - for (i = 0; i < N/2; i++) { - buf[2*i + 0] = - in[ 2*i + 0] * A[2*i + 0] + in[ 2*i + 1] * A[2*i + 1] + - in[N - 2*i + 0] * B[2*i + 0] - in[N - 2*i + 1] * B[2*i + 1]; - buf[2*i + 1] = - in[ 2*i + 1] * A[2*i + 0] - in[ 2*i + 0] * A[2*i + 1] - - in[N - 2*i + 0] * B[2*i + 1] - in[N - 2*i + 1] * B[2*i + 0]; - } - - p->plans[0]->transform(p->plans[0], buf, output); -} - -FFTS_API ffts_plan_t* -ffts_init_1d_real(size_t N, int sign) -{ -#ifndef __ARM_NEON__ - int cpu_flags = ffts_cpu_detect(NULL); -#endif - ffts_plan_t *p; - int invert = 0; - - p = (ffts_plan_t*) calloc(1, sizeof(*p) + sizeof(*p->plans)); - if (!p) { - return NULL; - } - -#ifdef __ARM_NEON__ - p->transform = (sign < 0) ? &ffts_execute_1d_real_neon : &ffts_execute_1d_real_inv; -#else -#ifdef HAVE_SSE3 - if (cpu_flags & FFTS_CPU_X86_SSE3) { - p->transform = (sign < 0) ? &ffts_execute_1d_real_sse3 : &ffts_execute_1d_real_inv_sse3; - invert = 1; - } else -#endif -#ifdef HAVE_SSE - if (cpu_flags & FFTS_CPU_X86_SSE) { - p->transform = (sign < 0) ? &ffts_execute_1d_real_sse : &ffts_execute_1d_real_inv_sse; - } else -#endif - { - p->transform = (sign < 0) ? &ffts_execute_1d_real : &ffts_execute_1d_real_inv; - } -#endif - - p->destroy = &ffts_free_1d_real; - p->N = N; - p->rank = 1; - p->plans = (ffts_plan_t**) &p[1]; - - p->plans[0] = ffts_init_1d(N/2, sign); - if (!p->plans[0]) { - goto cleanup; - } - - p->buf = ffts_aligned_malloc(2 * ((N/2) + 1) * sizeof(float)); - if (!p->buf) { - goto cleanup; - } - - p->A = (float*) ffts_aligned_malloc(N * sizeof(float)); - if (!p->A) { - goto cleanup; - } - - p->B = (float*) ffts_aligned_malloc(N * sizeof(float)); - if (!p->B) { - goto cleanup; - } - - ffts_generate_table_1d_real_32f(p, sign, invert); - return p; - -cleanup: - ffts_free_1d_real(p); - return NULL; -} \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/ffts_real.h b/FFTS/Sources/FFTS/src/ffts_real.h deleted file mode 100644 index 61d03d4..0000000 --- a/FFTS/Sources/FFTS/src/ffts_real.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_REAL_H -#define FFTS_REAL_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts.h" -#include - -ffts_plan_t* -ffts_init_1d_real(size_t N, int sign); - -#endif /* FFTS_REAL_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_real_nd.c b/FFTS/Sources/FFTS/src/ffts_real_nd.c deleted file mode 100644 index 89ef7f7..0000000 --- a/FFTS/Sources/FFTS/src/ffts_real_nd.c +++ /dev/null @@ -1,269 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_real_nd.h" -#include "ffts_real.h" -#include "ffts_internal.h" -#include "ffts_transpose.h" - -static void -ffts_free_nd_real(ffts_plan_t *p) -{ - if (p->plans) { - int i, j; - - for (i = 0; i < p->rank; i++) { - ffts_plan_t *plan = p->plans[i]; - - if (plan) { - for (j = 0; j < i; j++) { - if (p->Ns[i] == p->Ns[j]) { - plan = NULL; - break; - } - } - - if (plan) { - ffts_free(plan); - } - } - } - - free(p->plans); - } - - if (p->buf) { - ffts_aligned_free(p->buf); - } - - if (p->Ns) { - free(p->Ns); - } - - if (p->Ms) { - free(p->Ms); - } - - free(p); -} - -static void -ffts_execute_nd_real(ffts_plan_t *p, const void *in, void *out) -{ - const size_t Ms0 = p->Ms[0]; - const size_t Ns0 = p->Ns[0]; - - uint32_t *din = (uint32_t*) in; - uint64_t *buf = p->buf; - uint64_t *dout = (uint64_t*) out; - - ffts_plan_t *plan; - int i; - size_t j; - - plan = p->plans[0]; - for (j = 0; j < Ns0; j++) { - plan->transform(plan, din + (j * Ms0), buf + (j * (Ms0 / 2 + 1))); - } - - ffts_transpose(buf, dout, Ms0 / 2 + 1, Ns0); - - for (i = 1; i < p->rank; i++) { - const size_t Ms = p->Ms[i]; - const size_t Ns = p->Ns[i]; - - plan = p->plans[i]; - - for (j = 0; j < Ns; j++) { - plan->transform(plan, dout + (j * Ms), buf + (j * Ms)); - } - - ffts_transpose(buf, dout, Ms, Ns); - } -} - -static void -ffts_execute_nd_real_inv(ffts_plan_t *p, const void *in, void *out) -{ - const size_t Ms0 = p->Ms[0]; - const size_t Ms1 = p->Ms[1]; - const size_t Ns0 = p->Ns[0]; - const size_t Ns1 = p->Ns[1]; - - uint64_t *din = (uint64_t*) in; - uint64_t *buf = p->buf; - uint64_t *buf2; - float *doutr = (float*) out; - - ffts_plan_t *plan; - size_t vol; - - int i; - size_t j; - - vol = p->Ns[0]; - for (i = 1; i < p->rank; i++) { - vol *= p->Ns[i]; - } - - buf2 = buf + vol; - - ffts_transpose(din, buf, Ms0, Ns0); - - plan = p->plans[0]; - for (j = 0; j < Ms0; j++) { - plan->transform(plan, buf + (j * Ns0), buf2 + (j * Ns0)); - } - - ffts_transpose(buf2, buf, Ns0, Ms0); - - plan = p->plans[1]; - for (j = 0; j < Ms1; j++) { - plan->transform(plan, buf + (j * Ms0), &doutr[j * Ns1]); - } -} - -FFTS_API ffts_plan_t* -ffts_init_nd_real(int rank, size_t *Ns, int sign) -{ - int i; - size_t vol = 1; - size_t bufsize; - ffts_plan_t *p; - - p = (ffts_plan_t*) calloc(1, sizeof(*p)); - if (!p) { - return NULL; - } - - if (sign < 0) { - p->transform = &ffts_execute_nd_real; - } else { - p->transform = &ffts_execute_nd_real_inv; - } - - p->destroy = &ffts_free_nd_real; - p->rank = rank; - - p->Ms = (size_t*) malloc(rank * sizeof(*p->Ms)); - if (!p->Ms) { - goto cleanup; - } - - p->Ns = (size_t*) malloc(rank * sizeof(*p->Ns)); - if (!p->Ns) { - goto cleanup; - } - - for (i = 0; i < rank; i++) { - p->Ns[i] = Ns[i]; - vol *= Ns[i]; - } - - /* there is probably a prettier way of doing this, but it works.. */ - if (sign < 0) { - bufsize = 2 * vol; - } else { - bufsize = 2 * (Ns[0] * ((vol / Ns[0]) / 2 + 1) + vol); - } - - p->buf = ffts_aligned_malloc(bufsize * sizeof(float)); - if (!p->buf) { - goto cleanup; - } - - p->plans = (ffts_plan_t**) calloc(rank, sizeof(*p->plans)); - if (!p->plans) { - goto cleanup; - } - - for (i = 0; i < rank; i++) { - int k; - - p->Ms[i] = vol / p->Ns[i]; - - if (sign < 0) { - if (!i) { - p->plans[i] = ffts_init_1d_real(p->Ms[i], sign); - } else { - for (k = 1; k < i; k++) { - if (p->Ms[k] == p->Ms[i]) { - p->plans[i] = p->plans[k]; - break; - } - } - - if (!p->plans[i]) { - p->plans[i] = ffts_init_1d(p->Ms[i], sign); - p->Ns[i] = p->Ns[i] / 2 + 1; - } - } - } else { - if (i == rank - 1) { - p->plans[i] = ffts_init_1d_real(p->Ns[i], sign); - } else { - for (k = 0; k < i; k++) { - if (p->Ns[k] == p->Ns[i]) { - p->plans[i] = p->plans[k]; - break; - } - } - - if (!p->plans[i]) { - p->plans[i] = ffts_init_1d(p->Ns[i], sign); - p->Ms[i] = p->Ms[i] / 2 + 1; - } - } - } - - if (!p->plans[i]) { - goto cleanup; - } - } - - return p; - -cleanup: - ffts_free_nd_real(p); - return NULL; -} - -FFTS_API ffts_plan_t* -ffts_init_2d_real(size_t N1, size_t N2, int sign) -{ - size_t Ns[2]; - - Ns[0] = N1; - Ns[1] = N2; - return ffts_init_nd_real(2, Ns, sign); -} diff --git a/FFTS/Sources/FFTS/src/ffts_real_nd.h b/FFTS/Sources/FFTS/src/ffts_real_nd.h deleted file mode 100644 index fac607b..0000000 --- a/FFTS/Sources/FFTS/src/ffts_real_nd.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_REAL_ND_H -#define FFTS_REAL_ND_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts.h" -#include - -ffts_plan_t* -ffts_init_nd_real(int rank, size_t *Ns, int sign); - -ffts_plan_t* -ffts_init_2d_real(size_t N1, size_t N2, int sign); - -#endif /* FFTS_REAL_ND_H */ \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/ffts_static.c b/FFTS/Sources/FFTS/src/ffts_static.c deleted file mode 100644 index 87d8b23..0000000 --- a/FFTS/Sources/FFTS/src/ffts_static.c +++ /dev/null @@ -1,1724 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_static.h" - -#include "ffts_internal.h" -#include "macros.h" - -#if defined(HAVE_NEON) -#include "neon.h" -#endif - -#include - -static const FFTS_ALIGN(16) float ffts_constants_small_32f[24] = { - 1.0f, - 1.0f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - -0.0f, - 0.0f, - -0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - 1.0f, - 1.0f, - 0.9238795325112867561281831893967882868224166258636425f, - 0.9238795325112867561281831893967882868224166258636425f, - - -0.0f, - 0.0f, - -0.3826834323650897717284599840303988667613445624856270f, - 0.3826834323650897717284599840303988667613445624856270f, - - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.3826834323650897717284599840303988667613445624856270f, - 0.3826834323650897717284599840303988667613445624856270f, - - -0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - -0.9238795325112867561281831893967882868224166258636425f, - 0.9238795325112867561281831893967882868224166258636425f -}; - -static const FFTS_ALIGN(16) double ffts_constants_small_64f[24] = { - 1.0, - 1.0, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - -0.0, - 0.0, - -0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - 1.0, - 1.0, - 0.9238795325112867561281831893967882868224166258636425, - 0.9238795325112867561281831893967882868224166258636425, - - -0.0, - 0.0, - -0.3826834323650897717284599840303988667613445624856270, - 0.3826834323650897717284599840303988667613445624856270, - - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - 0.3826834323650897717284599840303988667613445624856270, - 0.3826834323650897717284599840303988667613445624856270, - - -0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - -0.9238795325112867561281831893967882868224166258636425, - 0.9238795325112867561281831893967882868224166258636425 -}; - -static const FFTS_ALIGN(16) float ffts_constants_small_inv_32f[24] = { - 1.0f, - 1.0f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - 0.0f, - -0.0f, - 0.7071067811865475244008443621048490392848359376884740f, - -0.7071067811865475244008443621048490392848359376884740f, - - 1.0f, - 1.0f, - 0.9238795325112867561281831893967882868224166258636425f, - 0.9238795325112867561281831893967882868224166258636425f, - - 0.0f, - -0.0f, - 0.3826834323650897717284599840303988667613445624856270f, - -0.3826834323650897717284599840303988667613445624856270f, - - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.3826834323650897717284599840303988667613445624856270f, - 0.3826834323650897717284599840303988667613445624856270f, - - 0.7071067811865475244008443621048490392848359376884740f, - -0.7071067811865475244008443621048490392848359376884740f, - 0.9238795325112867561281831893967882868224166258636425f, - -0.9238795325112867561281831893967882868224166258636425f -}; - -static const FFTS_ALIGN(16) double ffts_constants_small_inv_64f[24] = { - 1.0, - 1.0, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - 0.0, - -0.0, - 0.7071067811865475244008443621048490392848359376884740, - -0.7071067811865475244008443621048490392848359376884740, - - 1.0, - 1.0, - 0.9238795325112867561281831893967882868224166258636425, - 0.9238795325112867561281831893967882868224166258636425, - - 0.0, - -0.0, - 0.3826834323650897717284599840303988667613445624856270, - -0.3826834323650897717284599840303988667613445624856270, - - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - 0.3826834323650897717284599840303988667613445624856270, - 0.3826834323650897717284599840303988667613445624856270, - - 0.7071067811865475244008443621048490392848359376884740, - -0.7071067811865475244008443621048490392848359376884740, - 0.9238795325112867561281831893967882868224166258636425, - -0.9238795325112867561281831893967882868224166258636425 -}; - -static const FFTS_ALIGN(16) float ffts_constants_32f[16] = { - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - -0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - -0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - 1.0f, - 1.0f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - 0.0f, - 0.0f, - -0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f -}; - -static const FFTS_ALIGN(16) double ffts_constants_64f[16] = { - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - -0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - -0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - 1.0, - 1.0, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - 0.0, - 0.0, - -0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740 -}; - -static const FFTS_ALIGN(16) float ffts_constants_inv_32f[16] = { - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - 0.7071067811865475244008443621048490392848359376884740f, - -0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - -0.7071067811865475244008443621048490392848359376884740f, - - 1.0f, - 1.0f, - 0.7071067811865475244008443621048490392848359376884740f, - 0.7071067811865475244008443621048490392848359376884740f, - - 0.0f, - 0.0f, - 0.7071067811865475244008443621048490392848359376884740f, - -0.7071067811865475244008443621048490392848359376884740f -}; - -static const FFTS_ALIGN(16) double ffts_constants_inv_64f[16] = { - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - 0.7071067811865475244008443621048490392848359376884740, - -0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - -0.7071067811865475244008443621048490392848359376884740, - - 1.0, - 1.0, - 0.7071067811865475244008443621048490392848359376884740, - 0.7071067811865475244008443621048490392848359376884740, - - 0.0, - 0.0, - 0.7071067811865475244008443621048490392848359376884740, - -0.7071067811865475244008443621048490392848359376884740 -}; - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_K_0(int inv, - V4DF *r0, - V4DF *r1, - V4DF *r2, - V4DF *r3) -{ - V4DF t0, t1, t2, t3; - - t0 = *r0; - t1 = *r1; - - t2 = V4DF_ADD(*r2, *r3); - t3 = V4DF_IMULI(inv, V4DF_SUB(*r2, *r3)); - - *r0 = V4DF_ADD(t0, t2); - *r2 = V4DF_SUB(t0, t2); - *r1 = V4DF_SUB(t1, t3); - *r3 = V4DF_ADD(t1, t3); -} -#endif - -static FFTS_INLINE void -V4SF_K_0(int inv, - V4SF *r0, - V4SF *r1, - V4SF *r2, - V4SF *r3) -{ - V4SF t0, t1, t2, t3; - - t0 = *r0; - t1 = *r1; - - t2 = V4SF_ADD(*r2, *r3); - t3 = V4SF_IMULI(inv, V4SF_SUB(*r2, *r3)); - - *r0 = V4SF_ADD(t0, t2); - *r2 = V4SF_SUB(t0, t2); - *r1 = V4SF_SUB(t1, t3); - *r3 = V4SF_ADD(t1, t3); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_L_2(const double *FFTS_RESTRICT i0, - const double *FFTS_RESTRICT i1, - const double *FFTS_RESTRICT i2, - const double *FFTS_RESTRICT i3, - V4DF *r0, - V4DF *r1, - V4DF *r2, - V4DF *r3) -{ - V4DF t0, t1, t2, t3; - - t0 = V4DF_LD(i0); - t1 = V4DF_LD(i1); - t2 = V4DF_LD(i2); - t3 = V4DF_LD(i3); - - *r0 = V4DF_ADD(t0, t1); - *r1 = V4DF_SUB(t0, t1); - *r2 = V4DF_ADD(t2, t3); - *r3 = V4DF_SUB(t2, t3); -} -#endif - -static FFTS_INLINE void -V4SF_L_2(const float *FFTS_RESTRICT i0, - const float *FFTS_RESTRICT i1, - const float *FFTS_RESTRICT i2, - const float *FFTS_RESTRICT i3, - V4SF *r0, - V4SF *r1, - V4SF *r2, - V4SF *r3) -{ - V4SF t0, t1, t2, t3; - - t0 = V4SF_LD(i0); - t1 = V4SF_LD(i1); - t2 = V4SF_LD(i2); - t3 = V4SF_LD(i3); - - *r0 = V4SF_ADD(t0, t1); - *r1 = V4SF_SUB(t0, t1); - *r2 = V4SF_ADD(t2, t3); - *r3 = V4SF_SUB(t2, t3); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_L_4(int inv, - const double *FFTS_RESTRICT i0, - const double *FFTS_RESTRICT i1, - const double *FFTS_RESTRICT i2, - const double *FFTS_RESTRICT i3, - V4DF *r0, - V4DF *r1, - V4DF *r2, - V4DF *r3) -{ - V4DF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4DF_LD(i0); - t1 = V4DF_LD(i1); - t2 = V4DF_LD(i2); - t3 = V4DF_LD(i3); - - t4 = V4DF_ADD(t0, t1); - t5 = V4DF_SUB(t0, t1); - t6 = V4DF_ADD(t2, t3); - t7 = V4DF_IMULI(inv, V4DF_SUB(t2, t3)); - - *r0 = V4DF_ADD(t4, t6); - *r2 = V4DF_SUB(t4, t6); - *r1 = V4DF_SUB(t5, t7); - *r3 = V4DF_ADD(t5, t7); -} -#endif - -static FFTS_INLINE void -V4SF_L_4(int inv, - const float *FFTS_RESTRICT i0, - const float *FFTS_RESTRICT i1, - const float *FFTS_RESTRICT i2, - const float *FFTS_RESTRICT i3, - V4SF *r0, - V4SF *r1, - V4SF *r2, - V4SF *r3) -{ - V4SF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4SF_LD(i0); - t1 = V4SF_LD(i1); - t2 = V4SF_LD(i2); - t3 = V4SF_LD(i3); - - t4 = V4SF_ADD(t0, t1); - t5 = V4SF_SUB(t0, t1); - t6 = V4SF_ADD(t2, t3); - t7 = V4SF_IMULI(inv, V4SF_SUB(t2, t3)); - - *r0 = V4SF_ADD(t4, t6); - *r2 = V4SF_SUB(t4, t6); - *r1 = V4SF_SUB(t5, t7); - *r3 = V4SF_ADD(t5, t7); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_LEAF_EE(double *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const double *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const double *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_64f : ffts_constants_64f; - - V4DF r0, r1, r2, r3, r4, r5, r6, r7; - - double *out0 = out + os[0]; - double *out1 = out + os[1]; - - V4DF_L_4(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4DF_L_2(in + is[4], in + is[5], in + is[6], in + is[7], &r4, &r5, &r6, &r7); - - V4DF_K_0(inv, &r0, &r2, &r4, &r6); - V4DF_K_N(inv, V4DF_LD(LUT + 0), V4DF_LD(LUT + 4), &r1, &r3, &r5, &r7); - V4DF_TX2(&r0, &r1); - V4DF_TX2(&r2, &r3); - V4DF_TX2(&r4, &r5); - V4DF_TX2(&r6, &r7); - - V4DF_S_4(r0, r2, r4, r6, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4DF_S_4(r1, r3, r5, r7, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} -#endif - -static FFTS_INLINE void -V4SF_LEAF_EE(float *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const float *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const float *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_32f : ffts_constants_32f; - - V4SF r0, r1, r2, r3, r4, r5, r6, r7; - - float *out0 = out + os[0]; - float *out1 = out + os[1]; - - V4SF_L_4(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4SF_L_2(in + is[4], in + is[5], in + is[6], in + is[7], &r4, &r5, &r6, &r7); - - V4SF_K_0(inv, &r0, &r2, &r4, &r6); - V4SF_K_N(inv, V4SF_LD(LUT + 0), V4SF_LD(LUT + 4), &r1, &r3, &r5, &r7); - V4SF_TX2(&r0, &r1); - V4SF_TX2(&r2, &r3); - V4SF_TX2(&r4, &r5); - V4SF_TX2(&r6, &r7); - - V4SF_S_4(r0, r2, r4, r6, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4SF_S_4(r1, r3, r5, r7, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_LEAF_EE2(double *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const double *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const double *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_64f : ffts_constants_64f; - - V4DF r0, r1, r2, r3, r4, r5, r6, r7; - - double *out0 = out + os[0]; - double *out1 = out + os[1]; - - V4DF_L_4(inv, in + is[6], in + is[7], in + is[4], in + is[5], &r0, &r1, &r2, &r3); - V4DF_L_2(in + is[0], in + is[1], in + is[3], in + is[2], &r4, &r5, &r6, &r7); - - V4DF_K_0(inv, &r0, &r2, &r4, &r6); - V4DF_K_N(inv, V4DF_LD(LUT + 0), V4DF_LD(LUT + 4), &r1, &r3, &r5, &r7); - V4DF_TX2(&r0, &r1); - V4DF_TX2(&r2, &r3); - V4DF_TX2(&r4, &r5); - V4DF_TX2(&r6, &r7); - - V4DF_S_4(r0, r2, r4, r6, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4DF_S_4(r1, r3, r5, r7, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} -#endif - -static FFTS_INLINE void -V4SF_LEAF_EE2(float *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const float *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const float *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_32f : ffts_constants_32f; - - V4SF r0, r1, r2, r3, r4, r5, r6, r7; - - float *out0 = out + os[0]; - float *out1 = out + os[1]; - - V4SF_L_4(inv, in + is[6], in + is[7], in + is[4], in + is[5], &r0, &r1, &r2, &r3); - V4SF_L_2(in + is[0], in + is[1], in + is[3], in + is[2], &r4, &r5, &r6, &r7); - - V4SF_K_0(inv, &r0, &r2, &r4, &r6); - V4SF_K_N(inv, V4SF_LD(LUT + 0), V4SF_LD(LUT + 4), &r1, &r3, &r5, &r7); - V4SF_TX2(&r0, &r1); - V4SF_TX2(&r2, &r3); - V4SF_TX2(&r4, &r5); - V4SF_TX2(&r6, &r7); - - V4SF_S_4(r0, r2, r4, r6, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4SF_S_4(r1, r3, r5, r7, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_LEAF_EO(double *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const double *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const double *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_64f : ffts_constants_64f; - - V4DF r0, r1, r2, r3, r4, r5, r6, r7; - - double *out0 = out + os[0]; - double *out1 = out + os[1]; - - V4DF_L_4_4(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4DF_L_2_4(inv, in + is[4], in + is[5], in + is[6], in + is[7], &r4, &r5, &r6, &r7); - - V4DF_S_4(r2, r3, r7, r6, out1 + 0, out1 + 4, out1 + 8, out1 + 12); - V4DF_K_N(inv, V4DF_LD(LUT + 8), V4DF_LD(LUT + 12), &r0, &r1, &r4, &r5); - V4DF_S_4(r0, r1, r4, r5, out0 + 0, out0 + 4, out0 + 8, out0 + 12); -} -#endif - -static FFTS_INLINE void -V4SF_LEAF_EO(float *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const float *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const float *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_32f : ffts_constants_32f; - - V4SF r0, r1, r2, r3, r4, r5, r6, r7; - - float *out0 = out + os[0]; - float *out1 = out + os[1]; - - V4SF_L_4_4(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4SF_L_2_4(inv, in + is[4], in + is[5], in + is[6], in + is[7], &r4, &r5, &r6, &r7); - - V4SF_S_4(r2, r3, r7, r6, out1 + 0, out1 + 4, out1 + 8, out1 + 12); - V4SF_K_N(inv, V4SF_LD(LUT + 8), V4SF_LD(LUT + 12), &r0, &r1, &r4, &r5); - V4SF_S_4(r0, r1, r4, r5, out0 + 0, out0 + 4, out0 + 8, out0 + 12); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_LEAF_OE(double *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const double *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const double *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_64f : ffts_constants_64f; - - V4DF r0, r1, r2, r3, r4, r5, r6, r7; - - double *out0 = out + os[0]; - double *out1 = out + os[1]; - - V4DF_L_4_2(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4DF_L_4_4(inv, in + is[6], in + is[7], in + is[4], in + is[5], &r4, &r5, &r6, &r7); - - V4DF_S_4(r0, r1, r4, r5, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4DF_K_N(inv, V4DF_LD(LUT + 8), V4DF_LD(LUT + 12), &r6, &r7, &r2, &r3); - V4DF_S_4(r6, r7, r2, r3, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} -#endif - -static FFTS_INLINE void -V4SF_LEAF_OE(float *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const float *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - const float *FFTS_RESTRICT LUT = inv ? ffts_constants_inv_32f : ffts_constants_32f; - - V4SF r0, r1, r2, r3, r4, r5, r6, r7; - - float *out0 = out + os[0]; - float *out1 = out + os[1]; - - V4SF_L_4_2(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4SF_L_4_4(inv, in + is[6], in + is[7], in + is[4], in + is[5], &r4, &r5, &r6, &r7); - - V4SF_S_4(r0, r1, r4, r5, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4SF_K_N(inv, V4SF_LD(LUT + 8), V4SF_LD(LUT + 12), &r6, &r7, &r2, &r3); - V4SF_S_4(r6, r7, r2, r3, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_LEAF_OO(double *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const double *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - V4DF r0, r1, r2, r3, r4, r5, r6, r7; - - double *out0 = out + os[0]; - double *out1 = out + os[1]; - - V4DF_L_4_4(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4DF_L_4_4(inv, in + is[6], in + is[7], in + is[4], in + is[5], &r4, &r5, &r6, &r7); - - V4DF_S_4(r0, r1, r4, r5, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4DF_S_4(r2, r3, r6, r7, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} -#endif - -static FFTS_INLINE void -V4SF_LEAF_OO(float *const FFTS_RESTRICT out, - const ptrdiff_t *FFTS_RESTRICT os, - const float *FFTS_RESTRICT in, - const ptrdiff_t *FFTS_RESTRICT is, - int inv) -{ - V4SF r0, r1, r2, r3, r4, r5, r6, r7; - - float *out0 = out + os[0]; - float *out1 = out + os[1]; - - V4SF_L_4_4(inv, in + is[0], in + is[1], in + is[2], in + is[3], &r0, &r1, &r2, &r3); - V4SF_L_4_4(inv, in + is[6], in + is[7], in + is[4], in + is[5], &r4, &r5, &r6, &r7); - - V4SF_S_4(r0, r1, r4, r5, out0 + 0, out0 + 4, out0 + 8, out0 + 12); - V4SF_S_4(r2, r3, r6, r7, out1 + 0, out1 + 4, out1 + 8, out1 + 12); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_X_4(int inv, - double *FFTS_RESTRICT data, - size_t N, - const double *FFTS_RESTRICT LUT) -{ - size_t i; - - for (i = 0; i < N/8; i++) { - V4DF r0 = V4DF_LD(data); - V4DF r1 = V4DF_LD(data + 2*N/4); - V4DF r2 = V4DF_LD(data + 4*N/4); - V4DF r3 = V4DF_LD(data + 6*N/4); - - V4DF_K_N(inv, V4DF_LD(LUT), V4DF_LD(LUT + 4), &r0, &r1, &r2, &r3); - - V4DF_ST(data , r0); - V4DF_ST(data + 2*N/4, r1); - V4DF_ST(data + 4*N/4, r2); - V4DF_ST(data + 6*N/4, r3); - - LUT += 8; - data += 4; - } -} -#endif - -static FFTS_INLINE void -V4SF_X_4(int inv, - float *FFTS_RESTRICT data, - size_t N, - const float *FFTS_RESTRICT LUT) -{ - size_t i; - - for (i = 0; i < N/8; i++) { - V4SF r0 = V4SF_LD(data); - V4SF r1 = V4SF_LD(data + 2*N/4); - V4SF r2 = V4SF_LD(data + 4*N/4); - V4SF r3 = V4SF_LD(data + 6*N/4); - - V4SF_K_N(inv, V4SF_LD(LUT), V4SF_LD(LUT + 4), &r0, &r1, &r2, &r3); - - V4SF_ST(data , r0); - V4SF_ST(data + 2*N/4, r1); - V4SF_ST(data + 4*N/4, r2); - V4SF_ST(data + 6*N/4, r3); - - LUT += 8; - data += 4; - } -} - -static FFTS_INLINE void -V4SF_X_8(int inv, - float *FFTS_RESTRICT data0, - size_t N, - const float *FFTS_RESTRICT LUT) -{ - float *data1 = data0 + 1*N/4; - float *data2 = data0 + 2*N/4; - float *data3 = data0 + 3*N/4; - float *data4 = data0 + 4*N/4; - float *data5 = data0 + 5*N/4; - float *data6 = data0 + 6*N/4; - float *data7 = data0 + 7*N/4; - size_t i; - - for (i = 0; i < N/16; i++) { - V4SF r0, r1, r2, r3, r4, r5, r6, r7; - - r0 = V4SF_LD(data0); - r1 = V4SF_LD(data1); - r2 = V4SF_LD(data2); - r3 = V4SF_LD(data3); - - V4SF_K_N(inv, V4SF_LD(LUT), V4SF_LD(LUT + 4), &r0, &r1, &r2, &r3); - r4 = V4SF_LD(data4); - r6 = V4SF_LD(data6); - - V4SF_K_N(inv, V4SF_LD(LUT + 8), V4SF_LD(LUT + 12), &r0, &r2, &r4, &r6); - r5 = V4SF_LD(data5); - r7 = V4SF_LD(data7); - - V4SF_K_N(inv, V4SF_LD(LUT + 16), V4SF_LD(LUT + 20), &r1, &r3, &r5, &r7); - LUT += 24; - - V4SF_ST(data0, r0); - data0 += 4; - - V4SF_ST(data1, r1); - data1 += 4; - - V4SF_ST(data2, r2); - data2 += 4; - - V4SF_ST(data3, r3); - data3 += 4; - - V4SF_ST(data4, r4); - data4 += 4; - - V4SF_ST(data5, r5); - data5 += 4; - - V4SF_ST(data6, r6); - data6 += 4; - - V4SF_ST(data7, r7); - data7 += 4; - } -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_X_8(int inv, - double *FFTS_RESTRICT data0, - size_t N, - const double *FFTS_RESTRICT LUT) -{ - double *data1 = data0 + 1*N/4; - double *data2 = data0 + 2*N/4; - double *data3 = data0 + 3*N/4; - double *data4 = data0 + 4*N/4; - double *data5 = data0 + 5*N/4; - double *data6 = data0 + 6*N/4; - double *data7 = data0 + 7*N/4; - size_t i; - - for (i = 0; i < N/16; i++) { - V4DF r0, r1, r2, r3, r4, r5, r6, r7; - - r0 = V4DF_LD(data0); - r1 = V4DF_LD(data1); - r2 = V4DF_LD(data2); - r3 = V4DF_LD(data3); - - V4DF_K_N(inv, V4DF_LD(LUT), V4DF_LD(LUT + 4), &r0, &r1, &r2, &r3); - r4 = V4DF_LD(data4); - r6 = V4DF_LD(data6); - - V4DF_K_N(inv, V4DF_LD(LUT + 8), V4DF_LD(LUT + 12), &r0, &r2, &r4, &r6); - r5 = V4DF_LD(data5); - r7 = V4DF_LD(data7); - - V4DF_K_N(inv, V4DF_LD(LUT + 16), V4DF_LD(LUT + 20), &r1, &r3, &r5, &r7); - LUT += 24; - - V4DF_ST(data0, r0); - data0 += 4; - - V4DF_ST(data1, r1); - data1 += 4; - - V4DF_ST(data2, r2); - data2 += 4; - - V4DF_ST(data3, r3); - data3 += 4; - - V4DF_ST(data4, r4); - data4 += 4; - - V4DF_ST(data5, r5); - data5 += 4; - - V4DF_ST(data6, r6); - data6 += 4; - - V4DF_ST(data7, r7); - data7 += 4; - } -} -#endif - -static FFTS_INLINE void -ffts_static_firstpass_odd_32f(float *const FFTS_RESTRICT out, - const float *FFTS_RESTRICT in, - const ffts_plan_t *FFTS_RESTRICT p, - int inv) -{ - size_t i, i0 = p->i0, i1 = p->i1; - const ptrdiff_t *is = (const ptrdiff_t*) p->is; - const ptrdiff_t *os = (const ptrdiff_t*) p->offsets; - - for (i = i0; i > 0; --i) { - V4SF_LEAF_EE(out, os, in, is, inv); - in += 4; - os += 2; - } - - for (i = i1; i > 0; --i) { - V4SF_LEAF_OO(out, os, in, is, inv); - in += 4; - os += 2; - } - - V4SF_LEAF_OE(out, os, in, is, inv); - in += 4; - os += 2; - - for (i = i1; i > 0; --i) { - V4SF_LEAF_EE2(out, os, in, is, inv); - in += 4; - os += 2; - } -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -ffts_static_firstpass_odd_64f(double *const FFTS_RESTRICT out, - const double *FFTS_RESTRICT in, - const ffts_plan_t *FFTS_RESTRICT p, - int inv) -{ - size_t i, i0 = p->i0, i1 = p->i1; - const ptrdiff_t *is = (const ptrdiff_t*) p->is; - const ptrdiff_t *os = (const ptrdiff_t*) p->offsets; - - for (i = i0; i > 0; --i) { - V4DF_LEAF_EE(out, os, in, is, inv); - in += 4; - os += 2; - } - - for (i = i1; i > 0; --i) { - V4DF_LEAF_OO(out, os, in, is, inv); - in += 4; - os += 2; - } - - V4DF_LEAF_OE(out, os, in, is, inv); - in += 4; - os += 2; - - for (i = i1; i > 0; --i) { - V4DF_LEAF_EE2(out, os, in, is, inv); - in += 4; - os += 2; - } -} -#endif - -void -ffts_small_2_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *din = (const float*) in; - float *dout = (float*) out; - ffts_cpx_32f t0, t1, r0, r1; - - /* unreferenced parameter */ - (void) p; - - t0[0] = din[0]; - t0[1] = din[1]; - t1[0] = din[2]; - t1[1] = din[3]; - - r0[0] = t0[0] + t1[0]; - r0[1] = t0[1] + t1[1]; - r1[0] = t0[0] - t1[0]; - r1[1] = t0[1] - t1[1]; - - dout[0] = r0[0]; - dout[1] = r0[1]; - dout[2] = r1[0]; - dout[3] = r1[1]; -} - -void -ffts_small_2_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *din = (const double*) in; - double *dout = (double*) out; - ffts_cpx_64f t0, t1, r0, r1; - - /* unreferenced parameter */ - (void) p; - - t0[0] = din[0]; - t0[1] = din[1]; - t1[0] = din[2]; - t1[1] = din[3]; - - r0[0] = t0[0] + t1[0]; - r0[1] = t0[1] + t1[1]; - r1[0] = t0[0] - t1[0]; - r1[1] = t0[1] - t1[1]; - - dout[0] = r0[0]; - dout[1] = r0[1]; - dout[2] = r1[0]; - dout[3] = r1[1]; -} - -void -ffts_small_forward4_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *din = (const float*) in; - float *dout = (float*) out; - ffts_cpx_32f t0, t1, t2, t3, t4, t5, t6, t7; - - /* unreferenced parameter */ - (void) p; - - t0[0] = din[0]; - t0[1] = din[1]; - t1[0] = din[4]; - t1[1] = din[5]; - t2[0] = din[2]; - t2[1] = din[3]; - t3[0] = din[6]; - t3[1] = din[7]; - - t4[0] = t0[0] + t1[0]; - t4[1] = t0[1] + t1[1]; - t5[0] = t0[0] - t1[0]; - t5[1] = t0[1] - t1[1]; - t6[0] = t2[0] + t3[0]; - t6[1] = t2[1] + t3[1]; - t7[0] = t2[0] - t3[0]; - t7[1] = t2[1] - t3[1]; - - dout[0] = t4[0] + t6[0]; - dout[1] = t4[1] + t6[1]; - dout[4] = t4[0] - t6[0]; - dout[5] = t4[1] - t6[1]; - dout[2] = t5[0] + t7[1]; - dout[3] = t5[1] - t7[0]; - dout[6] = t5[0] - t7[1]; - dout[7] = t5[1] + t7[0]; -} - -void -ffts_small_forward4_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *din = (const double*) in; - double *dout = (double*) out; - ffts_cpx_64f t0, t1, t2, t3, t4, t5, t6, t7; - - /* unreferenced parameter */ - (void) p; - - t0[0] = din[0]; - t0[1] = din[1]; - t1[0] = din[4]; - t1[1] = din[5]; - t2[0] = din[2]; - t2[1] = din[3]; - t3[0] = din[6]; - t3[1] = din[7]; - - t4[0] = t0[0] + t1[0]; - t4[1] = t0[1] + t1[1]; - t5[0] = t0[0] - t1[0]; - t5[1] = t0[1] - t1[1]; - t6[0] = t2[0] + t3[0]; - t6[1] = t2[1] + t3[1]; - t7[0] = t2[0] - t3[0]; - t7[1] = t2[1] - t3[1]; - - dout[0] = t4[0] + t6[0]; - dout[1] = t4[1] + t6[1]; - dout[4] = t4[0] - t6[0]; - dout[5] = t4[1] - t6[1]; - dout[2] = t5[0] + t7[1]; - dout[3] = t5[1] - t7[0]; - dout[6] = t5[0] - t7[1]; - dout[7] = t5[1] + t7[0]; -} - -void -ffts_small_backward4_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *din = (const float*) in; - float *dout = (float*) out; - ffts_cpx_32f t0, t1, t2, t3, t4, t5, t6, t7; - - /* unreferenced parameter */ - (void) p; - - t0[0] = din[0]; - t0[1] = din[1]; - t1[0] = din[4]; - t1[1] = din[5]; - t2[0] = din[2]; - t2[1] = din[3]; - t3[0] = din[6]; - t3[1] = din[7]; - - t4[0] = t0[0] + t1[0]; - t4[1] = t0[1] + t1[1]; - t5[0] = t0[0] - t1[0]; - t5[1] = t0[1] - t1[1]; - t6[0] = t2[0] + t3[0]; - t6[1] = t2[1] + t3[1]; - t7[0] = t2[0] - t3[0]; - t7[1] = t2[1] - t3[1]; - - dout[0] = t4[0] + t6[0]; - dout[1] = t4[1] + t6[1]; - dout[4] = t4[0] - t6[0]; - dout[5] = t4[1] - t6[1]; - dout[2] = t5[0] - t7[1]; - dout[3] = t5[1] + t7[0]; - dout[6] = t5[0] + t7[1]; - dout[7] = t5[1] - t7[0]; -} - -void -ffts_small_backward4_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *din = (const double*) in; - double *dout = (double*) out; - ffts_cpx_64f t0, t1, t2, t3, t4, t5, t6, t7; - - /* unreferenced parameter */ - (void) p; - - t0[0] = din[0]; - t0[1] = din[1]; - t1[0] = din[4]; - t1[1] = din[5]; - t2[0] = din[2]; - t2[1] = din[3]; - t3[0] = din[6]; - t3[1] = din[7]; - - t4[0] = t0[0] + t1[0]; - t4[1] = t0[1] + t1[1]; - t5[0] = t0[0] - t1[0]; - t5[1] = t0[1] - t1[1]; - t6[0] = t2[0] + t3[0]; - t6[1] = t2[1] + t3[1]; - t7[0] = t2[0] - t3[0]; - t7[1] = t2[1] - t3[1]; - - dout[0] = t4[0] + t6[0]; - dout[1] = t4[1] + t6[1]; - dout[4] = t4[0] - t6[0]; - dout[5] = t4[1] - t6[1]; - dout[2] = t5[0] - t7[1]; - dout[3] = t5[1] + t7[0]; - dout[6] = t5[0] + t7[1]; - dout[7] = t5[1] - t7[0]; -} - -void -ffts_small_forward8_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *FFTS_RESTRICT lut = ffts_constants_small_32f; - const float *din = (const float*) in; - float *dout = (float*) out; - V4SF r0_1, r2_3, r4_5, r6_7; - - /* unreferenced parameter */ - (void) p; - - V4SF_L_4_2(0, din, din+8, din+4, din+12, &r0_1, &r2_3, &r4_5, &r6_7); - V4SF_K_N(0, V4SF_LD(lut), V4SF_LD(lut + 4), &r0_1, &r2_3, &r4_5, &r6_7); - V4SF_S_4(r0_1, r2_3, r4_5, r6_7, dout+0, dout+4, dout+8, dout+12); -} - -#ifdef FFTS_DOUBLE -void -ffts_small_forward8_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *FFTS_RESTRICT lut = ffts_constants_small_64f; - const double *din = (const double*) in; - double *dout = (double*) out; - V4DF r0_1, r2_3, r4_5, r6_7; - - /* unreferenced parameter */ - (void) p; - - V4DF_L_4_2(0, din, din+8, din+4, din+12, &r0_1, &r2_3, &r4_5, &r6_7); - V4DF_K_N(0, V4DF_LD(lut), V4DF_LD(lut + 4), &r0_1, &r2_3, &r4_5, &r6_7); - V4DF_S_4(r0_1, r2_3, r4_5, r6_7, dout+0, dout+4, dout+8, dout+12); -} -#endif - -void -ffts_small_backward8_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *FFTS_RESTRICT lut = ffts_constants_small_inv_32f; - const float *din = (const float*) in; - float *dout = (float*) out; - V4SF r0_1, r2_3, r4_5, r6_7; - - /* unreferenced parameter */ - (void) p; - - V4SF_L_4_2(1, din, din+8, din+4, din+12, &r0_1, &r2_3, &r4_5, &r6_7); - V4SF_K_N(1, V4SF_LD(lut), V4SF_LD(lut+4), &r0_1, &r2_3, &r4_5, &r6_7); - V4SF_S_4(r0_1, r2_3, r4_5, r6_7, dout+0, dout+4, dout+8, dout+12); -} - -#ifdef FFTS_DOUBLE -void -ffts_small_backward8_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *FFTS_RESTRICT lut = ffts_constants_small_inv_64f; - const double *din = (const double*) in; - double *dout = (double*) out; - V4DF r0_1, r2_3, r4_5, r6_7; - - /* unreferenced parameter */ - (void) p; - - V4DF_L_4_2(1, din, din+8, din+4, din+12, &r0_1, &r2_3, &r4_5, &r6_7); - V4DF_K_N(1, V4DF_LD(lut), V4DF_LD(lut+4), &r0_1, &r2_3, &r4_5, &r6_7); - V4DF_S_4(r0_1, r2_3, r4_5, r6_7, dout+0, dout+4, dout+8, dout+12); -} -#endif - -void -ffts_small_forward16_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *FFTS_RESTRICT lut = ffts_constants_small_32f; - const float *din = (const float*) in; - float *dout = (float*) out; - V4SF r0_1, r2_3, r4_5, r6_7, r8_9, r10_11, r12_13, r14_15; - - /* unreferenced parameter */ - (void) p; - - V4SF_L_4_4(0, din+0, din+16, din+8, din+24, &r0_1, &r2_3, &r8_9, &r10_11); - V4SF_L_2_4(0, din+4, din+20, din+28, din+12, &r4_5, &r6_7, &r14_15, &r12_13); - V4SF_K_N(0, V4SF_LD(lut), V4SF_LD(lut+4), &r0_1, &r2_3, &r4_5, &r6_7); - V4SF_K_N(0, V4SF_LD(lut+8), V4SF_LD(lut+12), &r0_1, &r4_5, &r8_9, &r12_13); - V4SF_S_4(r0_1, r4_5, r8_9, r12_13, dout+0, dout+8, dout+16, dout+24); - V4SF_K_N(0, V4SF_LD(lut+16), V4SF_LD(lut+20), &r2_3, &r6_7, &r10_11, &r14_15); - V4SF_S_4(r2_3, r6_7, r10_11, r14_15, dout+4, dout+12, dout+20, dout+28); -} - -#ifdef FFTS_DOUBLE -void -ffts_small_forward16_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *FFTS_RESTRICT lut = ffts_constants_small_64f; - const double *din = (const double*) in; - double *dout = (double*) out; - V4DF r0_1, r2_3, r4_5, r6_7, r8_9, r10_11, r12_13, r14_15; - - /* unreferenced parameter */ - (void) p; - - V4DF_L_4_4(0, din+0, din+16, din+8, din+24, &r0_1, &r2_3, &r8_9, &r10_11); - V4DF_L_2_4(0, din+4, din+20, din+28, din+12, &r4_5, &r6_7, &r14_15, &r12_13); - V4DF_K_N(0, V4DF_LD(lut), V4DF_LD(lut+4), &r0_1, &r2_3, &r4_5, &r6_7); - V4DF_K_N(0, V4DF_LD(lut+8), V4DF_LD(lut+12), &r0_1, &r4_5, &r8_9, &r12_13); - V4DF_S_4(r0_1, r4_5, r8_9, r12_13, dout+0, dout+8, dout+16, dout+24); - V4DF_K_N(0, V4DF_LD(lut+16), V4DF_LD(lut+20), &r2_3, &r6_7, &r10_11, &r14_15); - V4DF_S_4(r2_3, r6_7, r10_11, r14_15, dout+4, dout+12, dout+20, dout+28); -} -#endif - -void -ffts_small_backward16_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *FFTS_RESTRICT lut = ffts_constants_small_inv_32f; - const float *din = (const float*) in; - float *dout = (float*) out; - V4SF r0_1, r2_3, r4_5, r6_7, r8_9, r10_11, r12_13, r14_15; - - /* unreferenced parameter */ - (void) p; - - V4SF_L_4_4(1, din+0, din+16, din+8, din+24, &r0_1, &r2_3, &r8_9, &r10_11); - V4SF_L_2_4(1, din+4, din+20, din+28, din+12, &r4_5, &r6_7, &r14_15, &r12_13); - V4SF_K_N(1, V4SF_LD(lut), V4SF_LD(lut+4), &r0_1, &r2_3, &r4_5, &r6_7); - V4SF_K_N(1, V4SF_LD(lut+8), V4SF_LD(lut+12), &r0_1, &r4_5, &r8_9, &r12_13); - V4SF_S_4(r0_1, r4_5, r8_9, r12_13, dout+0, dout+8, dout+16, dout+24); - V4SF_K_N(1, V4SF_LD(lut+16), V4SF_LD(lut+20), &r2_3, &r6_7, &r10_11, &r14_15); - V4SF_S_4(r2_3, r6_7, r10_11, r14_15, dout+4, dout+12, dout+20, dout+28); -} - -#ifdef FFTS_DOUBLE -void -ffts_small_backward16_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *FFTS_RESTRICT lut = ffts_constants_small_inv_64f; - const double *din = (const double*) in; - double *dout = (double*) out; - V4DF r0_1, r2_3, r4_5, r6_7, r8_9, r10_11, r12_13, r14_15; - - /* unreferenced parameter */ - (void) p; - - V4DF_L_4_4(1, din+0, din+16, din+8, din+24, &r0_1, &r2_3, &r8_9, &r10_11); - V4DF_L_2_4(1, din+4, din+20, din+28, din+12, &r4_5, &r6_7, &r14_15, &r12_13); - V4DF_K_N(1, V4DF_LD(lut), V4DF_LD(lut+4), &r0_1, &r2_3, &r4_5, &r6_7); - V4DF_K_N(1, V4DF_LD(lut+8), V4DF_LD(lut+12), &r0_1, &r4_5, &r8_9, &r12_13); - V4DF_S_4(r0_1, r4_5, r8_9, r12_13, dout+0, dout+8, dout+16, dout+24); - V4DF_K_N(1, V4DF_LD(lut+16), V4DF_LD(lut+20), &r2_3, &r6_7, &r10_11, &r14_15); - V4DF_S_4(r2_3, r6_7, r10_11, r14_15, dout+4, dout+12, dout+20, dout+28); -} -#endif - -static FFTS_INLINE void -ffts_static_firstpass_even_32f(float *FFTS_RESTRICT out, - const float *FFTS_RESTRICT in, - const ffts_plan_t *FFTS_RESTRICT p, - int inv) -{ - size_t i, i0 = p->i0, i1 = p->i1; - const ptrdiff_t *is = (const ptrdiff_t*) p->is; - const ptrdiff_t *os = (const ptrdiff_t*) p->offsets; - - for(i = i0; i > 0; --i) { - V4SF_LEAF_EE(out, os, in, is, inv); - in += 4; - os += 2; - } - - V4SF_LEAF_EO(out, os, in, is, inv); - in += 4; - os += 2; - - for (i = i1; i > 0; --i) { - V4SF_LEAF_OO(out, os, in, is, inv); - in += 4; - os += 2; - } - - for (i = i1; i > 0; --i) { - V4SF_LEAF_EE2(out, os, in, is, inv); - in += 4; - os += 2; - } -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -ffts_static_firstpass_even_64f(double *FFTS_RESTRICT out, - const double *FFTS_RESTRICT in, - const ffts_plan_t *FFTS_RESTRICT p, - int inv) -{ - size_t i, i0 = p->i0, i1 = p->i1; - const ptrdiff_t *is = (const ptrdiff_t*) p->is; - const ptrdiff_t *os = (const ptrdiff_t*) p->offsets; - - for(i = i0; i > 0; --i) { - V4DF_LEAF_EE(out, os, in, is, inv); - in += 4; - os += 2; - } - - V4DF_LEAF_EO(out, os, in, is, inv); - in += 4; - os += 2; - - for (i = i1; i > 0; --i) { - V4DF_LEAF_OO(out, os, in, is, inv); - in += 4; - os += 2; - } - - for (i = i1; i > 0; --i) { - V4DF_LEAF_EE2(out, os, in, is, inv); - in += 4; - os += 2; - } -} -#endif - -static void -ffts_static_rec_f_32f(const ffts_plan_t *p, float *data, size_t N) -{ - const float *ws = (const float*) p->ws; - -#if defined(HAVE_NEON) && defined(DYNAMIC_DISABLED) - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_f_32f(p, data , N2); - ffts_static_rec_f_32f(p, data + N1 , N3); - ffts_static_rec_f_32f(p, data + N1 + N2, N3); - ffts_static_rec_f_32f(p, data + N , N2); - ffts_static_rec_f_32f(p, data + N + N1 , N2); - - neon_static_x8_f(data, N, ws + (p->ws_is[ffts_ctzl(N) - 4] << 1)); - } else if (N == 128) { - const float *ws1 = ws + (p->ws_is[1] << 1); - - neon_static_x8_f(data, 32, ws1); - - neon_static_x4_f(data + 64, ws); - neon_static_x4_f(data + 96, ws); - - neon_static_x8_f(data + 128, 32, ws1); - neon_static_x8_f(data + 192, 32, ws1); - - neon_static_x8_f(data, 128, ws + (p->ws_is[3] << 1)); - } else if (N == 64) { - neon_static_x4_f(data , ws); - neon_static_x4_f(data + 64, ws); - neon_static_x4_f(data + 96, ws); - - neon_static_x8_f(data, 64, ws + (p->ws_is[2] << 1)); - } else { - assert(N == 32); - neon_static_x8_f(data, 32, ws + (p->ws_is[1] << 1)); - } -#else - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_f_32f(p, data , N2); - ffts_static_rec_f_32f(p, data + N1 , N3); - ffts_static_rec_f_32f(p, data + N1 + N2, N3); - ffts_static_rec_f_32f(p, data + N , N2); - ffts_static_rec_f_32f(p, data + N + N1 , N2); - - V4SF_X_8(0, data, N, ws + (p->ws_is[ffts_ctzl(N) - 4] << 1)); - } else if (N == 128) { - const float *ws1 = ws + (p->ws_is[1] << 1); - - V4SF_X_8(0, data + 0, 32, ws1); - V4SF_X_4(0, data + 64, 16, ws); - V4SF_X_4(0, data + 96, 16, ws); - V4SF_X_8(0, data + 128, 32, ws1); - V4SF_X_8(0, data + 192, 32, ws1); - - V4SF_X_8(0, data, 128, ws + (p->ws_is[3] << 1)); - } else if (N == 64) { - V4SF_X_4(0, data + 0, 16, ws); - V4SF_X_4(0, data + 64, 16, ws); - V4SF_X_4(0, data + 96, 16, ws); - - V4SF_X_8(0, data, 64, ws + (p->ws_is[2] << 1)); - } else { - assert(N == 32); - V4SF_X_8(0, data, 32, ws + (p->ws_is[1] << 1)); - } -#endif -} - -#ifdef FFTS_DOUBLE -static void -ffts_static_rec_f_64f(const ffts_plan_t *p, double *data, size_t N) -{ - const double *ws = (const double*) p->ws; - - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_f_64f(p, data , N2); - ffts_static_rec_f_64f(p, data + N1 , N3); - ffts_static_rec_f_64f(p, data + N1 + N2, N3); - ffts_static_rec_f_64f(p, data + N , N2); - ffts_static_rec_f_64f(p, data + N + N1 , N2); - - V4DF_X_8(0, data, N, ws + (p->ws_is[ffts_ctzl(N) - 4] << 1)); - } else if (N == 128) { - const double *ws1 = ws + (p->ws_is[1] << 1); - - V4DF_X_8(0, data + 0, 32, ws1); - V4DF_X_4(0, data + 64, 16, ws); - V4DF_X_4(0, data + 96, 16, ws); - V4DF_X_8(0, data + 128, 32, ws1); - V4DF_X_8(0, data + 192, 32, ws1); - - V4DF_X_8(0, data, 128, ws + (p->ws_is[3] << 1)); - } else if (N == 64) { - V4DF_X_4(0, data + 0, 16, ws); - V4DF_X_4(0, data + 64, 16, ws); - V4DF_X_4(0, data + 96, 16, ws); - - V4DF_X_8(0, data, 64, ws + (p->ws_is[2] << 1)); - } else { - assert(N == 32); - V4DF_X_8(0, data, 32, ws + (p->ws_is[1] << 1)); - } -} -#endif - -static void -ffts_static_rec_i_32f(const ffts_plan_t *p, float *data, size_t N) -{ - const float *ws = (const float*) p->ws; - -#if defined(HAVE_NEON) && defined(DYNAMIC_DISABLED) - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_i_32f(p, data , N2); - ffts_static_rec_i_32f(p, data + N1 , N3); - ffts_static_rec_i_32f(p, data + N1 + N2, N3); - ffts_static_rec_i_32f(p, data + N , N2); - ffts_static_rec_i_32f(p, data + N + N1 , N2); - - neon_static_x8_i(data, N, ws + (p->ws_is[ffts_ctzl(N) - 4] << 1)); - } else if (N == 128) { - const float *ws1 = ws + (p->ws_is[1] << 1); - - neon_static_x8_i(data, 32, ws1); - - neon_static_x4_i(data + 64, ws); - neon_static_x4_i(data + 96, ws); - - neon_static_x8_i(data + 128, 32, ws1); - neon_static_x8_i(data + 192, 32, ws1); - - neon_static_x8_i(data, 128, ws + (p->ws_is[3] << 1)); - } else if (N == 64) { - neon_static_x4_i(data , ws); - neon_static_x4_i(data + 64, ws); - neon_static_x4_i(data + 96, ws); - - neon_static_x8_i(data, 64, ws + (p->ws_is[2] << 1)); - } else { - assert(N == 32); - neon_static_x8_i(data, 32, ws + (p->ws_is[1] << 1)); - } -#else - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_i_32f(p, data , N2); - ffts_static_rec_i_32f(p, data + N1 , N3); - ffts_static_rec_i_32f(p, data + N1 + N2, N3); - ffts_static_rec_i_32f(p, data + N , N2); - ffts_static_rec_i_32f(p, data + N + N1 , N2); - - V4SF_X_8(1, data, N, ws + (p->ws_is[ffts_ctzl(N) - 4] << 1)); - } else if (N == 128) { - const float *ws1 = ws + (p->ws_is[1] << 1); - - V4SF_X_8(1, data + 0, 32, ws1); - V4SF_X_4(1, data + 64, 16, ws); - V4SF_X_4(1, data + 96, 16, ws); - V4SF_X_8(1, data + 128, 32, ws1); - V4SF_X_8(1, data + 192, 32, ws1); - - V4SF_X_8(1, data, 128, ws + (p->ws_is[3] << 1)); - } else if (N == 64) { - V4SF_X_4(1, data + 0, 16, ws); - V4SF_X_4(1, data + 64, 16, ws); - V4SF_X_4(1, data + 96, 16, ws); - - V4SF_X_8(1, data, 64, ws + (p->ws_is[2] << 1)); - } else { - assert(N == 32); - V4SF_X_8(1, data, 32, ws + (p->ws_is[1] << 1)); - } -#endif -} - -#ifdef FFTS_DOUBLE -static void -ffts_static_rec_i_64f(const ffts_plan_t *p, double *data, size_t N) -{ - const double *ws = (const double*) p->ws; - - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_i_64f(p, data , N2); - ffts_static_rec_i_64f(p, data + N1 , N3); - ffts_static_rec_i_64f(p, data + N1 + N2, N3); - ffts_static_rec_i_64f(p, data + N , N2); - ffts_static_rec_i_64f(p, data + N + N1 , N2); - - V4DF_X_8(1, data, N, ws + (p->ws_is[ffts_ctzl(N) - 4] << 1)); - } else if (N == 128) { - const double *ws1 = ws + (p->ws_is[1] << 1); - - V4DF_X_8(1, data + 0, 32, ws1); - V4DF_X_4(1, data + 64, 16, ws); - V4DF_X_4(1, data + 96, 16, ws); - V4DF_X_8(1, data + 128, 32, ws1); - V4DF_X_8(1, data + 192, 32, ws1); - - V4DF_X_8(1, data, 128, ws + (p->ws_is[3] << 1)); - } else if (N == 64) { - V4DF_X_4(1, data + 0, 16, ws); - V4DF_X_4(1, data + 64, 16, ws); - V4DF_X_4(1, data + 96, 16, ws); - - V4DF_X_8(1, data, 64, ws + (p->ws_is[2] << 1)); - } else { - assert(N == 32); - V4DF_X_8(1, data, 32, ws + (p->ws_is[1] << 1)); - } -} -#endif - -void -ffts_static_transform_f_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *din = (const float*) in; - float *dout = (float*) out; - - const size_t N = p->N; - const int N_log_2 = ffts_ctzl(N); - -#if defined(HAVE_NEON) && defined(DYNAMIC_DISABLED) - const float *ws = (const float*) p->ws; - - if (N_log_2 & 1) { - neon_static_o_f(p, din, dout); - } else { - neon_static_e_f(p, din, dout); - } - - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_f_32f(p, dout , N2); - ffts_static_rec_f_32f(p, dout + N1 , N3); - ffts_static_rec_f_32f(p, dout + N1 + N2, N3); - ffts_static_rec_f_32f(p, dout + N , N2); - ffts_static_rec_f_32f(p, dout + N + N1 , N2); - - neon_static_x8_t_f(dout, N, ws + (p->ws_is[N_log_2 - 4] << 1)); - } else if (N == 128) { - neon_static_x8_f(dout, 32, ws + 8); - - neon_static_x4_f(dout + 64, ws); - neon_static_x4_f(dout + 96, ws); - - neon_static_x8_f(dout + 128, 32, ws + 8); - neon_static_x8_f(dout + 192, 32, ws + 8); - - neon_static_x8_t_f(dout, 128, ws + 80); - } else if (N == 64) { - neon_static_x4_f(dout , ws); - neon_static_x4_f(dout + 64, ws); - neon_static_x4_f(dout + 96, ws); - - neon_static_x8_t_f(dout, 64, ws + 32); - } else { - assert(N == 32); - neon_static_x8_t_f(dout, 32, ws + 8); - } -#else - if (N_log_2 & 1) { - ffts_static_firstpass_odd_32f(dout, din, p, 0); - } else { - ffts_static_firstpass_even_32f(dout, din, p, 0); - } - - ffts_static_rec_f_32f(p, dout, N); -#endif -} - -#ifdef FFTS_DOUBLE -void -ffts_static_transform_f_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *din = (const double*) in; - double *dout = (double*) out; - - const size_t N = p->N; - const int N_log_2 = ffts_ctzl(N); - - if (N_log_2 & 1) { - ffts_static_firstpass_odd_64f(dout, din, p, 0); - } else { - ffts_static_firstpass_even_64f(dout, din, p, 0); - } - - ffts_static_rec_f_64f(p, dout, N); -} -#endif - -void -ffts_static_transform_i_32f(ffts_plan_t *p, const void *in, void *out) -{ - const float *din = (const float*) in; - float *dout = (float*) out; - - const size_t N = p->N; - const int N_log_2 = ffts_ctzl(N); - -#if defined(HAVE_NEON) && defined(DYNAMIC_DISABLED) - const float *ws = (const float*) p->ws; - - if (N_log_2 & 1) { - neon_static_o_i(p, din, dout); - } else { - neon_static_e_i(p, din, dout); - } - - if (N > 128) { - const size_t N1 = N >> 1; - const size_t N2 = N >> 2; - const size_t N3 = N >> 3; - - ffts_static_rec_i_32f(p, dout , N2); - ffts_static_rec_i_32f(p, dout + N1 , N3); - ffts_static_rec_i_32f(p, dout + N1 + N2, N3); - ffts_static_rec_i_32f(p, dout + N , N2); - ffts_static_rec_i_32f(p, dout + N + N1 , N2); - - neon_static_x8_t_i(dout, N, ws + (p->ws_is[N_log_2 - 4] << 1)); - } else if (N == 128) { - neon_static_x8_i(dout, 32, ws + 8); - - neon_static_x4_i(dout + 64, ws); - neon_static_x4_i(dout + 96, ws); - - neon_static_x8_i(dout + 128, 32, ws + 8); - neon_static_x8_i(dout + 192, 32, ws + 8); - - neon_static_x8_t_i(dout, 128, ws + 80); - } else if (N == 64) { - neon_static_x4_i(dout , ws); - neon_static_x4_i(dout + 64, ws); - neon_static_x4_i(dout + 96, ws); - - neon_static_x8_t_i(dout, 64, ws + 32); - } else { - assert(N == 32); - neon_static_x8_t_i(dout, 32, ws + 8); - } -#else - if (N_log_2 & 1) { - ffts_static_firstpass_odd_32f(dout, din, p, 1); - } else { - ffts_static_firstpass_even_32f(dout, din, p, 1); - } - - ffts_static_rec_i_32f(p, dout, N); -#endif -} - -#ifdef FFTS_DOUBLE -void -ffts_static_transform_i_64f(ffts_plan_t *p, const void *in, void *out) -{ - const double *din = (const double*) in; - double *dout = (double*) out; - - const size_t N = p->N; - const int N_log_2 = ffts_ctzl(N); - - if (N_log_2 & 1) { - ffts_static_firstpass_odd_64f(dout, din, p, 1); - } else { - ffts_static_firstpass_even_64f(dout, din, p, 1); - } - - ffts_static_rec_i_64f(p, dout, N); -} -#endif \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/ffts_static.h b/FFTS/Sources/FFTS/src/ffts_static.h deleted file mode 100644 index 5de0059..0000000 --- a/FFTS/Sources/FFTS/src/ffts_static.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_STATIC_H -#define FFTS_STATIC_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts.h" - -void -ffts_small_2_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_small_2_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_small_forward4_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_small_forward4_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_small_backward4_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_small_backward4_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_small_forward8_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_small_forward8_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_small_backward8_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_small_backward8_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_small_forward16_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_small_forward16_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_small_backward16_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_small_backward16_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_static_transform_f_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_static_transform_f_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -void -ffts_static_transform_i_32f(ffts_plan_t *p, const void *in, void *out); - -#ifdef FFTS_DOUBLE -void -ffts_static_transform_i_64f(ffts_plan_t *p, const void *in, void *out); -#endif - -#endif /* FFTS_STATIC_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_transpose.c b/FFTS/Sources/FFTS/src/ffts_transpose.c deleted file mode 100644 index 272cb48..0000000 --- a/FFTS/Sources/FFTS/src/ffts_transpose.c +++ /dev/null @@ -1,194 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2016, Jukka Ojanen -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_transpose.h" -#include "ffts_internal.h" - -#ifdef HAVE_NEON -#include "neon.h" -#include -#elif HAVE_SSE2 -#include -#endif - -#define TSIZE 8 - -void -ffts_transpose(uint64_t *in, uint64_t *out, int w, int h) -{ -#ifdef HAVE_NEON -#if 0 - neon_transpose4(in, out, w, h); -#else - neon_transpose8(in, out, w, h); -#endif -#elif HAVE_SSE2 - uint64_t FFTS_ALIGN(64) tmp[TSIZE*TSIZE]; - int tx, ty; - /* int x; */ - int y; - int tw = w / TSIZE; - int th = h / TSIZE; - - for (ty = 0; ty < th; ty++) { - for (tx = 0; tx < tw; tx++) { - uint64_t *ip0 = in + w*TSIZE*ty + tx * TSIZE; - uint64_t *op0 = tmp; /* out + h*TSIZE*tx + ty*TSIZE; */ - - /* copy/transpose to tmp */ - for (y = 0; y < TSIZE; y += 2) { - /* for (x=0;x -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_TRANSPOSE_H -#define FFTS_TRANSPOSE_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts_internal.h" - -void -ffts_transpose(uint64_t *in, uint64_t *out, int w, int h); - -#endif /* FFTS_TRANSPOSE_H */ diff --git a/FFTS/Sources/FFTS/src/ffts_trig.c b/FFTS/Sources/FFTS/src/ffts_trig.c deleted file mode 100644 index 65efa86..0000000 --- a/FFTS/Sources/FFTS/src/ffts_trig.c +++ /dev/null @@ -1,1283 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2015-2016, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "ffts_trig.h" -#include "ffts_dd.h" - -/* -* For more information on algorithms: -* -* D. Potts, G. Steidl, M. Tasche, Numerical stability of fast -* trigonometric transforms — a worst case study, -* J. Concrete Appl. Math. 1 (2003) 1–36 -* -* O. Buneman, Stable on–line creation of sines and cosines of -* successive angles, Proc. IEEE 75, 1434 – 1435 (1987). -*/ - -/* An union to initialize doubles using byte presentation, -* and to avoid breaking strict-aliasing rules -*/ - -/* TODO: we need macros to take care endianess */ -typedef union ffts_double { - int32_t i[2]; - double d; -} ffts_double_t; - -/* 1/(2*cos(pow(2,-p)*pi)) */ -static const FFTS_ALIGN(16) ffts_double_t half_secant[66] = { - { { 0x00000000, 0x3fe00000 } }, { { 0xc9be45de, 0x3be3bd3c } }, - { { 0x00000000, 0x3fe00000 } }, { { 0xc9be45de, 0x3c03bd3c } }, - { { 0x00000000, 0x3fe00000 } }, { { 0xc9be45de, 0x3c23bd3c } }, - { { 0x00000000, 0x3fe00000 } }, { { 0xc9be45de, 0x3c43bd3c } }, - { { 0x00000000, 0x3fe00000 } }, { { 0xc9be45de, 0x3c63bd3c } }, - { { 0x00000000, 0x3fe00000 } }, { { 0xc9be45df, 0x3c83bd3c } }, - { { 0x00000001, 0x3fe00000 } }, { { 0x4df22efd, 0x3c7de9e6 } }, - { { 0x00000005, 0x3fe00000 } }, { { 0x906e8725, 0xbc60b0cd } }, - { { 0x00000014, 0x3fe00000 } }, { { 0x906e8357, 0xbc80b0cd } }, - { { 0x0000004f, 0x3fe00000 } }, { { 0x0dce83c9, 0xbc5619b2 } }, - { { 0x0000013c, 0x3fe00000 } }, { { 0x0dc6e79a, 0xbc7619b2 } }, - { { 0x000004ef, 0x3fe00000 } }, { { 0xe4af1240, 0x3c83cc9b } }, - { { 0x000013bd, 0x3fe00000 } }, { { 0x2d14c08a, 0x3c7e64df } }, - { { 0x00004ef5, 0x3fe00000 } }, { { 0x47a85465, 0xbc59b20b } }, - { { 0x00013bd4, 0x3fe00000 } }, { { 0xab79c897, 0xbc79b203 } }, - { { 0x0004ef4f, 0x3fe00000 } }, { { 0x15019a96, 0x3c79386b } }, - { { 0x0013bd3d, 0x3fe00000 } }, { { 0x7d6dbf4b, 0xbc7b16b7 } }, - { { 0x004ef4f3, 0x3fe00000 } }, { { 0xf30832e0, 0x3c741ee4 } }, - { { 0x013bd3cd, 0x3fe00000 } }, { { 0xd3bcd4bb, 0xbc83f41e } }, - { { 0x04ef4f34, 0x3fe00000 } }, { { 0xdd75aebb, 0xbc82ef06 } }, - { { 0x13bd3cde, 0x3fe00000 } }, { { 0xb2b41b3d, 0x3c52d979 } }, - { { 0x4ef4f46c, 0x3fe00000 } }, { { 0x4f0fb458, 0xbc851db3 } }, - { { 0x3bd3e0e7, 0x3fe00001 } }, { { 0x8a0ce3f0, 0x3c58dbab } }, - { { 0xef507722, 0x3fe00004 } }, { { 0x2a8ec295, 0x3c83e351 } }, - { { 0xbd5114f9, 0x3fe00013 } }, { { 0xc4c0d92d, 0x3c8b3ca4 } }, - { { 0xf637de7d, 0x3fe0004e } }, { { 0xb74de729, 0x3c45974e } }, - { { 0xe8190891, 0x3fe0013b } }, { { 0x26edf4da, 0xbc814c20 } }, - { { 0x9436640e, 0x3fe004f0 } }, { { 0xe2b34b50, 0x3c8091ab } }, - { { 0x9c61d971, 0x3fe013d1 } }, { { 0x6ce01b8e, 0x3c7f7df7 } }, - { { 0xd17cba53, 0x3fe0503e } }, { { 0x74ad7633, 0xbc697609 } }, - { { 0x7bdb3895, 0x3fe1517a } }, { { 0x82f9091b, 0xbc8008d1 } }, - { { 0x00000000, 0x00000000 } }, { { 0x00000000, 0x00000000 } }, - { { 0x00000000, 0x00000000 } }, { { 0x00000000, 0x00000000 } } -}; - -/* cos(pow(2,-p)*pi), sin(pow(2,-p)*pi) */ -static const FFTS_ALIGN(32) ffts_double_t cos_sin_pi_table[132] = { - { { 0x00000000, 0x3ff00000 } }, { { 0x54442d18, 0x3df921fb } }, - { { 0xc9be45de, 0xbbf3bd3c } }, { { 0xbb77974f, 0x3a91a390 } }, - { { 0x00000000, 0x3ff00000 } }, { { 0x54442d18, 0x3e0921fb } }, - { { 0xc9be45de, 0xbc13bd3c } }, { { 0x54a14928, 0x3aa19bd0 } }, - { { 0x00000000, 0x3ff00000 } }, { { 0x54442d18, 0x3e1921fb } }, - { { 0xc9be45de, 0xbc33bd3c } }, { { 0xb948108a, 0x3ab17cce } }, - { { 0x00000000, 0x3ff00000 } }, { { 0x54442d18, 0x3e2921fb } }, - { { 0xc9be45de, 0xbc53bd3c } }, { { 0x4be32e14, 0x3ac100c8 } }, - { { 0x00000000, 0x3ff00000 } }, { { 0x54442d18, 0x3e3921fb } }, - { { 0xc9be45de, 0xbc73bd3c } }, { { 0x2c9f4879, 0x3ace215d } }, - { { 0xffffffff, 0x3fefffff } }, { { 0x54442d18, 0x3e4921fb } }, - { { 0x6c837443, 0x3c888586 } }, { { 0x0005f376, 0x3acd411f } }, - { { 0xfffffffe, 0x3fefffff } }, { { 0x54442d18, 0x3e5921fb } }, - { { 0x4df22ef1, 0xbc8de9e6 } }, { { 0x9937209e, 0xbaf7b153 } }, - { { 0xfffffff6, 0x3fefffff } }, { { 0x54442d16, 0x3e6921fb } }, - { { 0x906e88aa, 0x3c70b0cd } }, { { 0xfe19968a, 0xbb03b7c0 } }, - { { 0xffffffd9, 0x3fefffff } }, { { 0x54442d0e, 0x3e7921fb } }, - { { 0xdf22ed26, 0xbc8e9e64 } }, { { 0x8d1b6ffb, 0xbaee8bb4 } }, - { { 0xffffff62, 0x3fefffff } }, { { 0x54442cef, 0x3e8921fb } }, - { { 0x0dd18f0f, 0x3c6619b2 } }, { { 0x7f2b20fb, 0xbb00e133 } }, - { { 0xfffffd88, 0x3fefffff } }, { { 0x54442c73, 0x3e9921fb } }, - { { 0x0dd314b2, 0x3c8619b2 } }, { { 0x619fdf6e, 0xbb174e98 } }, - { { 0xfffff621, 0x3fefffff } }, { { 0x54442a83, 0x3ea921fb } }, - { { 0x3764acf5, 0x3c8866c8 } }, { { 0xf5b2407f, 0xbb388215 } }, - { { 0xffffd886, 0x3fefffff } }, { { 0x544422c2, 0x3eb921fb } }, - { { 0x20e7a944, 0xbc8e64df } }, { { 0x7b9b9f23, 0x3b5a0961 } }, - { { 0xffff6216, 0x3fefffff } }, { { 0x544403c1, 0x3ec921fb } }, - { { 0x52ee25ea, 0x3c69b20e } }, { { 0x4df6a86a, 0xbb5999d9 } }, - { { 0xfffd8858, 0x3fefffff } }, { { 0x544387ba, 0x3ed921fb } }, - { { 0xd8910ead, 0x3c89b20f } }, { { 0x0809d04d, 0x3b77d9db } }, - { { 0xfff62162, 0x3fefffff } }, { { 0x544197a1, 0x3ee921fb } }, - { { 0x438d3925, 0xbc8937a8 } }, { { 0xa5d27f7a, 0xbb858b02 } }, - { { 0xffd88586, 0x3fefffff } }, { { 0x5439d73a, 0x3ef921fb } }, - { { 0x94b3ddd2, 0x3c8b22e4 } }, { { 0xf8a3b73d, 0xbb863c7f } }, - { { 0xff62161a, 0x3fefffff } }, { { 0x541ad59e, 0x3f0921fb } }, - { { 0x7ea469b2, 0xbc835c13 } }, { { 0xb8cee262, 0x3bae9860 } }, - { { 0xfd885867, 0x3fefffff } }, { { 0x539ecf31, 0x3f1921fb } }, - { { 0x23a32e63, 0xbc77d556 } }, { { 0xfcd23a30, 0x3b96b111 } }, - { { 0xf621619c, 0x3fefffff } }, { { 0x51aeb57c, 0x3f2921fb } }, - { { 0xbbbd8fe6, 0xbc87507d } }, { { 0x4916c435, 0xbbca6e1d } }, - { { 0xd8858675, 0x3fefffff } }, { { 0x49ee4ea6, 0x3f3921fb } }, - { { 0x54748eab, 0xbc879f0e } }, { { 0x744a453e, 0x3bde894d } }, - { { 0x62161a34, 0x3fefffff } }, { { 0x2aecb360, 0x3f4921fb } }, - { { 0xb1f9b9c4, 0xbc6136dc } }, { { 0x7e566b4c, 0x3be87615 } }, - { { 0x88586ee6, 0x3feffffd } }, { { 0xaee6472e, 0x3f5921fa } }, - { { 0xf173ae5b, 0x3c81af64 } }, { { 0x284a9df8, 0xbbfee52e } }, - { { 0x21621d02, 0x3feffff6 } }, { { 0xbecca4ba, 0x3f6921f8 } }, - { { 0xebc82813, 0xbc76acfc } }, { { 0x7bcab5b2, 0x3c02ba40 } }, - { { 0x858e8a92, 0x3fefffd8 } }, { { 0xfe670071, 0x3f7921f0 } }, - { { 0x1883bcf7, 0x3c8359c7 } }, { { 0xfe6b7a9b, 0x3bfab967 } }, - { { 0x169b92db, 0x3fefff62 } }, { { 0xfcdec784, 0x3f8921d1 } }, - { { 0xc81fbd0d, 0x3c85dda3 } }, { { 0xbe836d9d, 0x3c29878e } }, - { { 0x6084cd0d, 0x3feffd88 } }, { { 0xf7a3667e, 0x3f992155 } }, - { { 0x4556e4cb, 0xbc81354d } }, { { 0x091a0130, 0xbbfb1d63 } }, - { { 0xe3796d7e, 0x3feff621 } }, { { 0xf10dd814, 0x3fa91f65 } }, - { { 0x2e24aa15, 0xbc6c57bc } }, { { 0x0d569a90, 0xbc2912bd } }, - { { 0xa3d12526, 0x3fefd88d } }, { { 0xbc29b42c, 0x3fb917a6 } }, - { { 0x378811c7, 0xbc887df6 } }, { { 0xd26ed688, 0xbc3e2718 } }, - { { 0xcff75cb0, 0x3fef6297 } }, { { 0x3c69a60b, 0x3fc8f8b8 } }, - { { 0x2a361fd3, 0x3c756217 } }, { { 0xb9ff8d82, 0xbc626d19 } }, - { { 0xcf328d46, 0x3fed906b } }, { { 0xa6aea963, 0x3fd87de2 } }, - { { 0x10231ac2, 0x3c7457e6 } }, { { 0xd3d5a610, 0xbc672ced } }, - { { 0x667f3bcd, 0x3fe6a09e } }, { { 0x667f3bcd, 0x3fe6a09e } }, - { { 0x13b26456, 0xbc8bdd34 } }, { { 0x13b26456, 0xbc8bdd34 } }, - { { 0x00000000, 0x00000000 } }, { { 0x00000000, 0x3ff00000 } }, - { { 0x00000000, 0x00000000 } }, { { 0x00000000, 0x00000000 } } -}; - -#define COS_SIN_TABLE_SIZE 260 - -/* cos(pi*k/256), sin(pi*k/256) */ -static const FFTS_ALIGN(32) ffts_double_t cos_sin_table[COS_SIN_TABLE_SIZE] = { - { { 0x00000000, 0x3FF00000 } }, { { 0x00000000, 0x00000000 } }, - { { 0x00000000, 0x00000000 } }, { { 0x00000000, 0x00000000 } }, - { { 0x169B92DB, 0x3FEFFF62 } }, { { 0xFCDEC784, 0x3F8921D1 } }, - { { 0xC81FBD0D, 0x3C85DDA3 } }, { { 0xBE836D9D, 0x3C29878E } }, - { { 0x6084CD0D, 0x3FEFFD88 } }, { { 0xF7A3667E, 0x3F992155 } }, - { { 0x4556E4CB, 0xBC81354D } }, { { 0x091A0130, 0xBBFB1D63 } }, - { { 0xEFFEF75D, 0x3FEFFA72 } }, { { 0x759455CD, 0x3FA2D865 } }, - { { 0xCDB25956, 0xBC88B4CD } }, { { 0x5BA93AC0, 0x3C2686F6 } }, - { { 0xE3796D7E, 0x3FEFF621 } }, { { 0xF10DD814, 0x3FA91F65 } }, - { { 0x2E24AA15, 0xBC6C57BC } }, { { 0x0D569A90, 0xBC2912BD } }, - { { 0x658E71AD, 0x3FEFF095 } }, { { 0x79F820E0, 0x3FAF656E } }, - { { 0xE18A4B9E, 0x3C801A8C } }, { { 0xE392BFFE, 0xBC22E1EB } }, - { { 0xAD01883A, 0x3FEFE9CD } }, { { 0x92CE19F6, 0x3FB2D520 } }, - { { 0xD0C67E35, 0x3C6521EC } }, { { 0xA8BF6B2C, 0xBC49A088 } }, - { { 0xFCBD5B09, 0x3FEFE1CA } }, { { 0x0A9AA419, 0x3FB5F6D0 } }, - { { 0x202A884E, 0x3C6A23E3 } }, { { 0xD03F6C9A, 0xBC4F4022 } }, - { { 0xA3D12526, 0x3FEFD88D } }, { { 0xBC29B42C, 0x3FB917A6 } }, - { { 0x378811C7, 0xBC887DF6 } }, { { 0xD26ED688, 0xBC3E2718 } }, - { { 0xFD6DA67B, 0x3FEFCE15 } }, { { 0xC79EC2D5, 0x3FBC3785 } }, - { { 0x830D4C09, 0xBC75DD6F } }, { { 0xF133FB21, 0xBC24F39D } }, - { { 0x70E19FD3, 0x3FEFC264 } }, { { 0x56A9730E, 0x3FBF564E } }, - { { 0x68ECACEE, 0x3C81EC86 } }, { { 0x729AE56D, 0x3C4A2704 } }, - { { 0x7195D741, 0x3FEFB579 } }, { { 0xCEDAF577, 0x3FC139F0 } }, - { { 0x7397CC08, 0x3C71BFAC } }, { { 0x4D1B3CFA, 0xBC652343 } }, - { { 0x7F08A517, 0x3FEFA755 } }, { { 0x6E8E613A, 0x3FC2C810 } }, - { { 0xCA13571F, 0xBC87A0A8 } }, { { 0xA89A11E0, 0x3C513000 } }, - { { 0x24C9099B, 0x3FEF97F9 } }, { { 0xB1293E5A, 0x3FC45576 } }, - { { 0xEEA5963B, 0xBC8E2AE0 } }, { { 0x4119F7B1, 0xBC5285A2 } }, - { { 0xFA714BA9, 0x3FEF8764 } }, { { 0x448B3FC6, 0x3FC5E214 } }, - { { 0x778FFCB6, 0x3C7AB256 } }, { { 0x779DDAC6, 0x3C6531FF } }, - { { 0xA3A12077, 0x3FEF7599 } }, { { 0xDE50BF31, 0x3FC76DD9 } }, - { { 0xD743195C, 0x3C884F31 } }, { { 0xEC501B2F, 0x3C61D5EE } }, - { { 0xCFF75CB0, 0x3FEF6297 } }, { { 0x3C69A60B, 0x3FC8F8B8 } }, - { { 0x2A361FD3, 0x3C756217 } }, { { 0xB9FF8D82, 0xBC626D19 } }, - { { 0x3B0B2F2D, 0x3FEF4E60 } }, { { 0x25B00451, 0x3FCA82A0 } }, - { { 0xE695AC05, 0xBC78EE01 } }, { { 0xFFD084AD, 0xBC687905 } }, - { { 0xAC64E589, 0x3FEF38F3 } }, { { 0x6A7E4F63, 0x3FCC0B82 } }, - { { 0xB51F72E6, 0xBC7D7BAF } }, { { 0x9E521935, 0xBC1AF143 } }, - { { 0xF7763ADA, 0x3FEF2252 } }, { { 0xE5454311, 0x3FCD934F } }, - { { 0x1C8D94AB, 0xBC820CB8 } }, { { 0x277107AD, 0x3C675B92 } }, - { { 0xFB9230D7, 0x3FEF0A7E } }, { { 0x7B215F1B, 0x3FCF19F9 } }, - { { 0xDC6B4989, 0x3C752C7A } }, { { 0xF11DA2C4, 0xBC642DEE } }, - { { 0xA3E473C2, 0x3FEEF178 } }, { { 0x0E37FDAE, 0x3FD04FB8 } }, - { { 0x67FE774F, 0x3C86310A } }, { { 0xB72583CC, 0xBC0412CD } }, - { { 0xE7684963, 0x3FEED740 } }, { { 0x62B1F677, 0x3FD111D2 } }, - { { 0x91F59CC2, 0x3C7E82C7 } }, { { 0x0AB7AA9A, 0x3C7824C2 } }, - { { 0xC8DF0B74, 0x3FEEBBD8 } }, { { 0x3F4CDB3E, 0x3FD1D344 } }, - { { 0x615E7277, 0x3C7C6C8C } }, { { 0x1C13519E, 0xBC6720D4 } }, - { { 0x56C62DDA, 0x3FEE9F41 } }, { { 0x2ED59F06, 0x3FD29406 } }, - { { 0xE2E3F81E, 0x3C8760B1 } }, { { 0xA2C4612D, 0xBC75D28D } }, - { { 0xAB4CD10D, 0x3FEE817B } }, { { 0xC2E18152, 0x3FD35410 } }, - { { 0x686B5E0A, 0xBC7D0AFE } }, { { 0x2F96E062, 0xBC73CB00 } }, - { { 0xEC48E112, 0x3FEE6288 } }, { { 0x94176601, 0x3FD4135C } }, - { { 0xF2847754, 0xBC616B56 } }, { { 0x4AFA2518, 0x3C70C97C } }, - { { 0x4B2BC17E, 0x3FEE426A } }, { { 0x4278E76A, 0x3FD4D1E2 } }, - { { 0x89744882, 0x3C8A8738 } }, { { 0x18792858, 0x3C624172 } }, - { { 0x04F686E5, 0x3FEE2121 } }, { { 0x75AB1FDD, 0x3FD58F9A } }, - { { 0x6C126527, 0xBC8014C7 } }, { { 0xD58CF620, 0xBC1EFDC0 } }, - { { 0x622DBE2B, 0x3FEDFEAE } }, { { 0xDD3F27C6, 0x3FD64C7D } }, - { { 0x88425567, 0xBC8514EA } }, { { 0x4A664121, 0x3C510D2B } }, - { { 0xB6CCC23C, 0x3FEDDB13 } }, { { 0x30FA459F, 0x3FD70885 } }, - { { 0xC6107DB3, 0x3C883C37 } }, { { 0xE0864C5D, 0xBC744B19 } }, - { { 0x6238A09B, 0x3FEDB652 } }, { { 0x311DCCE7, 0x3FD7C3A9 } }, - { { 0xEAE69460, 0xBC7ADEE7 } }, { { 0x1EF3E8D9, 0x3C19A3F2 } }, - { { 0xCF328D46, 0x3FED906B } }, { { 0xA6AEA963, 0x3FD87DE2 } }, - { { 0x10231AC2, 0x3C7457E6 } }, { { 0xD3D5A610, 0xBC672CED } }, - { { 0x73C9E68B, 0x3FED6961 } }, { { 0x63BC93D7, 0x3FD9372A } }, - { { 0xC6393D55, 0xBC7E8C61 } }, { { 0x9E5AD5B1, 0x3C668431 } }, - { { 0xD14DC93A, 0x3FED4134 } }, { { 0x43A8ED8A, 0x3FD9EF79 } }, - { { 0x95D25AF2, 0xBC84EF52 } }, { { 0x290BDBAB, 0x3C66DA81 } }, - { { 0x743E35DC, 0x3FED17E7 } }, { { 0x2B6D3FCA, 0x3FDAA6C8 } }, - { { 0x3540130A, 0xBC5101DA } }, { { 0x6EE5CCF7, 0xBC7D5F10 } }, - { { 0xF43CC773, 0x3FECED7A } }, { { 0x09E15CC0, 0x3FDB5D10 } }, - { { 0xB5AB58AE, 0xBC5E7B6B } }, { { 0xCB974183, 0x3C65B362 } }, - { { 0xF3FCFC5C, 0x3FECC1F0 } }, { { 0xD8011EE7, 0x3FDC1249 } }, - { { 0x3B68F6AB, 0x3C7E5761 } }, { { 0xBB515206, 0xBC7813AA } }, - { { 0x213411F5, 0x3FEC954B } }, { { 0x9931C45E, 0x3FDCC66E } }, - { { 0x1E946603, 0xBC52FB76 } }, { { 0x59C37F8F, 0x3C56850E } }, - { { 0x3488739B, 0x3FEC678B } }, { { 0x5B86E389, 0x3FDD7977 } }, - { { 0xC7C5FF5B, 0x3C6D86CA } }, { { 0x87BC0575, 0x3C7550EC } }, - { { 0xF180BDB1, 0x3FEC38B2 } }, { { 0x3806F63B, 0x3FDE2B5D } }, - { { 0x757C8D07, 0xBC76E0B1 } }, { { 0x1D3C6841, 0x3C5E0D89 } }, - { { 0x26725549, 0x3FEC08C4 } }, { { 0x52EF78D6, 0x3FDEDC19 } }, - { { 0xD80E2946, 0x3C5B157F } }, { { 0xC33EDEE6, 0xBC7DD0F7 } }, - { { 0xAC6F952A, 0x3FEBD7C0 } }, { { 0xDBF89ABA, 0x3FDF8BA4 } }, - { { 0x32AC700A, 0xBC8825A7 } }, { { 0xC1B776B8, 0xBC32EC1F } }, - { { 0x673590D2, 0x3FEBA5AA } }, { { 0x874C3EB7, 0x3FE01CFC } }, - { { 0x370753B6, 0x3C87EA4E } }, { { 0xE7C2368C, 0xBC734A35 } }, - { { 0x45196E3E, 0x3FEB7283 } }, { { 0x9922FFEE, 0x3FE07387 } }, - { { 0x324E6D61, 0xBC8BC69F } }, { { 0x4347406C, 0xBC8A5A01 } }, - { { 0x3EF55712, 0x3FEB3E4D } }, { { 0x4D5D898F, 0x3FE0C970 } }, - { { 0xBF11A493, 0xBC8EB6B8 } }, { { 0xDE6EE9B2, 0xBC88D3D7 } }, - { { 0x58150200, 0x3FEB090A } }, { { 0x541B4B23, 0x3FE11EB3 } }, - { { 0x300FFCCE, 0xBC8926DA } }, { { 0x69ABE4F1, 0xBC8EF23B } }, - { { 0x9E21D511, 0x3FEAD2BC } }, { { 0x63DEDB49, 0x3FE1734D } }, - { { 0x07BEA548, 0xBC847FBE } }, { { 0xCCC50575, 0xBC87EEF2 } }, - { { 0x290EA1A3, 0x3FEA9B66 } }, { { 0x39AE68C8, 0x3FE1C73B } }, - { { 0xE8B6DAC8, 0x3C39F630 } }, { { 0x267F6600, 0x3C8B25DD } }, - { { 0x1B02FAE2, 0x3FEA6309 } }, { { 0x9933EB59, 0x3FE21A79 } }, - { { 0x52248D10, 0xBC7E9111 } }, { { 0x77C68FB2, 0xBC83A7B1 } }, - { { 0xA0462782, 0x3FEA29A7 } }, { { 0x4CDD12DF, 0x3FE26D05 } }, - { { 0x015DF175, 0xBC7128BB } }, { { 0x3EF3770C, 0xBC85DA74 } }, - { { 0xEF29AF94, 0x3FE9EF43 } }, { { 0x25FAF3EA, 0x3FE2BEDB } }, - { { 0xB60445C2, 0x3C7B1DFC } }, { { 0xC796EE46, 0xBC514981 } }, - { { 0x47F38741, 0x3FE9B3E0 } }, { { 0xFCE17035, 0x3FE30FF7 } }, - { { 0x86712474, 0xBC830EE2 } }, { { 0x26F74A6F, 0xBC6EFCC6 } }, - { { 0xF4C7D742, 0x3FE9777E } }, { { 0xB10659F3, 0x3FE36058 } }, - { { 0xA240665E, 0xBC815479 } }, { { 0xA35857E7, 0xBC81FCB3 } }, - { { 0x499263FB, 0x3FE93A22 } }, { { 0x292050B9, 0x3FE3AFFA } }, - { { 0xA920DF0B, 0x3C83D419 } }, { { 0xE3954964, 0x3C7E3E25 } }, - { { 0xA3EF940D, 0x3FE8FBCC } }, { { 0x534556D4, 0x3FE3FED9 } }, - { { 0x9C86F2F1, 0xBC66DFA9 } }, { { 0x608C5061, 0x3C836916 } }, - { { 0x6B151741, 0x3FE8BC80 } }, { { 0x25091DD6, 0x3FE44CF3 } }, - { { 0x2ED1336D, 0xBC82C5E1 } }, { { 0x2CFDC6B3, 0x3C68076A } }, - { { 0x0FBA2EBF, 0x3FE87C40 } }, { { 0x9B9B0939, 0x3FE49A44 } }, - { { 0x0C3F64CD, 0xBC82DABC } }, { { 0x6D719B94, 0xBC827EE1 } }, - { { 0x0BFF976E, 0x3FE83B0E } }, { { 0xBBE3E5E9, 0x3FE4E6CA } }, - { { 0xF8EA3475, 0xBC76F420 } }, { { 0xEDCEB327, 0x3C63C293 } }, - { { 0xE3571771, 0x3FE7F8EC } }, { { 0x92A35596, 0x3FE53282 } }, - { { 0xCE93C917, 0xBC89C8D8 } }, { { 0x89DA0257, 0xBC7A12EB } }, - { { 0x226AAFAF, 0x3FE7B5DF } }, { { 0x348CECA0, 0x3FE57D69 } }, - { { 0xACDF0AD7, 0xBC70F537 } }, { { 0x992BFBB2, 0xBC875720 } }, - { { 0x5F037261, 0x3FE771E7 } }, { { 0xBE65018C, 0x3FE5C77B } }, - { { 0x8D84068F, 0x3C75CFCE } }, { { 0x9C0BC32A, 0x3C8069EA } }, - { { 0x37EFFF96, 0x3FE72D08 } }, { { 0x551D2CDF, 0x3FE610B7 } }, - { { 0x0F1D915C, 0x3C80D4EF } }, { { 0x52FF2A37, 0xBC7251B3 } }, - { { 0x54EAA8AF, 0x3FE6E744 } }, { { 0x25F0783D, 0x3FE65919 } }, - { { 0xC84E226E, 0xBC8DBC03 } }, { { 0xFBF5DE23, 0x3C8C3D64 } }, - { { 0x667F3BCD, 0x3FE6A09E } }, { { 0x667F3BCD, 0x3FE6A09E } }, - { { 0x13B26456, 0xBC8BDD34 } }, { { 0x13B26456, 0xBC8BDD34 } } -}; - -/* cos(pi * x), x=[0;1/512] */ -static const FFTS_ALIGN(16) ffts_double_t cos_coeff[3] = { - { { 0xC9BE45DE, 0xC013BD3C } }, - { { 0x081749FA, 0x40103C1F } }, - { { 0x047EE98B, 0xBFF55D10 } } -}; - -/* sin(pi * x), x=[0;1/512] */ -static const FFTS_ALIGN(16) ffts_double_t sin_coeff[4] = { - { { 0x54442D18, 0x400921FB } }, - { { 0xE62154CA, 0xC014ABBC } }, - { { 0xCEF16BFE, 0x40046675 } }, - { { 0xADE54A87, 0x40339228 } } -}; - -#ifndef M_1_256 -#define M_1_256 3.90625e-3 -#endif - -static int -ffts_cexp_32f64f(size_t n, size_t d, double *out); - -/* calculate cos(pi * n / d) and sin(pi * n / d) with maximum error less than 1 ULP, average ~0.5 ULP */ -int -ffts_cexp_32f(size_t n, size_t d, float *output) -{ - double FFTS_ALIGN(16) z[2]; - - if (!d || !output) - return -1; - - /* reduction */ - if (FFTS_UNLIKELY(n >= d)) - n %= d; - - ffts_cexp_32f64f(n, d, z); - - output[0] = (float) z[0]; - output[1] = (float) z[1]; - return 0; -} - -/* used as intermediate result for single precision calculations */ -static int -ffts_cexp_32f64f(size_t n, size_t d, double *output) -{ - const ffts_double_t *ct = (const ffts_double_t*) FFTS_ASSUME_ALIGNED_32(cos_sin_table); - const ffts_double_t *cc = (const ffts_double_t*) FFTS_ASSUME_ALIGNED_16(cos_coeff); - const ffts_double_t *sc = (const ffts_double_t*) FFTS_ASSUME_ALIGNED_16(sin_coeff); - double *out = FFTS_ASSUME_ALIGNED_16(output); - double c, s, cos_a, cos_b, sin_a, sin_b; - double cos_sign, sin_sign, sign, x, z; - int i, j, swap; - - /* we know this */ - FFTS_ASSUME(d > 0); - FFTS_ASSUME(n < d); - - /* determinate octant */ - if (n > d - n) { - sin_sign = -1.0; - n = d - n; - } else { - sin_sign = 1.0; - } - - n <<= 1; - if (n > d - n) { - cos_sign = -1.0; - swap = 1; - n += n - d; - } else { - cos_sign = 1.0; - swap = 0; - n <<= 1; - } - - if (n > d - n) { - swap ^= 1; - n = d - n; - } - - /* "binary long division" */ - for (i = 0, j = (1 << 5), n <<= 1; j && n; j >>= 1) { - if (n > d - n) { - n += n - d; - i += j; - } else { - n <<= 1; - } - } - - /* decide between two table values */ - if (n > d - n) { - i++; - n = d - n; - sign = -1.0; - } else { - sign = 1.0; - } - - /* divide by 256 is exact (as is the multiply with its reciprocal) */ - x = ((double) n / d) * M_1_256; - - /* 0 <= x <= 1/512 */ - z = x * x; - - /* table lookup */ - cos_a = ct[4 * i + 0].d; - sin_a = ct[4 * i + 2].d; - - /* evaluate polynomials */ - cos_b = 1.0 + z * (cc[0].d + z * (cc[1].d + z * cc[2].d)); - sin_b = x * (sc[0].d + z * (sc[1].d + z * (sc[2].d + z * sc[3].d))); - - /* sum or difference of angles */ - c = cos_a * cos_b - sign * sin_a * sin_b; - s = sin_a * cos_b + sign * cos_a * sin_b; - - if (swap) { - double tmp = c; - c = s; - s = tmp; - } - - out[0] = cos_sign * c; - out[1] = sin_sign * s; - return 0; -} - -int -ffts_generate_chirp_32f(ffts_cpx_32f *const table, size_t table_size) -{ - ffts_cpx_32f *lut; - size_t i, j, n; - - if (!table || !table_size) - return -1; - - n = 2 * table_size; - lut = ffts_aligned_malloc(n * sizeof(*lut)); - if (!lut) - return -1; - - /* initialize LUT */ - ffts_generate_cosine_sine_32f(lut, n); - - /* generate CZT sequence */ - for (i = 0, j = 0; i < table_size; ++i) { - table[i][0] = lut[j][0]; - table[i][1] = lut[j][1]; - - j += 2 * i + 1; - if (j >= n) - j -= n; - } - - ffts_aligned_free(lut); - return 0; -} - -/* generate cosine and sine tables with maximum error less than 1 ULP, average ~0.5 ULP -* using repeated subvector scaling algorithm, 16 - 20 times faster than -* direct library calling algorithm. -*/ -int -ffts_generate_cosine_sine_32f(ffts_cpx_32f *const table, size_t table_size) -{ - ffts_cpx_64f *const tmp = (ffts_cpx_64f *const) table; - double FFTS_ALIGN(16) z[2], zz[2], x[2], xx[2]; - size_t i, j, k, len; - - if (!table || !table_size) - return -1; - - if (FFTS_UNLIKELY(table_size == 1)) - goto exit; - - /* check if table size is a power of two */ - if (!(table_size & (table_size - 1))) - return ffts_generate_cosine_sine_pow2_32f(table, table_size); - - if (!(table_size & 1)) { - /* even table size -- check if multiply of four */ - if (!(table_size & 3)) { - /* multiply of four */ - len = table_size >> 2; - for (j = 1; 4 * j <= len; j <<= 1) { - ffts_cexp_32f64f(j, table_size, z); - - tmp[j][0] = z[0]; - tmp[j][1] = z[1]; - - tmp[len - j][0] = z[1]; - tmp[len - j][1] = z[0]; - - for (i = 1; i < j; i++) { - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - tmp[j + i][0] = zz[0]; - tmp[j + i][1] = zz[1]; - - tmp[len - j - i][0] = zz[1]; - tmp[len - j - i][1] = zz[0]; - } - } - - /* this loops zero or one times */ - for (k = j << 1; k <= len; j <<= 1) { - ffts_cexp_32f64f(j, table_size, z); - - tmp[j][0] = z[0]; - tmp[j][1] = z[1]; - if (k++ == len) - break; - - tmp[len - j][0] = z[1]; - tmp[len - j][1] = z[0]; - if (k++ == len) - break; - - for (i = 1; i < j; i++) { - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - tmp[j + i][0] = zz[0]; - tmp[j + i][1] = zz[1]; - if (k++ == len) - break; - - tmp[len - j - i][0] = zz[1]; - tmp[len - j - i][1] = zz[0]; - if (k++ == len) - break; - } - } - - /* convert doubles to floats */ - for (i = 1; i < len; i++) { - table[i][0] = (float) tmp[i][0]; - table[i][1] = (float) tmp[i][1]; - } - - table[len][0] = 0.0f; - table[len][1] = 1.0f; - - for (i = 1; i <= len; i++) { - table[len + i][0] = -table[i][1]; - table[len + i][1] = table[i][0]; - } - } else { - /* multiply of two */ - len = table_size >> 1; - for (j = 1; 4 * j <= len; j <<= 1) { - ffts_cexp_32f64f(j, table_size, z); - - tmp[j][0] = z[0]; - tmp[j][1] = z[1]; - - tmp[len - j][0] = -z[0]; - tmp[len - j][1] = z[1]; - - for (i = 1; i < j; i++) { - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - tmp[j + i][0] = zz[0]; - tmp[j + i][1] = zz[1]; - - tmp[len - j - i][0] = -zz[0]; - tmp[len - j - i][1] = zz[1]; - } - } - - /* this loops zero or one times */ - for (k = j << 1; k <= len; j <<= 1) { - ffts_cexp_32f64f(j, table_size, z); - - tmp[j][0] = z[0]; - tmp[j][1] = z[1]; - if (k++ == len) - break; - - tmp[len - j][0] = -z[0]; - tmp[len - j][1] = z[1]; - if (k++ == len) - break; - - for (i = 1; i < j; i++) { - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - tmp[j + i][0] = zz[0]; - tmp[j + i][1] = zz[1]; - if (k++ == len) - break; - - tmp[len - j - i][0] = -zz[0]; - tmp[len - j - i][1] = zz[1]; - if (k++ == len) - break; - } - } - - /* convert doubles to floats */ - for (i = 1; i < len; i++) { - table[i][0] = (float) tmp[i][0]; - table[i][1] = (float) tmp[i][1]; - } - - table[len][0] = -1.0f; - table[len][1] = 0.0f; - } - - /* duplicate lower half to higher */ - len = table_size >> 1; - for (i = 1; i < len; i++) { - table[table_size - i][0] = table[i][0]; - table[table_size - i][1] = -table[i][1]; - } - } else { - /* odd table size */ - - /* to avoid using temporary tables, generate the first 1/8 of table in - * double precision on lower half (and using the symmetry store - * the last 1/8 of table in single precision on higher half) - */ - for (j = 1; 8 * j < table_size; j <<= 1) { - ffts_cexp_32f64f(j, table_size, z); - - /* store double precision to lower half */ - tmp[j][0] = z[0]; - tmp[j][1] = z[1]; - - /* store single precision to higher half */ - table[table_size - j][0] = (float) z[0]; - table[table_size - j][1] = (float) -z[1]; - - for (i = 1; i < j; i++) { - /* use double precision for intermediate calculations */ - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - tmp[i + j][0] = zz[0]; - tmp[i + j][1] = zz[1]; - - table[table_size - i - j][0] = (float) zz[0]; - table[table_size - i - j][1] = (float) -zz[1]; - } - } - - /* now generate 1/2 of table in single precision on higher half */ - k = j << 1; - ffts_cexp_32f64f(j, table_size, z); - ffts_cexp_32f64f(k, table_size, x); - - /* store single precision to higher half */ - table[table_size - j][0] = (float) z[0]; - table[table_size - j][1] = (float) -z[1]; - - table[table_size - k][0] = (float) x[0]; - table[table_size - k][1] = (float) -x[1]; - - i = 1; - len = ((table_size + 1) >> 1) - k; - if (len > j) { - len -= j; - - xx[0] = x[0] * z[0] - x[1] * z[1]; - xx[1] = x[1] * z[0] + x[0] * z[1]; - - table[table_size - k - j][0] = (float) xx[0]; - table[table_size - k - j][1] = (float) -xx[1]; - - for (; i < len; i++) { - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - table[table_size - i - j][0] = (float) zz[0]; - table[table_size - i - j][1] = (float) -zz[1]; - - xx[0] = x[0] * tmp[i][0] - x[1] * tmp[i][1]; - xx[1] = x[1] * tmp[i][0] + x[0] * tmp[i][1]; - - table[table_size - i - k][0] = (float) xx[0]; - table[table_size - i - k][1] = (float) -xx[1]; - - xx[0] = x[0] * zz[0] - x[1] * zz[1]; - xx[1] = x[1] * zz[0] + x[0] * zz[1]; - - table[table_size - i - k - j][0] = (float) xx[0]; - table[table_size - i - k - j][1] = (float) -xx[1]; - } - - len = j; - } - - for (; i < len; i++) { - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - table[table_size - i - j][0] = (float) zz[0]; - table[table_size - i - j][1] = (float) -zz[1]; - - xx[0] = x[0] * tmp[i][0] - x[1] * tmp[i][1]; - xx[1] = x[1] * tmp[i][0] + x[0] * tmp[i][1]; - - table[table_size - i - k][0] = (float) xx[0]; - table[table_size - i - k][1] = (float) -xx[1]; - } - - for (; i < j; i++) { - zz[0] = z[0] * tmp[i][0] - z[1] * tmp[i][1]; - zz[1] = z[1] * tmp[i][0] + z[0] * tmp[i][1]; - - table[table_size - i - j][0] = (float) zz[0]; - table[table_size - i - j][1] = (float) -zz[1]; - } - - /* duplicate higher half to lower */ - len = table_size >> 1; - for (i = 1; i <= len; i++) { - table[i][0] = table[table_size - i][0]; - table[i][1] = -table[table_size - i][1]; - } - } - -exit: - /* cos(0) = 1.0, sin(0) = 0.0 */ - table[0][0] = 1.0f; - table[0][1] = 0.0f; - return 0; -} - -/* Oscar Buneman's method for generating a sequence of sines and cosines. -* Expired US Patent 4,878,187 A -*/ -#if HAVE_SSE2 -int -ffts_generate_cosine_sine_pow2_32f(ffts_cpx_32f *const table, int table_size) -{ - static const __m128d sign_swap = { 0.0, -0.0 }; - const __m128d *FFTS_RESTRICT ct; - const ffts_double_t *FFTS_RESTRICT cst; - const ffts_double_t *FFTS_RESTRICT hs; - __m128d FFTS_ALIGN(16) w[32]; - __m128d FFTS_ALIGN(16) h[32]; - int i, log_2, offset, step; - - /* size must be a power of two */ - if (!table || !table_size || (table_size & (table_size - 1))) { - return -1; - } - - /* the first */ - table[0][0] = 1.0f; - table[0][1] = -0.0f; - - if (FFTS_UNLIKELY(table_size == 1)) { - goto exit; - } - - if (FFTS_UNLIKELY(table_size == 2)) { - /* skip over */ - i = 1; - goto mid_point; - } - - cst = (const ffts_double_t*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_table); - - /* generate small tables from lookup table */ - if (table_size <= 128) { - step = 128 / table_size; - - for (i = 1; i < table_size/2; i++) { - float cosine = (float) cst[4 * i * step + 0].d; - float sine = (float) cst[4 * i * step + 1].d; - - table[i + 0][0] = cosine; - table[i + 0][1] = -sine; - table[table_size - i][0] = sine; - table[table_size - i][1] = -cosine; - } - - goto mid_point; - } - - /* calculate table offset */ - FFTS_ASSUME(table_size/2 > 64); - log_2 = ffts_ctzl(table_size); - FFTS_ASSUME(log_2 > 1); - offset = 32 - log_2; - step = log_2 - 8; - ct = (const __m128d*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_pi_table[4 * offset]); - hs = FFTS_ASSUME_ALIGNED_16(&half_secant[2 * offset]); - - /* initialize from lookup table */ - for (i = 0; i <= log_2; i++) { - w[i] = ct[2*i]; - - /* duplicate the high part */ - h[i] = _mm_set1_pd(hs[2*i].d); - } - - /* generate sine and cosine tables with maximum error less than 0.5 ULP */ - for (i = 1; i < table_size/2; i++) { - /* calculate trailing zeros in index */ - log_2 = ffts_ctzl(i); - - /* note that storing is not 16 byte aligned */ - _mm_storel_pi((__m64*) &table[i + 0], - _mm_cvtpd_ps(_mm_or_pd(w[log_2], sign_swap))); - _mm_storel_pi((__m64*) &table[table_size - i], _mm_cvtpd_ps( - _mm_or_pd(_mm_shuffle_pd(w[log_2], w[log_2], 1), sign_swap))); - - /* use lookup table when possible */ - if (log_2 > step) { - offset = ((2 * i) >> step) + (4 << (log_2 - step)); - if (offset >= COS_SIN_TABLE_SIZE) { - offset = COS_SIN_TABLE_SIZE - (2 << (log_2 - step)) - 4; - w[log_2] = _mm_loadr_pd(&cst[offset].d); - } else { - w[log_2] = _mm_load_pd(&cst[offset].d); - } - } else { - /* skip and find next trailing zero */ - offset = (log_2 + 2 + ffts_ctzl(~i >> (log_2 + 2))); - w[log_2] = _mm_mul_pd(h[log_2], _mm_add_pd(w[log_2 + 1], w[offset])); - } - } - -mid_point: - table[i][0] = 0.70710677f; - table[i][1] = -0.70710677f; - -exit: - return 0; -} - -int -ffts_generate_cosine_sine_pow2_64f(ffts_cpx_64f *const table, int table_size) -{ - static const __m128d sign_swap = { 0.0, -0.0 }; - const struct ffts_dd2_t *FFTS_RESTRICT ct; - const ffts_double_t *FFTS_RESTRICT cst; - const ffts_double_t *FFTS_RESTRICT hs; - struct ffts_dd2_t FFTS_ALIGN(16) w[32]; - struct ffts_dd2_t FFTS_ALIGN(16) h[32]; - struct ffts_dd2_t FFTS_ALIGN(16) sum; - int i, log_2, offset, step; - - /* size must be a power of two */ - if (!table || !table_size || (table_size & (table_size - 1))) { - return -1; - } - - /* the first */ - table[0][0] = 1.0; - table[0][1] = -0.0; - - if (FFTS_UNLIKELY(table_size == 1)) { - goto exit; - } - - if (FFTS_UNLIKELY(table_size == 2)) { - /* skip over */ - i = 1; - goto mid_point; - } - - cst = (const ffts_double_t*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_table); - - /* generate small tables from lookup table */ - if (table_size <= 128) { - step = 128 / table_size; - - for (i = 1; i < table_size/2; i++) { - double cosine = cst[4 * i * step + 0].d; - double sine = cst[4 * i * step + 1].d; - - table[i + 0][0] = cosine; - table[i + 0][1] = -sine; - table[table_size - i][0] = sine; - table[table_size - i][1] = -cosine; - } - - goto mid_point; - } - - /* calculate table offset */ - FFTS_ASSUME(table_size/2 > 64); - log_2 = ffts_ctzl(table_size); - FFTS_ASSUME(log_2 > 1); - offset = 32 - log_2; - step = log_2 - 8; - ct = (const struct ffts_dd2_t*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_pi_table[4 * offset]); - hs = FFTS_ASSUME_ALIGNED_16(&half_secant[2 * offset]); - - /* initialize from lookup table */ - for (i = 0; i <= log_2; i++) { - w[i] = ct[i]; - - /* duplicate the high and low parts */ - h[i].hi = _mm_set1_pd(hs[2*i + 0].d); - h[i].lo = _mm_set1_pd(hs[2*i + 1].d); - } - - /* generate sine and cosine tables with maximum error less than 0.5 ULP */ - for (i = 1; i < table_size/2; i++) { - /* calculate trailing zeros in index */ - log_2 = ffts_ctzl(i); - - /* result of ffts_dd_mul_dd is normalized */ - _mm_store_pd((double*) &table[i + 0], - _mm_or_pd(w[log_2].hi, sign_swap)); - _mm_store_pd((double*) &table[table_size - i], - _mm_or_pd(_mm_shuffle_pd(w[log_2].hi, w[log_2].hi, 1), sign_swap)); - - /* use lookup table when possible */ - if (log_2 > step) { - offset = ((2 * i) >> step) + (4 << (log_2 - step)); - if (offset >= COS_SIN_TABLE_SIZE) { - offset = COS_SIN_TABLE_SIZE - (2 << (log_2 - step)) - 4; - w[log_2].hi = _mm_loadr_pd(&cst[offset + 0].d); - w[log_2].lo = _mm_loadr_pd(&cst[offset + 2].d); - } else { - w[log_2].hi = _mm_load_pd(&cst[offset + 0].d); - w[log_2].lo = _mm_load_pd(&cst[offset + 2].d); - } - } else { - /* skip and find next trailing zero */ - offset = (log_2 + 2 + ffts_ctzl(~i >> (log_2 + 2))); - sum = ffts_dd2_add_dd2_unnormalized(&w[log_2 + 1], &w[offset]); - w[log_2] = ffts_dd2_mul_dd2(&h[log_2], &sum); - } - } - -mid_point: - table[i][0] = 0.707106781186547524; - table[i][1] = -0.707106781186547524; - -exit: - return 0; -} -#else -int -ffts_generate_cosine_sine_pow2_32f(ffts_cpx_32f *const table, int table_size) -{ - const ffts_cpx_64f *FFTS_RESTRICT ct; - const ffts_double_t *FFTS_RESTRICT cst; - const ffts_double_t *FFTS_RESTRICT hs; - ffts_cpx_64f FFTS_ALIGN(16) w[32]; - int i, log_2, offset, step; - - /* size must be a power of two */ - if (!table || !table_size || (table_size & (table_size - 1))) { - return -1; - } - - /* the first */ - table[0][0] = 1.0f; - table[0][1] = -0.0f; - - if (FFTS_UNLIKELY(table_size == 1)) { - goto exit; - } - - if (FFTS_UNLIKELY(table_size == 2)) { - /* skip over */ - i = 1; - goto mid_point; - } - - cst = (const ffts_double_t*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_table); - - /* generate small tables from lookup table */ - if (table_size <= 128) { - step = 128 / table_size; - - for (i = 1; i < table_size/2; i++) { - float cosine = (float) cst[4 * i * step + 0].d; - float sine = (float) cst[4 * i * step + 1].d; - - table[i + 0][0] = cosine; - table[i + 0][1] = -sine; - table[table_size - i][0] = sine; - table[table_size - i][1] = -cosine; - } - - goto mid_point; - } - - /* calculate table offset */ - FFTS_ASSUME(table_size/2 > 64); - log_2 = ffts_ctzl(table_size); - FFTS_ASSUME(log_2 > 1); - offset = 32 - log_2; - step = log_2 - 8; - ct = (const ffts_cpx_64f*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_pi_table[4 * offset]); - hs = FFTS_ASSUME_ALIGNED_16(&half_secant[2 * offset]); - - /* initialize from lookup table */ - for (i = 0; i <= log_2; i++) { - w[i][0] = ct[2*i][0]; - w[i][1] = ct[2*i][1]; - } - - /* generate sine and cosine tables with maximum error less than 0.5 ULP */ - for (i = 1; i < table_size/2; i++) { - /* calculate trailing zeros in index */ - log_2 = ffts_ctzl(i); - - table[i + 0][0] = (float) w[log_2][0]; - table[i + 0][1] = (float) -w[log_2][1]; - table[table_size - i][0] = (float) w[log_2][1]; - table[table_size - i][1] = (float) -w[log_2][0]; - - /* use lookup table when possible */ - if (log_2 > step) { - offset = ((2 * i) >> step) + (4 << (log_2 - step)); - if (offset >= 260) { - offset = 260 - (2 << (log_2 - step)) - 4; - w[log_2][0] = cst[offset + 0].d; - w[log_2][1] = cst[offset + 1].d; - } else { - w[log_2][0] = cst[offset + 0].d; - w[log_2][1] = cst[offset + 1].d; - } - } else { - /* skip and find next trailing zero */ - offset = (log_2 + 2 + ffts_ctzl(~i >> (log_2 + 2))); - w[log_2][0] = hs[2 * log_2].d * (w[log_2 + 1][0] + w[offset][0]); - w[log_2][1] = hs[2 * log_2].d * (w[log_2 + 1][1] + w[offset][1]); - } - } - -mid_point: - table[i][0] = 0.70710677f; - table[i][1] = -0.70710677f; - -exit: - return 0; -} - -int -ffts_generate_cosine_sine_pow2_64f(ffts_cpx_64f *const table, int table_size) -{ - const struct ffts_dd_t *FFTS_RESTRICT ct; - const ffts_double_t *FFTS_RESTRICT cst; - const struct ffts_dd_t *FFTS_RESTRICT hs; - struct ffts_dd_t FFTS_ALIGN(16) w[32][2]; - int i, log_2, offset, step; - - /* size must be a power of two */ - if (!table || !table_size || (table_size & (table_size - 1))) { - return -1; - } - - /* the first */ - table[0][0] = 1.0; - table[0][1] = -0.0; - - if (FFTS_UNLIKELY(table_size == 1)) { - goto exit; - } - - if (FFTS_UNLIKELY(table_size == 2)) { - /* skip over */ - i = 1; - goto mid_point; - } - - cst = (const ffts_double_t*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_table); - - /* generate small tables from lookup table */ - if (table_size <= 128) { - step = 128 / table_size; - - for (i = 1; i < table_size/2; i++) { - double cosine = cst[4 * i * step + 0].d; - double sine = cst[4 * i * step + 1].d; - - table[i + 0][0] = cosine; - table[i + 0][1] = -sine; - table[table_size - i][0] = sine; - table[table_size - i][1] = -cosine; - } - - goto mid_point; - } - - /* calculate table offset */ - FFTS_ASSUME(table_size/2 > 64); - log_2 = ffts_ctzl(table_size); - FFTS_ASSUME(log_2 > 1); - offset = 32 - log_2; - step = log_2 - 8; - ct = (const struct ffts_dd_t*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_pi_table[4 * offset]); - hs = (const struct ffts_dd_t*) &half_secant[2 * offset]; - - /* initialize from lookup table */ - for (i = 0; i <= log_2; i++) { - w[i][0].hi = ct[2*i + 0].hi; - w[i][0].lo = ct[2*i + 1].hi; - w[i][1].hi = ct[2*i + 0].lo; - w[i][1].lo = ct[2*i + 1].lo; - } - - /* generate sine and cosine tables with maximum error less than 0.5 ULP */ - for (i = 1; i < table_size/2; i++) { - /* calculate trailing zeros in index */ - log_2 = ffts_ctzl(i); - - /* result of ffts_dd_mul_dd is normalized */ - table[i + 0][0] = w[log_2][0].hi; - table[i + 0][1] = -w[log_2][1].hi; - table[table_size - i][0] = w[log_2][1].hi; - table[table_size - i][1] = -w[log_2][0].hi; - - /* use lookup table when possible */ - if (log_2 > step) { - offset = ((2 * i) >> step) + (4 << (log_2 - step)); - if (offset >= 260) { - offset = 260 - (2 << (log_2 - step)) - 4; - w[log_2][0].hi = cst[offset + 1].d; - w[log_2][1].hi = cst[offset + 0].d; - w[log_2][0].lo = cst[offset + 3].d; - w[log_2][1].lo = cst[offset + 2].d; - } else { - w[log_2][0].hi = cst[offset + 0].d; - w[log_2][1].hi = cst[offset + 1].d; - w[log_2][0].lo = cst[offset + 2].d; - w[log_2][1].lo = cst[offset + 3].d; - } - } else { - /* skip and find next trailing zero */ - offset = (log_2 + 2 + ffts_ctzl(~i >> (log_2 + 2))); - w[log_2][0] = ffts_dd_mul_dd(hs[log_2], - ffts_dd_add_dd_unnormalized(w[log_2 + 1][0], w[offset][0])); - w[log_2][1] = ffts_dd_mul_dd(hs[log_2], - ffts_dd_add_dd_unnormalized(w[log_2 + 1][1], w[offset][1])); - } - } - -mid_point: - table[i][0] = 0.707106781186547524; - table[i][1] = -0.707106781186547524; - -exit: - return 0; -} -#endif - -int -ffts_generate_table_1d_real_32f(struct _ffts_plan_t *const p, - int sign, - int invert) -{ - const ffts_cpx_64f *FFTS_RESTRICT ct; - const ffts_double_t *FFTS_RESTRICT hs; - ffts_cpx_64f FFTS_ALIGN(16) w[32]; - int i, log_2, offset, N; - float *A, *B; - - if (!p) { - return -1; - } - - A = (float*) FFTS_ASSUME_ALIGNED_32(p->A); - B = (float*) FFTS_ASSUME_ALIGNED_32(p->B); - N = (int) p->N; - - /* the first */ - if (sign < 0) { - A[0] = 0.5f; - A[1] = -0.5f; - B[0] = invert ? -0.5f : 0.5f; - B[1] = 0.5f; - } else { - /* peel of the first */ - A[0] = 1.0f; - A[1] = invert ? 1.0f : -1.0f; - B[0] = 1.0f; - B[1] = 1.0f; - } - - if (FFTS_UNLIKELY(N == 4)) { - i = 1; - goto last; - } - - /* calculate table offset */ - FFTS_ASSUME(N / 4 > 1); - log_2 = ffts_ctzl(N); - FFTS_ASSUME(log_2 > 2); - offset = 34 - log_2; - ct = (const ffts_cpx_64f*) - FFTS_ASSUME_ALIGNED_32(&cos_sin_pi_table[4 * offset]); - hs = FFTS_ASSUME_ALIGNED_16(&half_secant[2 * offset]); - - /* initialize from lookup table */ - for (i = 0; i <= log_2; i++) { - w[i][0] = ct[2*i][0]; - w[i][1] = ct[2*i][1]; - } - - if (sign < 0) { - for (i = 1; i < N/4; i++) { - float t0, t1, t2; - - /* calculate trailing zeros in index */ - log_2 = ffts_ctzl(i); - - t0 = (float) (0.5 * (1.0 - w[log_2][1])); - t1 = (float) (0.5 * w[log_2][0]); - t2 = (float) (0.5 * (1.0 + w[log_2][1])); - - A[ 2 * i + 0] = t0; - A[N - 2 * i + 0] = t0; - A[ 2 * i + 1] = -t1; - A[N - 2 * i + 1] = t1; - - B[ 2 * i + 0] = invert ? -t2 : t2; - B[N - 2 * i + 0] = invert ? -t2 : t2; - B[ 2 * i + 1] = t1; - B[N - 2 * i + 1] = -t1; - - /* skip and find next trailing zero */ - offset = (log_2 + 2 + ffts_ctzl(~i >> (log_2 + 2))); - w[log_2][0] = hs[2 * log_2].d * (w[log_2 + 1][0] + w[offset][0]); - w[log_2][1] = hs[2 * log_2].d * (w[log_2 + 1][1] + w[offset][1]); - } - } else { - for (i = 1; i < N/4; i++) { - float t0, t1, t2; - - /* calculate trailing zeros in index */ - log_2 = ffts_ctzl(i); - - t0 = (float) (1.0 - w[log_2][1]); - t1 = (float) w[log_2][0]; - t2 = (float) (1.0 + w[log_2][1]); - - A[ 2 * i + 0] = t0; - A[N - 2 * i + 0] = t0; - A[ 2 * i + 1] = invert ? t1 : -t1; - A[N - 2 * i + 1] = invert ? -t1 : t1; - - B[ 2 * i + 0] = t2; - B[N - 2 * i + 0] = t2; - B[ 2 * i + 1] = t1; - B[N - 2 * i + 1] = -t1; - - /* skip and find next trailing zero */ - offset = (log_2 + 2 + ffts_ctzl(~i >> (log_2 + 2))); - w[log_2][0] = hs[2 * log_2].d * (w[log_2 + 1][0] + w[offset][0]); - w[log_2][1] = hs[2 * log_2].d * (w[log_2 + 1][1] + w[offset][1]); - } - } - -last: - if (sign < 0) { - A[2 * i + 0] = 0.0f; - A[2 * i + 1] = 0.0f; - B[2 * i + 0] = invert ? -1.0f : 1.0f; - B[2 * i + 1] = 0.0f; - } else { - A[2 * i + 0] = 0.0f; - A[2 * i + 1] = 0.0f; - B[2 * i + 0] = 2.0f; - B[2 * i + 1] = 0.0f; - } - - return 0; -} diff --git a/FFTS/Sources/FFTS/src/ffts_trig.h b/FFTS/Sources/FFTS/src/ffts_trig.h deleted file mode 100644 index f988340..0000000 --- a/FFTS/Sources/FFTS/src/ffts_trig.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2015-2016, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_TRIG_H -#define FFTS_TRIG_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts_internal.h" - -/* calculate cos(pi * n / d) and sin(pi * n / d) with maximum error less than 1 ULP, average ~0.5 ULP */ -int -ffts_cexp_32f(size_t n, size_t d, float *output); - -int -ffts_generate_chirp_32f(ffts_cpx_32f *const table, size_t table_size); - -/* generate cosine and sine tables with maximum error less than 1 ULP, average ~0.5 ULP */ -int -ffts_generate_cosine_sine_32f(ffts_cpx_32f *const table, size_t table_size); - -int -ffts_generate_cosine_sine_pow2_32f(ffts_cpx_32f *const table, int table_size); - -int -ffts_generate_cosine_sine_pow2_64f(ffts_cpx_64f *const table, int table_size); - -int -ffts_generate_table_1d_real_32f(struct _ffts_plan_t *const p, - int sign, - int invert); - -#endif /* FFTS_TRIG_H */ diff --git a/FFTS/Sources/FFTS/src/macros-alpha.h b/FFTS/Sources/FFTS/src/macros-alpha.h deleted file mode 100644 index c32d1e9..0000000 --- a/FFTS/Sources/FFTS/src/macros-alpha.h +++ /dev/null @@ -1,261 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2013, Michael J. Cree -Copyright (c) 2012, 2013, Anthony M. Blake - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_MACROS_ALPHA_H -#define FFTS_MACROS_ALPHA_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include "ffts_attributes.h" - -#ifdef HAVE_STRING_H -#include -#endif - -#ifdef HAVE_STDLIB_H -#include -#endif - -typedef union { - struct { - float r1; - float i1; - float r2; - float i2; - } r; - uint32_t u[4]; -} V4SF; - -static FFTS_ALWAYS_INLINE V4SF -V4SF_LIT4(float f3, float f2, float f1, float f0) -{ - V4SF z; - - z.r.r1 = f0; - z.r.i1 = f1; - z.r.r2 = f2; - z.r.i2 = f3; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_ADD(V4SF x, V4SF y) -{ - V4SF z; - - z.r.r1 = x.r.r1 + y.r.r1; - z.r.i1 = x.r.i1 + y.r.i1; - z.r.r2 = x.r.r2 + y.r.r2; - z.r.i2 = x.r.i2 + y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_SUB(V4SF x, V4SF y) -{ - V4SF z; - - z.r.r1 = x.r.r1 - y.r.r1; - z.r.i1 = x.r.i1 - y.r.i1; - z.r.r2 = x.r.r2 - y.r.r2; - z.r.i2 = x.r.i2 - y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_MUL(V4SF x, V4SF y) -{ - V4SF z; - - z.r.r1 = x.r.r1 * y.r.r1; - z.r.i1 = x.r.i1 * y.r.i1; - z.r.r2 = x.r.r2 * y.r.r2; - z.r.i2 = x.r.i2 * y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_XOR(V4SF x, V4SF y) -{ - V4SF z; - - z.u[0] = x.u[0] ^ y.u[0]; - z.u[1] = x.u[1] ^ y.u[1]; - z.u[2] = x.u[2] ^ y.u[2]; - z.u[3] = x.u[3] ^ y.u[3]; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_SWAP_PAIRS(V4SF x) -{ - V4SF z; - - z.r.r1 = x.r.i1; - z.r.i1 = x.r.r1; - z.r.r2 = x.r.i2; - z.r.i2 = x.r.r2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_BLEND(V4SF x, V4SF y) -{ - V4SF z; - - z.r.r1 = x.r.r1; - z.r.i1 = x.r.i1; - z.r.r2 = y.r.r2; - z.r.i2 = y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_UNPACK_HI(V4SF x, V4SF y) -{ - V4SF z; - - z.r.r1 = x.r.r2; - z.r.i1 = x.r.i2; - z.r.r2 = y.r.r2; - z.r.i2 = y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_UNPACK_LO(V4SF x, V4SF y) -{ - V4SF z; - - z.r.r1 = x.r.r1; - z.r.i1 = x.r.i1; - z.r.r2 = y.r.r1; - z.r.i2 = y.r.i1; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_DUPLICATE_RE(V4SF x) -{ - V4SF z; - - z.r.r1 = x.r.r1; - z.r.i1 = x.r.r1; - z.r.r2 = x.r.r2; - z.r.i2 = x.r.r2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_DUPLICATE_IM(V4SF x) -{ - V4SF z; - - z.r.r1 = x.r.i1; - z.r.i1 = x.r.i1; - z.r.r2 = x.r.i2; - z.r.i2 = x.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMUL(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_SUB(re, im); -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULJ(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_ADD(re, im); -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_MULI(int inv, V4SF x) -{ - V4SF z; - - if (inv) { - z.r.r1 = -x.r.r1; - z.r.i1 = x.r.i1; - z.r.r2 = -x.r.r2; - z.r.i2 = x.r.i2; - } else { - z.r.r1 = x.r.r1; - z.r.i1 = -x.r.i1; - z.r.r2 = x.r.r2; - z.r.i2 = -x.r.i2; - } - - return z; -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULI(int inv, V4SF x) -{ - return V4SF_SWAP_PAIRS(V4SF_MULI(inv, x)); -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_LD(const void *s) -{ - V4SF z; - memcpy(&z, s, sizeof(z)); - return z; -} - -static FFTS_ALWAYS_INLINE void -V4SF_ST(void *d, V4SF s) -{ - V4SF *r = (V4SF*) d; - *r = s; -} - -#endif /* FFTS_MACROS_ALPHA_H */ \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/macros-altivec.h b/FFTS/Sources/FFTS/src/macros-altivec.h deleted file mode 100644 index 33f2346..0000000 --- a/FFTS/Sources/FFTS/src/macros-altivec.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2013, Michael J. Cree - Copyright (c) 2012, 2013, Anthony M. Blake - Copyright (c) 2019, Timothy Pearson - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef __MACROS_ALTIVEC_H__ -#define __MACROS_ALTIVEC_H__ - -#include -#include - -#define restrict - -typedef vector float V4SF; -typedef vector unsigned char VUC; - -#define V4SF_LIT4(f0,f1,f2,f3) ((V4SF){f0, f1, f2, f3}) - -#define V4SF_ADD(x,y) vec_add(x,y) -#define V4SF_SUB(x,y) vec_sub(x,y) -#define V4SF_MUL(x,y) vec_madd(x,y,(V4SF){0}) -#define V4SF_MULADD(x,y,z) vec_madd(x,y,z) -#define V4SF_NMULSUB(x,y,z) vec_nmsub(x,y,z) -#define V4SF_XOR(x,y) vec_xor((x),(y)) -#define V4SF_SWAPPAIRS(x) \ - vec_perm(x,x,(VUC){0x04,0x05,0x06,0x07,0x00,0x01,0x02,0x03, \ - 0x0c,0x0d,0x0e,0x0f,0x08,0x09,0x0a,0x0b}) - -#define V4SF_BLEND(x,y) \ - vec_perm(x,y,(VUC){0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, \ - 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f}) - -#define V4SF_UNPACK_HI(x,y) \ - vec_perm(x,y,(VUC){0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, \ - 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f}) - -#define V4SF_UNPACK_LO(x,y) \ - vec_perm(x,y,(VUC){0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, \ - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17}) - -#define V4SF_DUPLICATE_RE(x) \ - vec_perm(x,x,(VUC){0x00,0x01,0x02,0x03,0x00,0x01,0x02,0x03, \ - 0x18,0x19,0x1a,0x1b,0x18,0x19,0x1a,0x1b}) - -#define V4SF_DUPLICATE_IM(x) \ - vec_perm(x,x,(VUC){0x04,0x05,0x06,0x07,0x04,0x05,0x06,0x07, \ - 0x1c,0x1d,0x1e,0x1f,0x1c,0x1d,0x1e,0x1f}) - - -static inline V4SF V4SF_IMUL(V4SF d, V4SF re, V4SF im) -{ - im = V4SF_MUL(im, V4SF_SWAPPAIRS(d)); - re = V4SF_MUL(re, d); - return V4SF_SUB(re, im); -} - - -static inline V4SF V4SF_IMULJ(V4SF d, V4SF re, V4SF im) -{ - im = V4SF_MUL(im, V4SF_SWAPPAIRS(d)); - return V4SF_MULADD(re, d, im); -} - -#ifndef __GNUC__ -/* gcc (4.6 and 4.7) ICEs on this code! */ -static inline V4SF MULI(int inv, V4SF x) -{ - return V4SF_XOR(x, inv ? V4SF_LIT4(-0.0f,0.0f,-0.0f,0.0f) : V4SF_LIT4(0.0f,-0.0f,0.0f,-0.0f)); -} -#else -/* but compiles this fine... */ -static inline V4SF MULI(int inv, V4SF x) -{ - V4SF t; - t = inv ? V4SF_LIT4(-0.0f,0.0f,-0.0f,0.0f) : V4SF_LIT4(0.0f,-0.0f,0.0f,-0.0f); - return V4SF_XOR(x, t); -} -#endif - - -static inline V4SF V4SF_IMULI(int inv, V4SF x) -{ - return V4SF_SWAPPAIRS(MULI(inv, x)); -} - - -static inline V4SF V4SF_LD(const void *s) -{ - V4SF *d = (V4SF *)s; - return *d; -} - - -static inline void V4SF_ST(void *d, V4SF s) -{ - V4SF *r = (V4SF *)d; - *r = s; -} -#endif -// vim: set autoindent noexpandtab tabstop=3 shiftwidth=3: diff --git a/FFTS/Sources/FFTS/src/macros-avx.h b/FFTS/Sources/FFTS/src/macros-avx.h deleted file mode 100644 index 6dadf61..0000000 --- a/FFTS/Sources/FFTS/src/macros-avx.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_MACROS_SSE_H -#define FFTS_MACROS_SSE_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include - -typedef __m128 V4SF; - -#define V4SF_ADD _mm_add_ps -#define V4SF_SUB _mm_sub_ps -#define V4SF_MUL _mm_mul_ps -#define V4SF_LIT4 _mm_set_ps -#define V4SF_XOR _mm_xor_ps -#define V4SF_ST _mm_store_ps -#define V4SF_LD _mm_load_ps - -#define V4SF_SWAP_PAIRS(x) \ - (_mm_shuffle_ps(x, x, _MM_SHUFFLE(2,3,0,1))) - -/* note: order is swapped */ -#define V4SF_UNPACK_HI(x,y) \ - (_mm_movehl_ps(y, x)) - -#define V4SF_UNPACK_LO(x,y) \ - (_mm_movelh_ps(x, y)) - -#define V4SF_BLEND(x, y) \ - (_mm_shuffle_ps(x, y, _MM_SHUFFLE(3,2,1,0))) - -#define V4SF_DUPLICATE_RE(r) \ - (_mm_shuffle_ps(r, r, _MM_SHUFFLE(2,2,0,0))) - -#define V4SF_DUPLICATE_IM(r) \ - (_mm_shuffle_ps(r, r, _MM_SHUFFLE(3,3,1,1))) - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULI(int inv, V4SF a) -{ - if (inv) { - return V4SF_SWAP_PAIRS(V4SF_XOR(a, V4SF_LIT4(0.0f, -0.0f, 0.0f, -0.0f))); - } else { - return V4SF_SWAP_PAIRS(V4SF_XOR(a, V4SF_LIT4(-0.0f, 0.0f, -0.0f, 0.0f))); - } -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMUL(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_SUB(re, im); -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULJ(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_ADD(re, im); -} - -#ifdef FFTS_DOUBLE -typedef __m256d V4DF; - -#define V4DF_ADD _mm256_add_pd -#define V4DF_SUB _mm256_sub_pd -#define V4DF_MUL _mm256_mul_pd -#define V4DF_LIT4 _mm256_set_pd -#define V4DF_XOR _mm256_xor_pd -#define V4DF_LD _mm256_loadu_pd -#define V4DF_ST _mm256_storeu_pd - -#define V4DF_SWAP_PAIRS(x) \ - (_mm256_permute_pd(x, (1 << 2) | (1 << 0))) - -#define V4DF_BLEND(x, y) \ - (_mm256_blend_pd(x, y, (1 << 3) | (1 << 2))) - -#define V4DF_UNPACK_HI(x, y) \ - (_mm256_permute2f128_pd(x, y, (1 << 5) | (1 << 4) | (1 << 0))) - -#define V4DF_UNPACK_LO(x, y) \ - (_mm256_permute2f128_pd(x, y, (1 << 5))) - -#define V4DF_DUPLICATE_RE(x) \ - (_mm256_movedup_pd(x)) - -#define V4DF_DUPLICATE_IM(x) \ - (_mm256_permute_pd(x, (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0))) - -static FFTS_ALWAYS_INLINE V4DF -V4DF_IMUL(V4DF d, V4DF re, V4DF im) -{ - re = V4DF_MUL(re, d); - im = V4DF_MUL(im, V4DF_SWAP_PAIRS(d)); - return V4DF_SUB(re, im); -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_IMULJ(V4DF d, V4DF re, V4DF im) -{ - re = V4DF_MUL(re, d); - im = V4DF_MUL(im, V4DF_SWAP_PAIRS(d)); - return V4DF_ADD(re, im); -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_IMULI(int inv, V4DF a) -{ - if (inv) { - return V4DF_SWAP_PAIRS(V4DF_XOR(a, V4DF_LIT4(0.0, -0.0, 0.0, -0.0))); - } else { - return V4DF_SWAP_PAIRS(V4DF_XOR(a, V4DF_LIT4(-0.0, 0.0, -0.0, 0.0))); - } -} -#endif - -#endif /* FFTS_MACROS_AVX_H */ diff --git a/FFTS/Sources/FFTS/src/macros-neon.h b/FFTS/Sources/FFTS/src/macros-neon.h deleted file mode 100644 index f0d1fff..0000000 --- a/FFTS/Sources/FFTS/src/macros-neon.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, 2013, Anthony M. Blake - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_MACROS_NEON_H -#define FFTS_MACROS_NEON_H - -#include - -#ifdef HAVE_STDLIB_H -#include -#endif - -typedef float32x4_t V4SF; -typedef float32x4x2_t V4SF2; - -#define V4SF_ADD vaddq_f32 -#define V4SF_SUB vsubq_f32 -#define V4SF_MUL vmulq_f32 - -#define V4SF_XOR(x,y) \ - (vreinterpretq_f32_u32(veorq_u32(vreinterpretq_u32_f32(x), vreinterpretq_u32_f32(y)))) - -#define V4SF_ST vst1q_f32 -#define V4SF_LD vld1q_f32 - -#define V4SF_SWAP_PAIRS(x) \ - (vrev64q_f32(x)) - -#define V4SF_UNPACK_HI(a,b) \ - (vcombine_f32(vget_high_f32(a), vget_high_f32(b))) - -#define V4SF_UNPACK_LO(a,b) \ - (vcombine_f32(vget_low_f32(a), vget_low_f32(b))) - -#define V4SF_BLEND(x,y) \ - (vcombine_f32(vget_low_f32(x), vget_high_f32(y))) - -static FFTS_ALWAYS_INLINE V4SF -V4SF_LIT4(float f3, float f2, float f1, float f0) -{ - float FFTS_ALIGN(16) d[4] = {f0, f1, f2, f3}; - return V4SF_LD(d); -} - -#define V4SF_DUPLICATE_RE(r) \ - vcombine_f32(vdup_lane_f32(vget_low_f32(r),0), vdup_lane_f32(vget_high_f32(r),0)) - -#define V4SF_DUPLICATE_IM(r) \ - vcombine_f32(vdup_lane_f32(vget_low_f32(r),1), vdup_lane_f32(vget_high_f32(r),1)) - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULI(int inv, V4SF a) -{ - if (inv) { - return V4SF_SWAP_PAIRS(V4SF_XOR(a, V4SF_LIT4(0.0f, -0.0f, 0.0f, -0.0f))); - } else { - return V4SF_SWAP_PAIRS(V4SF_XOR(a, V4SF_LIT4(-0.0f, 0.0f, -0.0f, 0.0f))); - } -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMUL(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_SUB(re, im); -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULJ(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_ADD(re, im); -} - -#define V4SF2_ST vst2q_f32 -#define V4SF2_LD vld2q_f32 - -static FFTS_ALWAYS_INLINE void -V4SF2_STORE_SPR(float *addr, V4SF2 p) -{ - vst1q_f32(addr, p.val[0]); - vst1q_f32(addr + 4, p.val[1]); -} - -#endif /* FFTS_MACROS_NEON_H */ diff --git a/FFTS/Sources/FFTS/src/macros-sse.h b/FFTS/Sources/FFTS/src/macros-sse.h deleted file mode 100644 index 46e1f29..0000000 --- a/FFTS/Sources/FFTS/src/macros-sse.h +++ /dev/null @@ -1,315 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_MACROS_SSE_H -#define FFTS_MACROS_SSE_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include - -typedef __m128 V4SF; - -#define V4SF_ADD _mm_add_ps -#define V4SF_SUB _mm_sub_ps -#define V4SF_MUL _mm_mul_ps -#define V4SF_LIT4 _mm_set_ps -#define V4SF_XOR _mm_xor_ps -#define V4SF_ST _mm_store_ps -#define V4SF_LD _mm_load_ps - -#define V4SF_SWAP_PAIRS(x) \ - (_mm_shuffle_ps(x, x, _MM_SHUFFLE(2,3,0,1))) - -/* note: order is swapped */ -#define V4SF_UNPACK_HI(x,y) \ - (_mm_movehl_ps(y, x)) - -#define V4SF_UNPACK_LO(x,y) \ - (_mm_movelh_ps(x, y)) - -#define V4SF_BLEND(x, y) \ - (_mm_shuffle_ps(x, y, _MM_SHUFFLE(3,2,1,0))) - -#define V4SF_DUPLICATE_RE(r) \ - (_mm_shuffle_ps(r, r, _MM_SHUFFLE(2,2,0,0))) - -#define V4SF_DUPLICATE_IM(r) \ - (_mm_shuffle_ps(r, r, _MM_SHUFFLE(3,3,1,1))) - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULI(int inv, V4SF a) -{ - if (inv) { - return V4SF_SWAP_PAIRS(V4SF_XOR(a, V4SF_LIT4(0.0f, -0.0f, 0.0f, -0.0f))); - } else { - return V4SF_SWAP_PAIRS(V4SF_XOR(a, V4SF_LIT4(-0.0f, 0.0f, -0.0f, 0.0f))); - } -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMUL(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_SUB(re, im); -} - -static FFTS_ALWAYS_INLINE V4SF -V4SF_IMULJ(V4SF d, V4SF re, V4SF im) -{ - re = V4SF_MUL(re, d); - im = V4SF_MUL(im, V4SF_SWAP_PAIRS(d)); - return V4SF_ADD(re, im); -} - -#ifdef FFTS_DOUBLE -typedef union { - struct { - double r1; - double i1; - double r2; - double i2; - } r; - uint32_t u[8]; -} V4DF; - -static FFTS_ALWAYS_INLINE V4DF -V4DF_LIT4(double f3, double f2, double f1, double f0) -{ - V4DF z; - - z.r.r1 = f0; - z.r.i1 = f1; - z.r.r2 = f2; - z.r.i2 = f3; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_ADD(V4DF x, V4DF y) -{ - V4DF z; - - z.r.r1 = x.r.r1 + y.r.r1; - z.r.i1 = x.r.i1 + y.r.i1; - z.r.r2 = x.r.r2 + y.r.r2; - z.r.i2 = x.r.i2 + y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_SUB(V4DF x, V4DF y) -{ - V4DF z; - - z.r.r1 = x.r.r1 - y.r.r1; - z.r.i1 = x.r.i1 - y.r.i1; - z.r.r2 = x.r.r2 - y.r.r2; - z.r.i2 = x.r.i2 - y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_MUL(V4DF x, V4DF y) -{ - V4DF z; - - z.r.r1 = x.r.r1 * y.r.r1; - z.r.i1 = x.r.i1 * y.r.i1; - z.r.r2 = x.r.r2 * y.r.r2; - z.r.i2 = x.r.i2 * y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_XOR(V4DF x, V4DF y) -{ - V4DF z; - - z.u[0] = x.u[0] ^ y.u[0]; - z.u[1] = x.u[1] ^ y.u[1]; - z.u[2] = x.u[2] ^ y.u[2]; - z.u[3] = x.u[3] ^ y.u[3]; - z.u[4] = x.u[4] ^ y.u[4]; - z.u[5] = x.u[5] ^ y.u[5]; - z.u[6] = x.u[6] ^ y.u[6]; - z.u[7] = x.u[7] ^ y.u[7]; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_SWAP_PAIRS(V4DF x) -{ - V4DF z; - - z.r.r1 = x.r.i1; - z.r.i1 = x.r.r1; - z.r.r2 = x.r.i2; - z.r.i2 = x.r.r2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_BLEND(V4DF x, V4DF y) -{ - V4DF z; - - z.r.r1 = x.r.r1; - z.r.i1 = x.r.i1; - z.r.r2 = y.r.r2; - z.r.i2 = y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_UNPACK_HI(V4DF x, V4DF y) -{ - V4DF z; - - z.r.r1 = x.r.r2; - z.r.i1 = x.r.i2; - z.r.r2 = y.r.r2; - z.r.i2 = y.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_UNPACK_LO(V4DF x, V4DF y) -{ - V4DF z; - - z.r.r1 = x.r.r1; - z.r.i1 = x.r.i1; - z.r.r2 = y.r.r1; - z.r.i2 = y.r.i1; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_DUPLICATE_RE(V4DF x) -{ - V4DF z; - - z.r.r1 = x.r.r1; - z.r.i1 = x.r.r1; - z.r.r2 = x.r.r2; - z.r.i2 = x.r.r2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_DUPLICATE_IM(V4DF x) -{ - V4DF z; - - z.r.r1 = x.r.i1; - z.r.i1 = x.r.i1; - z.r.r2 = x.r.i2; - z.r.i2 = x.r.i2; - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_IMUL(V4DF d, V4DF re, V4DF im) -{ - re = V4DF_MUL(re, d); - im = V4DF_MUL(im, V4DF_SWAP_PAIRS(d)); - return V4DF_SUB(re, im); -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_IMULJ(V4DF d, V4DF re, V4DF im) -{ - re = V4DF_MUL(re, d); - im = V4DF_MUL(im, V4DF_SWAP_PAIRS(d)); - return V4DF_ADD(re, im); -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_MULI(int inv, V4DF x) -{ - V4DF z; - - if (inv) { - z.r.r1 = -x.r.r1; - z.r.i1 = x.r.i1; - z.r.r2 = -x.r.r2; - z.r.i2 = x.r.i2; - } else { - z.r.r1 = x.r.r1; - z.r.i1 = -x.r.i1; - z.r.r2 = x.r.r2; - z.r.i2 = -x.r.i2; - } - - return z; -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_IMULI(int inv, V4DF x) -{ - return V4DF_SWAP_PAIRS(V4DF_MULI(inv, x)); -} - -static FFTS_ALWAYS_INLINE V4DF -V4DF_LD(const void *s) -{ - V4DF z; - memcpy(&z, s, sizeof(z)); - return z; -} - -static FFTS_ALWAYS_INLINE void -V4DF_ST(void *d, V4DF s) -{ - V4DF *r = (V4DF*) d; - *r = s; -} -#endif - -#endif /* FFTS_MACROS_SSE_H */ diff --git a/FFTS/Sources/FFTS/src/macros.h b/FFTS/Sources/FFTS/src/macros.h deleted file mode 100644 index 99b0c53..0000000 --- a/FFTS/Sources/FFTS/src/macros.h +++ /dev/null @@ -1,373 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2013, Michael J. Cree -Copyright (c) 2012, 2013, Anthony M. Blake -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_MACROS_H -#define FFTS_MACROS_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#ifdef HAVE_NEON -#include "macros-neon.h" -#elif HAVE_SSE -#ifdef HAVE_AVX -#include "macros-avx.h" -#else -#include "macros-sse.h" -#endif -// NOTE: AltiVec support disabled until updated to provide new V4SF variable type -#elif __powerpc__ -#include "macros-altivec.h" -#else -#include "macros-alpha.h" -#endif - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_TX2(V4DF *a, V4DF *b) -{ - V4DF t0 = V4DF_UNPACK_LO(*a, *b); - V4DF t1 = V4DF_UNPACK_HI(*a, *b); - *a = t0; - *b = t1; -} -#endif - -static FFTS_INLINE void -V4SF_TX2(V4SF *a, V4SF *b) -{ - V4SF t0 = V4SF_UNPACK_LO(*a, *b); - V4SF t1 = V4SF_UNPACK_HI(*a, *b); - *a = t0; - *b = t1; -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_K_N(int inv, - V4DF re, - V4DF im, - V4DF *r0, - V4DF *r1, - V4DF *r2, - V4DF *r3) -{ - V4DF uk, uk2, zk_p, zk_n, zk, zk_d; - - uk = *r0; - uk2 = *r1; - - zk_p = V4DF_IMUL(*r2, re, im); - zk_n = V4DF_IMULJ(*r3, re, im); - - zk = V4DF_ADD(zk_p, zk_n); - zk_d = V4DF_IMULI(inv, V4DF_SUB(zk_p, zk_n)); - - *r2 = V4DF_SUB(uk, zk); - *r0 = V4DF_ADD(uk, zk); - *r3 = V4DF_ADD(uk2, zk_d); - *r1 = V4DF_SUB(uk2, zk_d); -} -#endif - -static FFTS_INLINE void -V4SF_K_N(int inv, - V4SF re, - V4SF im, - V4SF *r0, - V4SF *r1, - V4SF *r2, - V4SF *r3) -{ - V4SF uk, uk2, zk_p, zk_n, zk, zk_d; - - uk = *r0; - uk2 = *r1; - - zk_p = V4SF_IMUL(*r2, re, im); - zk_n = V4SF_IMULJ(*r3, re, im); - - zk = V4SF_ADD(zk_p, zk_n); - zk_d = V4SF_IMULI(inv, V4SF_SUB(zk_p, zk_n)); - - *r2 = V4SF_SUB(uk, zk); - *r0 = V4SF_ADD(uk, zk); - *r3 = V4SF_ADD(uk2, zk_d); - *r1 = V4SF_SUB(uk2, zk_d); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_L_2_4(int inv, - const double *FFTS_RESTRICT i0, - const double *FFTS_RESTRICT i1, - const double *FFTS_RESTRICT i2, - const double *FFTS_RESTRICT i3, - V4DF *r0, - V4DF *r1, - V4DF *r2, - V4DF *r3) -{ - V4DF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4DF_LD(i0); - t1 = V4DF_LD(i1); - t2 = V4DF_LD(i2); - t3 = V4DF_LD(i3); - - t4 = V4DF_ADD(t0, t1); - t5 = V4DF_SUB(t0, t1); - t6 = V4DF_ADD(t2, t3); - t7 = V4DF_SUB(t2, t3); - - *r0 = V4DF_UNPACK_LO(t4, t5); - *r1 = V4DF_UNPACK_LO(t6, t7); - - t5 = V4DF_IMULI(inv, t5); - - t0 = V4DF_ADD(t6, t4); - t2 = V4DF_SUB(t6, t4); - t1 = V4DF_SUB(t7, t5); - t3 = V4DF_ADD(t7, t5); - - *r3 = V4DF_UNPACK_HI(t0, t1); - *r2 = V4DF_UNPACK_HI(t2, t3); -} -#endif - -static FFTS_INLINE void -V4SF_L_2_4(int inv, - const float *FFTS_RESTRICT i0, - const float *FFTS_RESTRICT i1, - const float *FFTS_RESTRICT i2, - const float *FFTS_RESTRICT i3, - V4SF *r0, - V4SF *r1, - V4SF *r2, - V4SF *r3) -{ - V4SF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4SF_LD(i0); - t1 = V4SF_LD(i1); - t2 = V4SF_LD(i2); - t3 = V4SF_LD(i3); - - t4 = V4SF_ADD(t0, t1); - t5 = V4SF_SUB(t0, t1); - t6 = V4SF_ADD(t2, t3); - t7 = V4SF_SUB(t2, t3); - - *r0 = V4SF_UNPACK_LO(t4, t5); - *r1 = V4SF_UNPACK_LO(t6, t7); - - t5 = V4SF_IMULI(inv, t5); - - t0 = V4SF_ADD(t6, t4); - t2 = V4SF_SUB(t6, t4); - t1 = V4SF_SUB(t7, t5); - t3 = V4SF_ADD(t7, t5); - - *r3 = V4SF_UNPACK_HI(t0, t1); - *r2 = V4SF_UNPACK_HI(t2, t3); -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_L_4_4(int inv, - const double *FFTS_RESTRICT i0, - const double *FFTS_RESTRICT i1, - const double *FFTS_RESTRICT i2, - const double *FFTS_RESTRICT i3, - V4DF *r0, - V4DF *r1, - V4DF *r2, - V4DF *r3) -{ - V4DF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4DF_LD(i0); - t1 = V4DF_LD(i1); - t2 = V4DF_LD(i2); - t3 = V4DF_LD(i3); - - t4 = V4DF_ADD(t0, t1); - t5 = V4DF_SUB(t0, t1); - t6 = V4DF_ADD(t2, t3); - - t7 = V4DF_IMULI(inv, V4DF_SUB(t2, t3)); - - t0 = V4DF_ADD(t4, t6); - t2 = V4DF_SUB(t4, t6); - t1 = V4DF_SUB(t5, t7); - t3 = V4DF_ADD(t5, t7); - - V4DF_TX2(&t0, &t1); - V4DF_TX2(&t2, &t3); - - *r0 = t0; - *r2 = t1; - *r1 = t2; - *r3 = t3; -} -#endif - -static FFTS_INLINE void -V4SF_L_4_4(int inv, - const float *FFTS_RESTRICT i0, - const float *FFTS_RESTRICT i1, - const float *FFTS_RESTRICT i2, - const float *FFTS_RESTRICT i3, - V4SF *r0, - V4SF *r1, - V4SF *r2, - V4SF *r3) -{ - V4SF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4SF_LD(i0); - t1 = V4SF_LD(i1); - t2 = V4SF_LD(i2); - t3 = V4SF_LD(i3); - - t4 = V4SF_ADD(t0, t1); - t5 = V4SF_SUB(t0, t1); - t6 = V4SF_ADD(t2, t3); - - t7 = V4SF_IMULI(inv, V4SF_SUB(t2, t3)); - - t0 = V4SF_ADD(t4, t6); - t2 = V4SF_SUB(t4, t6); - t1 = V4SF_SUB(t5, t7); - t3 = V4SF_ADD(t5, t7); - - V4SF_TX2(&t0, &t1); - V4SF_TX2(&t2, &t3); - - *r0 = t0; - *r2 = t1; - *r1 = t2; - *r3 = t3; -} - -#ifdef FFTS_DOUBLE -static FFTS_INLINE void -V4DF_L_4_2(int inv, - const double *FFTS_RESTRICT i0, - const double *FFTS_RESTRICT i1, - const double *FFTS_RESTRICT i2, - const double *FFTS_RESTRICT i3, - V4DF *r0, - V4DF *r1, - V4DF *r2, - V4DF *r3) -{ - V4DF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4DF_LD(i0); - t1 = V4DF_LD(i1); - t6 = V4DF_LD(i2); - t7 = V4DF_LD(i3); - - t2 = V4DF_BLEND(t6, t7); - t3 = V4DF_BLEND(t7, t6); - - t4 = V4DF_ADD(t0, t1); - t5 = V4DF_SUB(t0, t1); - t6 = V4DF_ADD(t2, t3); - t7 = V4DF_SUB(t2, t3); - - *r2 = V4DF_UNPACK_HI(t4, t5); - *r3 = V4DF_UNPACK_HI(t6, t7); - - t7 = V4DF_IMULI(inv, t7); - - t0 = V4DF_ADD(t4, t6); - t2 = V4DF_SUB(t4, t6); - t1 = V4DF_SUB(t5, t7); - t3 = V4DF_ADD(t5, t7); - - *r0 = V4DF_UNPACK_LO(t0, t1); - *r1 = V4DF_UNPACK_LO(t2, t3); -} -#endif - -static FFTS_INLINE void -V4SF_L_4_2(int inv, - const float *FFTS_RESTRICT i0, - const float *FFTS_RESTRICT i1, - const float *FFTS_RESTRICT i2, - const float *FFTS_RESTRICT i3, - V4SF *r0, - V4SF *r1, - V4SF *r2, - V4SF *r3) -{ - V4SF t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = V4SF_LD(i0); - t1 = V4SF_LD(i1); - t6 = V4SF_LD(i2); - t7 = V4SF_LD(i3); - - t2 = V4SF_BLEND(t6, t7); - t3 = V4SF_BLEND(t7, t6); - - t4 = V4SF_ADD(t0, t1); - t5 = V4SF_SUB(t0, t1); - t6 = V4SF_ADD(t2, t3); - t7 = V4SF_SUB(t2, t3); - - *r2 = V4SF_UNPACK_HI(t4, t5); - *r3 = V4SF_UNPACK_HI(t6, t7); - - t7 = V4SF_IMULI(inv, t7); - - t0 = V4SF_ADD(t4, t6); - t2 = V4SF_SUB(t4, t6); - t1 = V4SF_SUB(t5, t7); - t3 = V4SF_ADD(t5, t7); - - *r0 = V4SF_UNPACK_LO(t0, t1); - *r1 = V4SF_UNPACK_LO(t2, t3); -} - -#define V4DF_S_4(r0, r1, r2, r3, o0, o1, o2, o3) \ - V4DF_ST(o0, r0); V4DF_ST(o1, r1); V4DF_ST(o2, r2); V4DF_ST(o3, r3); - -#define V4SF_S_4(r0, r1, r2, r3, o0, o1, o2, o3) \ - V4SF_ST(o0, r0); V4SF_ST(o1, r1); V4SF_ST(o2, r2); V4SF_ST(o3, r3); - -#endif /* FFTS_MACROS_H */ diff --git a/FFTS/Sources/FFTS/src/neon.h b/FFTS/Sources/FFTS/src/neon.h deleted file mode 100644 index f719159..0000000 --- a/FFTS/Sources/FFTS/src/neon.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_NEON_H -#define FFTS_NEON_H - -#include "ffts.h" - -void neon_x4(float *, size_t, float *); -void neon_x8(float *, size_t, float *); -void neon_x8_t(float *, size_t, float *); -void neon_ee(); -void neon_oo(); -void neon_eo(); -void neon_oe(); -void neon_end(); - -void neon_transpose4(uint64_t *in, uint64_t *out, int w, int h); -void neon_transpose8(uint64_t *in, uint64_t *out, int w, int h); - -void neon_static_e_f(ffts_plan_t*, const void*, void*); -void neon_static_o_f(ffts_plan_t*, const void*, void*); -void neon_static_x4_f(float*, const float*); -void neon_static_x8_f(float*, size_t, const float*); -void neon_static_x8_t_f(float*, size_t, const float*); - -void neon_static_e_i(ffts_plan_t*, const void*, void*); -void neon_static_o_i(ffts_plan_t*, const void*, void*); -void neon_static_x4_i(float*, const float*); -void neon_static_x8_i(float*, size_t, const float*); -void neon_static_x8_t_i(float*, size_t, const float*); - -#endif /* FFTS_NEON_H */ diff --git a/FFTS/Sources/FFTS/src/neon.s b/FFTS/Sources/FFTS/src/neon.s deleted file mode 100644 index 7486b63..0000000 --- a/FFTS/Sources/FFTS/src/neon.s +++ /dev/null @@ -1,930 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2016, Jukka Ojanen -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - .fpu neon - - .align 4 -#ifdef __APPLE__ - .globl _neon_x4 -_neon_x4: -#else - .globl neon_x4 -neon_x4: -#endif - vld1.32 {q8, q9}, [r0, :128] - add r4, r0, r1, lsl #1 - vld1.32 {q10, q11}, [r4, :128] - add r5, r0, r1, lsl #2 - vld1.32 {q12, q13}, [r5, :128] - add r6, r4, r1, lsl #2 - vld1.32 {q14, q15}, [r6, :128] - vld1.32 {q2, q3}, [r2, :128] - - vmul.f32 q0, q13, q3 - vmul.f32 q5, q12, q2 - vmul.f32 q1, q14, q2 - vmul.f32 q4, q14, q3 - vmul.f32 q14, q12, q3 - vmul.f32 q13, q13, q2 - vmul.f32 q12, q15, q3 - vmul.f32 q2, q15, q2 - vsub.f32 q0, q5, q0 - vadd.f32 q13, q13, q14 - vadd.f32 q12, q12, q1 - vsub.f32 q1, q2, q4 - vadd.f32 q15, q0, q12 - vsub.f32 q12, q0, q12 - vadd.f32 q14, q13, q1 - vsub.f32 q13, q13, q1 - vadd.f32 q0, q8, q15 - vadd.f32 q1, q9, q14 - vsub.f32 q2, q10, q13 - vsub.f32 q4, q8, q15 - vadd.f32 q3, q11, q12 - vst1.32 {q0, q1}, [r0, :128] - vsub.f32 q5, q9, q14 - vadd.f32 q6, q10, q13 - vsub.f32 q7, q11, q12 - vst1.32 {q2, q3}, [r4, :128] - vst1.32 {q4, q5}, [r5, :128] - vst1.32 {q6, q7}, [r6, :128] - bx lr - - .align 4 -#ifdef __APPLE__ - .globl _neon_x8 -_neon_x8: -#else - .globl neon_x8 -neon_x8: -#endif - mov r11, #0 - add r3, r0, #0 @ data0 - add r5, r0, r1, lsl #1 @ data2 - add r4, r0, r1 @ data1 - add r7, r5, r1, lsl #1 @ data4 - add r6, r5, r1 @ data3 - add r9, r7, r1, lsl #1 @ data6 - add r8, r7, r1 @ data5 - add r10, r9, r1 @ data7 - add r12, r2, #0 @ LUT - - sub r11, r11, r1, lsr #5 -1: - vld1.32 {q2, q3}, [r12, :128]! - vld1.32 {q14, q15}, [r6, :128] - vld1.32 {q10, q11}, [r5, :128] - adds r11, r11, #1 - vmul.f32 q12, q15, q2 - vmul.f32 q8, q14, q3 - vmul.f32 q13, q14, q2 - vmul.f32 q9, q10, q3 - vmul.f32 q1, q10, q2 - vmul.f32 q0, q11, q2 - vmul.f32 q14, q11, q3 - vmul.f32 q15, q15, q3 - vld1.32 {q2, q3}, [r12, :128]! - vsub.f32 q10, q12, q8 - vadd.f32 q11, q0, q9 - vadd.f32 q8, q15, q13 - vld1.32 {q12, q13}, [r4, :128] - vsub.f32 q9, q1, q14 - vsub.f32 q15, q11, q10 - vsub.f32 q14, q9, q8 - vsub.f32 q4, q12, q15 - vadd.f32 q6, q12, q15 - vadd.f32 q5, q13, q14 - vsub.f32 q7, q13, q14 - vld1.32 {q14, q15}, [r9, :128] - vld1.32 {q12, q13}, [r7, :128] - vmul.f32 q1, q14, q2 - vmul.f32 q0, q14, q3 - vst1.32 {q4, q5}, [r4, :128] - vmul.f32 q14, q15, q3 - vmul.f32 q4, q15, q2 - vadd.f32 q15, q9, q8 - vst1.32 {q6, q7}, [r6, :128] - vmul.f32 q8, q12, q3 - vmul.f32 q5, q13, q3 - vmul.f32 q12, q12, q2 - vmul.f32 q9, q13, q2 - vadd.f32 q14, q14, q1 - vsub.f32 q13, q4, q0 - vadd.f32 q0, q9, q8 - vld1.32 {q8, q9}, [r3, :128] - vadd.f32 q1, q11, q10 - vsub.f32 q12, q12, q5 - vadd.f32 q11, q8, q15 - vsub.f32 q8, q8, q15 - vadd.f32 q2, q12, q14 - vsub.f32 q10, q0, q13 - vadd.f32 q15, q0, q13 - vadd.f32 q13, q9, q1 - vsub.f32 q9, q9, q1 - vsub.f32 q12, q12, q14 - vadd.f32 q0, q11, q2 - vadd.f32 q1, q13, q15 - vsub.f32 q4, q11, q2 - vsub.f32 q2, q8, q10 - vadd.f32 q3, q9, q12 - vst1.32 {q0, q1}, [r3, :128]! - vsub.f32 q5, q13, q15 - vld1.32 {q14, q15}, [r10, :128] - vsub.f32 q7, q9, q12 - vld1.32 {q12, q13}, [r8, :128] - vst1.32 {q2, q3}, [r5, :128]! - vld1.32 {q2, q3}, [r12, :128]! - vadd.f32 q6, q8, q10 - vmul.f32 q8, q14, q2 - vst1.32 {q4, q5}, [r7, :128]! - vmul.f32 q10, q15, q3 - vmul.f32 q9, q13, q3 - vmul.f32 q11, q12, q2 - vmul.f32 q14, q14, q3 - vst1.32 {q6, q7}, [r9, :128]! - vmul.f32 q15, q15, q2 - vmul.f32 q12, q12, q3 - vmul.f32 q13, q13, q2 - vadd.f32 q10, q10, q8 - vsub.f32 q11, q11, q9 - vld1.32 {q8, q9}, [r4, :128] - vsub.f32 q14, q15, q14 - vadd.f32 q15, q13, q12 - vadd.f32 q13, q11, q10 - vadd.f32 q12, q15, q14 - vsub.f32 q15, q15, q14 - vsub.f32 q14, q11, q10 - vld1.32 {q10, q11}, [r6, :128] - vadd.f32 q0, q8, q13 - vadd.f32 q1, q9, q12 - vsub.f32 q2, q10, q15 - vadd.f32 q3, q11, q14 - vsub.f32 q4, q8, q13 - vst1.32 {q0, q1}, [r4, :128]! - vsub.f32 q5, q9, q12 - vadd.f32 q6, q10, q15 - vst1.32 {q2, q3}, [r6, :128]! - vsub.f32 q7, q11, q14 - vst1.32 {q4, q5}, [r8, :128]! - vst1.32 {q6, q7}, [r10, :128]! - bne 1b - bx lr - - .align 4 -#ifdef __APPLE__ - .globl _neon_x8_t -_neon_x8_t: -#else - .globl neon_x8_t -neon_x8_t: -#endif - mov r11, #0 - add r3, r0, #0 @ data0 - add r5, r0, r1, lsl #1 @ data2 - add r4, r0, r1 @ data1 - add r7, r5, r1, lsl #1 @ data4 - add r6, r5, r1 @ data3 - add r9, r7, r1, lsl #1 @ data6 - add r8, r7, r1 @ data5 - add r10, r9, r1 @ data7 - add r12, r2, #0 @ LUT - - sub r11, r11, r1, lsr #5 -1: - vld1.32 {q2, q3}, [r12, :128]! - vld1.32 {q14, q15}, [r6, :128] - vld1.32 {q10, q11}, [r5, :128] - adds r11, r11, #1 - vmul.f32 q12, q15, q2 - vmul.f32 q8, q14, q3 - vmul.f32 q13, q14, q2 - vmul.f32 q9, q10, q3 - vmul.f32 q1, q10, q2 - vmul.f32 q0, q11, q2 - vmul.f32 q14, q11, q3 - vmul.f32 q15, q15, q3 - vld1.32 {q2, q3}, [r12, :128]! - vsub.f32 q10, q12, q8 - vadd.f32 q11, q0, q9 - vadd.f32 q8, q15, q13 - vld1.32 {q12, q13}, [r4, :128] - vsub.f32 q9, q1, q14 - vsub.f32 q15, q11, q10 - vsub.f32 q14, q9, q8 - vsub.f32 q4, q12, q15 - vadd.f32 q6, q12, q15 - vadd.f32 q5, q13, q14 - vsub.f32 q7, q13, q14 - vld1.32 {q14, q15}, [r9, :128] - vld1.32 {q12, q13}, [r7, :128] - vmul.f32 q1, q14, q2 - vmul.f32 q0, q14, q3 - vst1.32 {q4, q5}, [r4, :128] - vmul.f32 q14, q15, q3 - vmul.f32 q4, q15, q2 - vadd.f32 q15, q9, q8 - vst1.32 {q6, q7}, [r6, :128] - vmul.f32 q8, q12, q3 - vmul.f32 q5, q13, q3 - vmul.f32 q12, q12, q2 - vmul.f32 q9, q13, q2 - vadd.f32 q14, q14, q1 - vsub.f32 q13, q4, q0 - vadd.f32 q0, q9, q8 - vld1.32 {q8, q9}, [r3, :128] - vadd.f32 q1, q11, q10 - vsub.f32 q12, q12, q5 - vadd.f32 q11, q8, q15 - vsub.f32 q8, q8, q15 - vadd.f32 q2, q12, q14 - vsub.f32 q10, q0, q13 - vadd.f32 q15, q0, q13 - vadd.f32 q13, q9, q1 - vsub.f32 q9, q9, q1 - vsub.f32 q12, q12, q14 - vadd.f32 q0, q11, q2 - vadd.f32 q1, q13, q15 - vsub.f32 q4, q11, q2 - vsub.f32 q2, q8, q10 - vadd.f32 q3, q9, q12 - vst2.32 {q0, q1}, [r3, :128]! - vsub.f32 q5, q13, q15 - vld1.32 {q14, q15}, [r10, :128] - vsub.f32 q7, q9, q12 - vld1.32 {q12, q13}, [r8, :128] - vst2.32 {q2, q3}, [r5, :128]! - vld1.32 {q2, q3}, [r12, :128]! - vadd.f32 q6, q8, q10 - vmul.f32 q8, q14, q2 - vst2.32 {q4, q5}, [r7, :128]! - vmul.f32 q10, q15, q3 - vmul.f32 q9, q13, q3 - vmul.f32 q11, q12, q2 - vmul.f32 q14, q14, q3 - vst2.32 {q6, q7}, [r9, :128]! - vmul.f32 q15, q15, q2 - vmul.f32 q12, q12, q3 - vmul.f32 q13, q13, q2 - vadd.f32 q10, q10, q8 - vsub.f32 q11, q11, q9 - vld1.32 {q8, q9}, [r4, :128] - vsub.f32 q14, q15, q14 - vadd.f32 q15, q13, q12 - vadd.f32 q13, q11, q10 - vadd.f32 q12, q15, q14 - vsub.f32 q15, q15, q14 - vsub.f32 q14, q11, q10 - vld1.32 {q10, q11}, [r6, :128] - vadd.f32 q0, q8, q13 - vadd.f32 q1, q9, q12 - vsub.f32 q2, q10, q15 - vadd.f32 q3, q11, q14 - vsub.f32 q4, q8, q13 - vst2.32 {q0, q1}, [r4, :128]! - vsub.f32 q5, q9, q12 - vadd.f32 q6, q10, q15 - vst2.32 {q2, q3}, [r6, :128]! - vsub.f32 q7, q11, q14 - vst2.32 {q4, q5}, [r8, :128]! - vst2.32 {q6, q7}, [r10, :128]! - bne 1b - -@ assumes r0 = out -@ r1 = in ? -@ -@ r12 = offsets -@ r3-r10 = data pointers -@ r11 = loop iterations -@ r2 & lr = temps - .align 4 -#ifdef __APPLE__ - .globl _neon_ee -_neon_ee: -#else - .globl neon_ee -neon_ee: -#endif - vld1.32 {d16, d17}, [r2, :128] -1: - vld2.32 {q15}, [r10, :128]! - vld2.32 {q13}, [r8, :128]! - vld2.32 {q14}, [r7, :128]! - vld2.32 {q9}, [r4, :128]! - vld2.32 {q10}, [r3, :128]! - vld2.32 {q11}, [r6, :128]! - vld2.32 {q12}, [r5, :128]! - vsub.f32 q1, q14, q13 - vld2.32 {q0}, [r9, :128]! - subs r11, r11, #1 - vsub.f32 q2, q0, q15 - vadd.f32 q0, q0, q15 - vmul.f32 d10, d2, d17 - vmul.f32 d11, d3, d16 - vmul.f32 d12, d3, d17 - vmul.f32 d6, d4, d17 - vmul.f32 d7, d5, d16 - vmul.f32 d8, d4, d16 - vmul.f32 d9, d5, d17 - vmul.f32 d13, d2, d16 - vsub.f32 d7, d7, d6 - vadd.f32 d11, d11, d10 - vsub.f32 q1, q12, q11 - vsub.f32 q2, q10, q9 - vadd.f32 d6, d9, d8 - vadd.f32 q4, q14, q13 - vadd.f32 q11, q12, q11 - vadd.f32 q12, q10, q9 - vsub.f32 d10, d13, d12 - vsub.f32 q7, q4, q0 - vsub.f32 q9, q12, q11 - vsub.f32 q13, q5, q3 - vadd.f32 d29, d5, d2 - vadd.f32 q5, q5, q3 - vadd.f32 q10, q4, q0 - vadd.f32 q11, q12, q11 - vsub.f32 d31, d5, d2 - vsub.f32 d28, d4, d3 - vadd.f32 d30, d4, d3 - vadd.f32 d5, d19, d14 - vadd.f32 d7, d31, d26 - vadd.f32 q1, q14, q5 - vadd.f32 q0, q11, q10 - vsub.f32 d6, d30, d27 - vsub.f32 d4, d18, d15 - vsub.f32 d13, d19, d14 - vadd.f32 d12, d18, d15 - vsub.f32 d15, d31, d26 - ldr r2, [r12], #4 - vtrn.32 q1, q3 - ldr lr, [r12], #4 - vtrn.32 q0, q2 - add r2, r0, r2, lsl #2 - vsub.f32 q4, q11, q10 - add lr, r0, lr, lsl #2 - vsub.f32 q5, q14, q5 - vadd.f32 d14, d30, d27 - vst2.32 {q0, q1}, [r2, :128]! - vst2.32 {q2, q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4, q5}, [r2, :128]! - vst2.32 {q6, q7}, [lr, :128]! - bne 1b - -@ assumes r0 = out -@ -@ r12 = offsets -@ r3-r10 = data pointers -@ r11 = loop iterations -@ r2 & lr = temps - .align 4 -#ifdef __APPLE__ - .globl _neon_oo -_neon_oo: -#else - .globl neon_oo -neon_oo: -#endif -1: - vld2.32 {q8}, [r6, :128]! - vld2.32 {q9}, [r5, :128]! - vld2.32 {q10}, [r4, :128]! - vld2.32 {q13}, [r3, :128]! - vadd.f32 q11, q9, q8 - vsub.f32 q8, q9, q8 - vsub.f32 q9, q13, q10 - vadd.f32 q12, q13, q10 - subs r11, r11, #1 - vld2.32 {q10}, [r7, :128]! - vld2.32 {q13}, [r9, :128]! - vsub.f32 q2, q12, q11 - vsub.f32 d7, d19, d16 - vadd.f32 d3, d19, d16 - vadd.f32 d6, d18, d17 - vsub.f32 d2, d18, d17 - vld2.32 {q9}, [r8, :128]! - vld2.32 {q8}, [r10, :128]! - vadd.f32 q0, q12, q11 - vadd.f32 q11, q13, q8 - vadd.f32 q12, q10, q9 - vsub.f32 q8, q13, q8 - vsub.f32 q9, q10, q9 - vsub.f32 q6, q12, q11 - vadd.f32 q4, q12, q11 - vtrn.32 q0, q2 - ldr r2, [r12], #4 - vsub.f32 d15, d19, d16 - ldr lr, [r12], #4 - vadd.f32 d11, d19, d16 - vadd.f32 d14, d18, d17 - vsub.f32 d10, d18, d17 - add r2, r0, r2, lsl #2 - vtrn.32 q1, q3 - add lr, r0, lr, lsl #2 - vst2.32 {q0, q1}, [r2, :128]! - vst2.32 {q2, q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4, q5}, [r2, :128]! - vst2.32 {q6, q7}, [lr, :128]! - bne 1b - -@ assumes r0 = out -@ -@ r12 = offsets -@ r3-r10 = data pointers -@ r11 = addr of twiddle -@ r2 & lr = temps - .align 4 -#ifdef __APPLE__ - .globl _neon_eo -_neon_eo: -#else - .globl neon_eo -neon_eo: -#endif - vld2.32 {q9}, [r5, :128]! - vld2.32 {q13}, [r3, :128]! - vld2.32 {q12}, [r4, :128]! - vld2.32 {q0}, [r7, :128]! - vsub.f32 q11, q13, q12 - vld2.32 {q8}, [r6, :128]! - vadd.f32 q12, q13, q12 - vsub.f32 q10, q9, q8 - vadd.f32 q8, q9, q8 - vadd.f32 q9, q12, q8 - vadd.f32 d9, d23, d20 - vsub.f32 d11, d23, d20 - vsub.f32 q8, q12, q8 - vsub.f32 d8, d22, d21 - vadd.f32 d10, d22, d21 - ldr r2, [r12], #4 - vld1.32 {d20, d21}, [r11, :128] - ldr lr, [r12], #4 - vtrn.32 q9, q4 - add r2, r0, r2, lsl #2 - vtrn.32 q8, q5 - add lr, r0, lr, lsl #2 - vswp d9, d10 - vst1.32 {d8, d9, d10, d11}, [lr, :128]! - vld2.32 {q13}, [r10, :128]! - vld2.32 {q15}, [r9, :128]! - vld2.32 {q11}, [r8, :128]! - vsub.f32 q14, q15, q13 - vsub.f32 q12, q0, q11 - vadd.f32 q11, q0, q11 - vadd.f32 q13, q15, q13 - vadd.f32 d13, d29, d24 - vadd.f32 q15, q13, q11 - vsub.f32 d12, d28, d25 - vsub.f32 d15, d29, d24 - vadd.f32 d14, d28, d25 - vtrn.32 q15, q6 - vsub.f32 q15, q13, q11 - vtrn.32 q15, q7 - vswp d13, d14 - vst1.32 {d12, d13, d14, d15}, [lr, :128]! - vtrn.32 q13, q14 - vtrn.32 q11, q12 - vmul.f32 d24, d26, d21 - vmul.f32 d28, d27, d20 - vmul.f32 d25, d26, d20 - vmul.f32 d26, d27, d21 - vmul.f32 d27, d22, d21 - vmul.f32 d30, d23, d20 - vmul.f32 d29, d23, d21 - vmul.f32 d22, d22, d20 - vsub.f32 d21, d28, d24 - vadd.f32 d20, d26, d25 - vadd.f32 d25, d30, d27 - vsub.f32 d24, d22, d29 - vadd.f32 q11, q12, q10 - vsub.f32 q10, q12, q10 - vadd.f32 q0, q9, q11 - vsub.f32 q2, q9, q11 - vadd.f32 d3, d17, d20 - vsub.f32 d7, d17, d20 - vsub.f32 d2, d16, d21 - vadd.f32 d6, d16, d21 - vswp d1, d2 - vswp d5, d6 - vstmia r2!, {q0-q3} - -@ assumes r0 = out -@ -@ r12 = offsets -@ r3-r10 = data pointers -@ r11 = addr of twiddle -@ r2 & lr = temps - .align 4 -#ifdef __APPLE__ - .globl _neon_oe -_neon_oe: -#else - .globl neon_oe -neon_oe: -#endif - vld1.32 {q8}, [r5, :128]! - vld1.32 {q10}, [r6, :128]! - vld2.32 {q11}, [r4, :128]! - vld2.32 {q13}, [r3, :128]! - vld2.32 {q15}, [r10, :128]! - vorr d25, d17, d17 - vorr d24, d20, d20 - vorr d20, d16, d16 - vsub.f32 q9, q13, q11 - vadd.f32 q11, q13, q11 - ldr r2, [r12], #4 - vtrn.32 d24, d25 - ldr lr, [r12], #4 - vtrn.32 d20, d21 - add r2, r0, r2, lsl #2 - vsub.f32 q8, q10, q12 - add lr, r0, lr, lsl #2 - vadd.f32 q10, q10, q12 - vadd.f32 q0, q11, q10 - vadd.f32 d25, d19, d16 - vsub.f32 d27, d19, d16 - vsub.f32 q1, q11, q10 - vsub.f32 d24, d18, d17 - vadd.f32 d26, d18, d17 - vtrn.32 q0, q12 - vtrn.32 q1, q13 - vld1.32 {d24, d25}, [r11, :128] - vswp d1, d2 - vst1.32 {q0, q1}, [r2, :128]! - vld2.32 {q0}, [r9, :128]! - vadd.f32 q1, q0, q15 - vld2.32 {q13}, [r8, :128]! - vld2.32 {q14}, [r7, :128]! - vsub.f32 q15, q0, q15 - vsub.f32 q0, q14, q13 - vadd.f32 q3, q14, q13 - vadd.f32 q2, q3, q1 - vadd.f32 d29, d1, d30 - vsub.f32 d27, d1, d30 - vsub.f32 q3, q3, q1 - vsub.f32 d28, d0, d31 - vadd.f32 d26, d0, d31 - vtrn.32 q2, q14 - vtrn.32 q3, q13 - vswp d5, d6 - vst1.32 {q2, q3}, [r2, :128]! - vtrn.32 q11, q9 - vtrn.32 q10, q8 - vmul.f32 d20, d18, d25 - vmul.f32 d22, d19, d24 - vmul.f32 d21, d19, d25 - vmul.f32 d18, d18, d24 - vmul.f32 d19, d16, d25 - vmul.f32 d30, d17, d24 - vmul.f32 d23, d16, d24 - vmul.f32 d24, d17, d25 - vadd.f32 d17, d22, d20 - vsub.f32 d16, d18, d21 - vsub.f32 d21, d30, d19 - vadd.f32 d20, d24, d23 - vadd.f32 q9, q8, q10 - vsub.f32 q8, q8, q10 - vadd.f32 q4, q14, q9 - vsub.f32 q6, q14, q9 - vadd.f32 d11, d27, d16 - vsub.f32 d15, d27, d16 - vsub.f32 d10, d26, d17 - vadd.f32 d14, d26, d17 - vswp d9, d10 - vswp d13, d14 - vstmia lr!, {q4-q7} - - .align 4 -#ifdef __APPLE__ - .globl _neon_end -_neon_end: -#else - .globl neon_end -neon_end: -#endif - bx lr - - .align 4 -#ifdef __APPLE__ - .globl _neon_transpose4 -_neon_transpose4: -#else - .globl neon_transpose4 -neon_transpose4: -#endif - push {r4-r6, lr} - mov r5, r3 -1: - mov ip, r1 - add lr, r1, r3, lsl #3 - mov r4, r2 - add r6, r0, r2, lsl #3 -2: - vld1.32 {q8, q9}, [r0, :128]! - vld1.32 {q12,q13}, [r6, :128]! - subs r4, r4, #4 - vswp d17, d24 - vswp d19, d26 - vswp d21, d28 - vswp d23, d30 - vst1.32 {q8}, [ip, :128] - vst1.32 {q12}, [lr, :128] - add ip, ip, r3, lsl #4 - add lr, lr, r3, lsl #4 - vst1.32 {q9}, [ip, :128] - vst1.32 {q13}, [lr, :128] - add ip, ip, r3, lsl #4 - add lr, lr, r3, lsl #4 - bne 2b - subs r5, r5, #2 - add r0, r0, r2, lsl #3 - add r1, r1, #16 - bne 1b - pop {r4-r6, pc} - - .align 4 -#ifdef __APPLE__ - .globl _neon_transpose8 -_neon_transpose8: -#else - .globl neon_transpose8 -neon_transpose8: -#endif - push {r4-r12, lr} - vpush {q4-q7} - - @ initialize - lsl r2, r2, #3 - mul lr, r2, r3 - lsl r3, r3, #5 - add r4, r0, r2 - lsl ip, r2, #1 - add r5, r1, r3, lsr #2 - add r6, r1, r3, lsr #1 - add r7, r5, r3, lsr #1 - sub lr, r3, lr - sub ip, ip, #64 - sub r8, r3, #48 - add lr, lr, #16 -1: - @ process all but the last one - subs r11, r2, #64 - - @ prefetch next rows 0-5 - pld [r0] - pld [r4] - pld [r0, r2, lsl #1] - pld [r4, r2, lsl #1] - pld [r0, r2, lsl #2] - pld [r4, r2, lsl #2] - - @ if there is only the last one - beq 3f -2: - @ matrix 0&2 row 0-1 - vld1.32 {q0, q1}, [r0, :128]! - vld1.32 {q2, q3}, [r4, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128]! - vst1.32 {q2}, [r5, :128]! - vst1.32 {q1}, [r6, :128]! - vst1.32 {q3}, [r7, :128]! - - @ matrix 1&3 row 0-1 - vld1.32 {q4, q5}, [r0, :128]! - vld1.32 {q6, q7}, [r4, :128]! - vswp d9, d12 - vswp d11, d14 - - @ prefetch next rows 0-1 - pld [r0] - pld [r4] - add r9, r0, ip - add r10, r4, ip - - @ matrix 0&2, row 2-3 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128]! - vst1.32 {q2}, [r5, :128]! - vst1.32 {q1}, [r6, :128]! - vst1.32 {q3}, [r7, :128]! - - @ matrix 1&3, row 2-3 - vld1.32 {q8, q9}, [r9, :128]! - vld1.32 {q10, q11}, [r10, :128]! - vswp d17, d20 - vswp d19, d22 - - @ prefetch next rows 2-3 - pld [r9] - pld [r10] - add r9, r9, ip - add r10, r10, ip - - @ matrix 0&2, row 4-5 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128]! - vst1.32 {q2}, [r5, :128]! - vst1.32 {q1}, [r6, :128]! - vst1.32 {q3}, [r7, :128]! - - @ matrix 1&3, row 4-5 - vld1.32 {q12, q13}, [r9, :128]! - vld1.32 {q14, q15}, [r10, :128]! - vswp d25, d28 - vswp d27, d30 - - @ prefetch next rows 4-5 - pld [r9] - pld [r10] - add r9, r9, ip - add r10, r10, ip - - @ matrix 0&2, row 6-7 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128], r8 - vst1.32 {q2}, [r5, :128], r8 - vst1.32 {q1}, [r6, :128], r8 - vst1.32 {q3}, [r7, :128], r8 - - @ matrix 1&3, row 6-7 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - - @ prefetch next rows 6-7 - pld [r9] - pld [r10] - - subs r11, r11, #64 - - @ these could be replaced with VSTM, but that requires swaps - vst1.32 {q4}, [r1, :128]! - vst1.32 {q8}, [r1, :128]! - vst1.32 {q12}, [r1, :128]! - vst1.32 {q0}, [r1, :128], r8 - - vst1.32 {q6}, [r5, :128]! - vst1.32 {q10}, [r5, :128]! - vst1.32 {q14}, [r5, :128]! - vst1.32 {q2}, [r5, :128], r8 - - vst1.32 {q5}, [r6, :128]! - vst1.32 {q9}, [r6, :128]! - vst1.32 {q13}, [r6, :128]! - vst1.32 {q1}, [r6, :128], r8 - - vst1.32 {q7}, [r7, :128]! - vst1.32 {q11}, [r7, :128]! - vst1.32 {q15}, [r7, :128]! - vst1.32 {q3}, [r7, :128], r8 - - @ process all but the last on row - bne 2b -3: - @ process the last one - subs r3, r3, #256 - - @ matrix 0&2 row 0-1 - vld1.32 {q0, q1}, [r0, :128]! - vld1.32 {q2, q3}, [r4, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128]! - vst1.32 {q2}, [r5, :128]! - vst1.32 {q1}, [r6, :128]! - vst1.32 {q3}, [r7, :128]! - - @ matrix 1&3 row 0-1 - vld1.32 {q4, q5}, [r0, :128]! - vld1.32 {q6, q7}, [r4, :128]! - vswp d9, d12 - vswp d11, d14 - add r9, r0, ip - add r10, r4, ip - - @ matrix 0&2, row 2-3 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128]! - vst1.32 {q2}, [r5, :128]! - vst1.32 {q1}, [r6, :128]! - vst1.32 {q3}, [r7, :128]! - - @ matrix 1&3, row 2-3 - vld1.32 {q8, q9}, [r9, :128]! - vld1.32 {q10, q11}, [r10, :128]! - vswp d17, d20 - vswp d19, d22 - add r9, r9, ip - add r10, r10, ip - - @ matrix 0&2, row 4-5 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128]! - vst1.32 {q2}, [r5, :128]! - vst1.32 {q1}, [r6, :128]! - vst1.32 {q3}, [r7, :128]! - - @ matrix 1&3, row 4-5 - vld1.32 {q12, q13}, [r9, :128]! - vld1.32 {q14, q15}, [r10, :128]! - vswp d25, d28 - vswp d27, d30 - add r9, r9, ip - add r10, r10, ip - - @ matrix 0&2, row 6-7 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - vst1.32 {q0}, [r1, :128], r8 - vst1.32 {q2}, [r5, :128], r8 - vst1.32 {q1}, [r6, :128], r8 - vst1.32 {q3}, [r7, :128], r8 - - @ matrix 1&3, row 6-7 - vld1.32 {q0, q1}, [r9, :128]! - vld1.32 {q2, q3}, [r10, :128]! - vswp d1, d4 - vswp d3, d6 - - @ next row starts right after - mov r0, r10 - add r4, r10, r2 - - @ these could be replaced with VSTM, but that requires swaps - vst1.32 {q4}, [r1, :128]! - vst1.32 {q8}, [r1, :128]! - vst1.32 {q12}, [r1, :128]! - vst1.32 {q0}, [r1, :128], lr - - vst1.32 {q6}, [r5, :128]! - vst1.32 {q10}, [r5, :128]! - vst1.32 {q14}, [r5, :128]! - vst1.32 {q2}, [r5, :128], lr - - vst1.32 {q5}, [r6, :128]! - vst1.32 {q9}, [r6, :128]! - vst1.32 {q13}, [r6, :128]! - vst1.32 {q1}, [r6, :128], lr - - vst1.32 {q7}, [r7, :128]! - vst1.32 {q11}, [r7, :128]! - vst1.32 {q15}, [r7, :128]! - vst1.32 {q3}, [r7, :128], lr - - @ process all columns - bne 1b - - vpop {q4-q7} - pop {r4-r12, pc} diff --git a/FFTS/Sources/FFTS/src/neon_static.s b/FFTS/Sources/FFTS/src/neon_static.s deleted file mode 100644 index 9121c4b..0000000 --- a/FFTS/Sources/FFTS/src/neon_static.s +++ /dev/null @@ -1,1255 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2016, Jukka Ojanen -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - .fpu neon - -.macro neon_static_e, forward=1 - .align 4 - -.if \forward -#ifdef __APPLE__ - .globl _neon_static_e_f -_neon_static_e_f: -#else - .globl neon_static_e_f -neon_static_e_f: -#endif -.else -#ifdef __APPLE__ - .globl _neon_static_e_i -_neon_static_e_i: -#else - .globl neon_static_e_i -neon_static_e_i: -#endif -.endif - push {r4-r12, lr} - vpush {q4-q7} - - ldr lr, [r0, #40] @ p->N - ldr r12, [r0 ] @ p->offsets - ldr r3, [r0, #16] @ p->ee_ws - - add r7, r1, lr - add r5, r1, lr, lsl #1 - add r4, r1, lr, lsl #2 - add r10, r7, lr, lsl #1 - add r8, r7, lr, lsl #2 - - ldr r11, [r0, #28] @ p->i0 - - add r6, r4, lr, lsl #1 - add r9, r10, lr, lsl #2 - - vld1.32 {d16, d17}, [r3, :128] -1: - vld2.32 {q15}, [r10, :128]! - vld2.32 {q13}, [r8, :128]! - vld2.32 {q14}, [r7, :128]! - vld2.32 {q9}, [r4, :128]! - vld2.32 {q10}, [r1, :128]! - vld2.32 {q11}, [r6, :128]! - vld2.32 {q12}, [r5, :128]! - vsub.f32 q1, q14, q13 - vld2.32 {q0}, [r9, :128]! - subs r11, r11, #1 - vsub.f32 q2, q0, q15 - vadd.f32 q0, q0, q15 - vmul.f32 d10, d2, d17 - vmul.f32 d11, d3, d16 - vmul.f32 d12, d3, d17 - vmul.f32 d6, d4, d17 - vmul.f32 d7, d5, d16 - vmul.f32 d8, d4, d16 - vmul.f32 d9, d5, d17 - vmul.f32 d13, d2, d16 - vsub.f32 d7, d7, d6 - vadd.f32 d11, d11, d10 - vsub.f32 q1, q12, q11 - vsub.f32 q2, q10, q9 - vadd.f32 d6, d9, d8 - vadd.f32 q4, q14, q13 - vadd.f32 q11, q12, q11 - vadd.f32 q12, q10, q9 - vsub.f32 d10, d13, d12 - vsub.f32 q7, q4, q0 - vsub.f32 q9, q12, q11 - vsub.f32 q13, q5, q3 -.if \forward - vsub.f32 d29, d5, d2 -.else - vadd.f32 d29, d5, d2 -.endif - vadd.f32 q5, q5, q3 - vadd.f32 q10, q4, q0 - vadd.f32 q11, q12, q11 -.if \forward - vadd.f32 d31, d5, d2 - vadd.f32 d28, d4, d3 - vsub.f32 d30, d4, d3 - vsub.f32 d5, d19, d14 - vsub.f32 d7, d31, d26 -.else - vsub.f32 d31, d5, d2 - vsub.f32 d28, d4, d3 - vadd.f32 d30, d4, d3 - vadd.f32 d5, d19, d14 - vadd.f32 d7, d31, d26 -.endif - vadd.f32 q1, q14, q5 - vadd.f32 q0, q11, q10 -.if \forward - vadd.f32 d6, d30, d27 - vadd.f32 d4, d18, d15 - vadd.f32 d13, d19, d14 - vsub.f32 d12, d18, d15 - vadd.f32 d15, d31, d26 -.else - vsub.f32 d6, d30, d27 - vsub.f32 d4, d18, d15 - vsub.f32 d13, d19, d14 - vadd.f32 d12, d18, d15 - vsub.f32 d15, d31, d26 -.endif - ldr r3, [r12], #4 - vtrn.32 q1, q3 - ldr lr, [r12], #4 - vtrn.32 q0, q2 - add r3, r2, r3, lsl #2 - vsub.f32 q4, q11, q10 - add lr, r2, lr, lsl #2 - vsub.f32 q5, q14, q5 -.if \forward - vsub.f32 d14, d30, d27 -.else - vadd.f32 d14, d30, d27 -.endif - vst2.32 {q0, q1}, [r3, :128]! - vst2.32 {q2, q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4, q5}, [r3, :128]! - vst2.32 {q6, q7}, [lr, :128]! - bne 1b - - ldr r11, [r0, #12] - vld2.32 {q9}, [r5, :128]! - vld2.32 {q13}, [r1, :128]! - vld2.32 {q12}, [r4, :128]! - vld2.32 {q0}, [r7, :128]! - vsub.f32 q11, q13, q12 - vld2.32 {q8}, [r6, :128]! - vadd.f32 q12, q13, q12 - vsub.f32 q10, q9, q8 - vadd.f32 q8, q9, q8 - vadd.f32 q9, q12, q8 -.if \forward - vsub.f32 d9, d23, d20 - vadd.f32 d11, d23, d20 -.else - vadd.f32 d9, d23, d20 - vsub.f32 d11, d23, d20 -.endif - vsub.f32 q8, q12, q8 -.if \forward - vadd.f32 d8, d22, d21 - vsub.f32 d10, d22, d21 -.else - vsub.f32 d8, d22, d21 - vadd.f32 d10, d22, d21 -.endif - ldr r3, [r12], #4 - vld1.32 {d20, d21}, [r11, :128] - ldr lr, [r12], #4 - vtrn.32 q9, q4 - add r3, r2, r3, lsl #2 - vtrn.32 q8, q5 - add lr, r2, lr, lsl #2 - vswp d9, d10 - vst1.32 {d8,d9,d10,d11}, [lr, :128]! - vld2.32 {q13}, [r10, :128]! - vld2.32 {q15}, [r9, :128]! - vld2.32 {q11}, [r8, :128]! - vsub.f32 q14, q15, q13 - vsub.f32 q12, q0, q11 - vadd.f32 q11, q0, q11 - vadd.f32 q13, q15, q13 -.if \forward - vsub.f32 d13, d29, d24 -.else - vadd.f32 d13, d29, d24 -.endif - vadd.f32 q15, q13, q11 -.if \forward - vadd.f32 d12, d28, d25 - vadd.f32 d15, d29, d24 - vsub.f32 d14, d28, d25 -.else - vsub.f32 d12, d28, d25 - vsub.f32 d15, d29, d24 - vadd.f32 d14, d28, d25 -.endif - vtrn.32 q15, q6 - vsub.f32 q15, q13, q11 - vtrn.32 q15, q7 - vswp d13, d14 - vst1.32 {d12,d13,d14,d15}, [lr, :128]! - vtrn.32 q13, q14 - vtrn.32 q11, q12 - vmul.f32 d24, d26, d21 - vmul.f32 d28, d27, d20 - vmul.f32 d25, d26, d20 - vmul.f32 d26, d27, d21 - vmul.f32 d27, d22, d21 - vmul.f32 d30, d23, d20 - vmul.f32 d29, d23, d21 - vmul.f32 d22, d22, d20 - vsub.f32 d21, d28, d24 - vadd.f32 d20, d26, d25 - vadd.f32 d25, d30, d27 - vsub.f32 d24, d22, d29 - vadd.f32 q11, q12, q10 - ldr r11, [r0, #32] @ p->i1 - vsub.f32 q10, q12, q10 - vadd.f32 q0, q9, q11 - vsub.f32 q2, q9, q11 -.if \forward - vsub.f32 d3, d17, d20 - vadd.f32 d7, d17, d20 - vadd.f32 d2, d16, d21 - vsub.f32 d6, d16, d21 -.else - vadd.f32 d3, d17, d20 - vsub.f32 d7, d17, d20 - vsub.f32 d2, d16, d21 - vadd.f32 d6, d16, d21 -.endif - cmp r11, #0 - vswp d1, d2 - vswp d5, d6 - vstmia r3!, {q0-q3} - beq 4f - -2: - vld2.32 {q8}, [r6, :128]! - vld2.32 {q9}, [r5, :128]! - vld2.32 {q10}, [r4, :128]! - vld2.32 {q13}, [r1, :128]! - vadd.f32 q11, q9, q8 - vsub.f32 q8, q9, q8 - vsub.f32 q9, q13, q10 - vadd.f32 q12, q13, q10 - subs r11, r11, #1 - vld2.32 {q10}, [r9, :128]! - vld2.32 {q13}, [r7, :128]! - vsub.f32 q2, q12, q11 -.if \forward - vadd.f32 d7, d19, d16 - vsub.f32 d3, d19, d16 - vsub.f32 d6, d18, d17 - vadd.f32 d2, d18, d17 -.else - vsub.f32 d7, d19, d16 - vadd.f32 d3, d19, d16 - vadd.f32 d6, d18, d17 - vsub.f32 d2, d18, d17 -.endif - vld2.32 {q9}, [r10, :128]! - vld2.32 {q8}, [r8, :128]! - vadd.f32 q0, q12, q11 - vadd.f32 q11, q13, q8 - vadd.f32 q12, q10, q9 - vsub.f32 q8, q13, q8 - vsub.f32 q9, q10, q9 - vsub.f32 q6, q12, q11 - vadd.f32 q4, q12, q11 - vtrn.32 q0, q2 - ldr r3, [r12], #4 -.if \forward - vadd.f32 d15, d19, d16 -.else - vsub.f32 d15, d19, d16 -.endif - ldr lr, [r12], #4 -.if \forward - vsub.f32 d11, d19, d16 - vsub.f32 d14, d18, d17 - vadd.f32 d10, d18, d17 -.else - vadd.f32 d11, d19, d16 - vadd.f32 d14, d18, d17 - vsub.f32 d10, d18, d17 -.endif - add r3, r2, r3, lsl #2 - vtrn.32 q1, q3 - add lr, r2, lr, lsl #2 - vst2.32 {q0,q1}, [r3, :128]! - vst2.32 {q2,q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4, q5}, [r3, :128]! - vst2.32 {q6, q7}, [lr, :128]! - bne 2b - - ldr r3, [r0, #16] @ p->ee_ws - ldr r11, [r0, #32] @ p->i1 - vld1.32 {d16, d17}, [r3, :128] -3: - vld2.32 {q15}, [r5, :128]! - vld2.32 {q13}, [r4, :128]! - vld2.32 {q14}, [r1, :128]! - vld2.32 {q9}, [r10, :128]! - vld2.32 {q10}, [r9, :128]! - vld2.32 {q11}, [r8, :128]! - vld2.32 {q12}, [r7, :128]! - vsub.f32 q1, q14, q13 - vld2.32 {q0}, [r6, :128]! - subs r11, r11, #1 - vsub.f32 q2, q0, q15 - vadd.f32 q0, q0, q15 - vmul.f32 d10, d2, d17 - vmul.f32 d11, d3, d16 - vmul.f32 d12, d3, d17 - vmul.f32 d6, d4, d17 - vmul.f32 d7, d5, d16 - vmul.f32 d8, d4, d16 - vmul.f32 d9, d5, d17 - vmul.f32 d13, d2, d16 - vsub.f32 d7, d7, d6 - vadd.f32 d11, d11, d10 - vsub.f32 q1, q12, q11 - vsub.f32 q2, q10, q9 - vadd.f32 d6, d9, d8 - vadd.f32 q4, q14, q13 - vadd.f32 q11, q12, q11 - vadd.f32 q12, q10, q9 - vsub.f32 d10, d13, d12 - vsub.f32 q7, q4, q0 - vsub.f32 q9, q12, q11 - vsub.f32 q13, q5, q3 -.if \forward - vsub.f32 d29, d5, d2 -.else - vadd.f32 d29, d5, d2 -.endif - vadd.f32 q5, q5, q3 - vadd.f32 q10, q4, q0 - vadd.f32 q11, q12, q11 -.if \forward - vadd.f32 d31, d5, d2 - vadd.f32 d28, d4, d3 - vsub.f32 d30, d4, d3 - vsub.f32 d5, d19, d14 - vsub.f32 d7, d31, d26 -.else - vsub.f32 d31, d5, d2 - vsub.f32 d28, d4, d3 - vadd.f32 d30, d4, d3 - vadd.f32 d5, d19, d14 - vadd.f32 d7, d31, d26 -.endif - vadd.f32 q1, q14, q5 - vadd.f32 q0, q11, q10 -.if \forward - vadd.f32 d6, d30, d27 - vadd.f32 d4, d18, d15 - vadd.f32 d13, d19, d14 - vsub.f32 d12, d18, d15 - vadd.f32 d15, d31, d26 -.else - vsub.f32 d6, d30, d27 - vsub.f32 d4, d18, d15 - vsub.f32 d13, d19, d14 - vadd.f32 d12, d18, d15 - vsub.f32 d15, d31, d26 -.endif - ldr r3, [r12], #4 - vtrn.32 q1, q3 - ldr lr, [r12], #4 - vtrn.32 q0, q2 - add r3, r2, r3, lsl #2 - vsub.f32 q4, q11, q10 - add lr, r2, lr, lsl #2 - vsub.f32 q5, q14, q5 -.if \forward - vsub.f32 d14, d30, d27 -.else - vadd.f32 d14, d30, d27 -.endif - vst2.32 {q0, q1}, [r3, :128]! - vst2.32 {q2, q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4, q5}, [r3, :128]! - vst2.32 {q6, q7}, [lr, :128]! - bne 3b - -4: - vpop {q4-q7} - pop {r4-r12, pc} -.endm - -.macro neon_static_o, forward=1 - .align 4 - -.if \forward -#ifdef __APPLE__ - .globl _neon_static_o_f -_neon_static_o_f: -#else - .globl neon_static_o_f -neon_static_o_f: -#endif -.else -#ifdef __APPLE__ - .globl _neon_static_o_i -_neon_static_o_i: -#else - .globl neon_static_o_i -neon_static_o_i: -#endif -.endif - push {r4-r12, lr} - vpush {q4-q7} - - ldr lr, [r0, #40] @ p->N - ldr r12, [r0 ] @ p->offsets - ldr r3, [r0, #16] @ p->ee_ws - - add r7, r1, lr - add r5, r1, lr, lsl #1 - add r4, r1, lr, lsl #2 - add r10, r7, lr, lsl #1 - add r8, r7, lr, lsl #2 - - ldr r11, [r0, #28] @ p->i0 - - add r6, r4, lr, lsl #1 - add r9, r10, lr, lsl #2 - - vld1.32 {d16, d17}, [r3, :128] -1: - vld2.32 {q15}, [r10, :128]! - vld2.32 {q13}, [r8, :128]! - vld2.32 {q14}, [r7, :128]! - vld2.32 {q9}, [r4, :128]! - vld2.32 {q10}, [r1, :128]! - vld2.32 {q11}, [r6, :128]! - vld2.32 {q12}, [r5, :128]! - vsub.f32 q1, q14, q13 - vld2.32 {q0}, [r9, :128]! - subs r11, r11, #1 - vsub.f32 q2, q0, q15 - vadd.f32 q0, q0, q15 - vmul.f32 d10, d2, d17 - vmul.f32 d11, d3, d16 - vmul.f32 d12, d3, d17 - vmul.f32 d6, d4, d17 - vmul.f32 d7, d5, d16 - vmul.f32 d8, d4, d16 - vmul.f32 d9, d5, d17 - vmul.f32 d13, d2, d16 - vsub.f32 d7, d7, d6 - vadd.f32 d11, d11, d10 - vsub.f32 q1, q12, q11 - vsub.f32 q2, q10, q9 - vadd.f32 d6, d9, d8 - vadd.f32 q4, q14, q13 - vadd.f32 q11, q12, q11 - vadd.f32 q12, q10, q9 - vsub.f32 d10, d13, d12 - vsub.f32 q7, q4, q0 - vsub.f32 q9, q12, q11 - vsub.f32 q13, q5, q3 -.if \forward - vsub.f32 d29, d5, d2 -.else - vadd.f32 d29, d5, d2 -.endif - vadd.f32 q5, q5, q3 - vadd.f32 q10, q4, q0 - vadd.f32 q11, q12, q11 -.if \forward - vadd.f32 d31, d5, d2 - vadd.f32 d28, d4, d3 - vsub.f32 d30, d4, d3 - vsub.f32 d5, d19, d14 - vsub.f32 d7, d31, d26 -.else - vsub.f32 d31, d5, d2 - vsub.f32 d28, d4, d3 - vadd.f32 d30, d4, d3 - vadd.f32 d5, d19, d14 - vadd.f32 d7, d31, d26 -.endif - vadd.f32 q1, q14, q5 - vadd.f32 q0, q11, q10 -.if \forward - vadd.f32 d6, d30, d27 - vadd.f32 d4, d18, d15 - vadd.f32 d13, d19, d14 - vsub.f32 d12, d18, d15 - vadd.f32 d15, d31, d26 -.else - vsub.f32 d6, d30, d27 - vsub.f32 d4, d18, d15 - vsub.f32 d13, d19, d14 - vadd.f32 d12, d18, d15 - vsub.f32 d15, d31, d26 -.endif - ldr r3, [r12], #4 - vtrn.32 q1, q3 - ldr lr, [r12], #4 - vtrn.32 q0, q2 - add r3, r2, r3, lsl #2 - vsub.f32 q4, q11, q10 - add lr, r2, lr, lsl #2 - vsub.f32 q5, q14, q5 -.if \forward - vsub.f32 d14, d30, d27 -.else - vadd.f32 d14, d30, d27 -.endif - vst2.32 {q0, q1}, [r3, :128]! - vst2.32 {q2, q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4, q5}, [r3, :128]! - vst2.32 {q6, q7}, [lr, :128]! - bne 1b - - ldr r11, [r0, #32] @ p->i1 - cmp r11, #0 - beq 3f -2: - vld2.32 {q8}, [r6, :128]! - vld2.32 {q9}, [r5, :128]! - vld2.32 {q10}, [r4, :128]! - vld2.32 {q13}, [r1, :128]! - vadd.f32 q11, q9, q8 - vsub.f32 q8, q9, q8 - vsub.f32 q9, q13, q10 - vadd.f32 q12, q13, q10 - subs r11, r11, #1 - vld2.32 {q10}, [r9, :128]! - vld2.32 {q13}, [r7, :128]! - vsub.f32 q2, q12, q11 -.if \forward - vadd.f32 d7, d19, d16 - vsub.f32 d3, d19, d16 - vsub.f32 d6, d18, d17 - vadd.f32 d2, d18, d17 -.else - vsub.f32 d7, d19, d16 - vadd.f32 d3, d19, d16 - vadd.f32 d6, d18, d17 - vsub.f32 d2, d18, d17 -.endif - vld2.32 {q9}, [r10, :128]! - vld2.32 {q8}, [r8, :128]! - vadd.f32 q0, q12, q11 - vadd.f32 q11, q13, q8 - vadd.f32 q12, q10, q9 - vsub.f32 q8, q13, q8 - vsub.f32 q9, q10, q9 - vsub.f32 q6, q12, q11 - vadd.f32 q4, q12, q11 - - vtrn.32 q0, q2 - ldr r3, [r12], #4 -.if \forward - vadd.f32 d15, d19, d16 -.else - vsub.f32 d15, d19, d16 -.endif - ldr lr, [r12], #4 -.if \forward - vsub.f32 d11, d19, d16 - vsub.f32 d14, d18, d17 - vadd.f32 d10, d18, d17 -.else - vadd.f32 d11, d19, d16 - vadd.f32 d14, d18, d17 - vsub.f32 d10, d18, d17 -.endif - add r3, r2, r3, lsl #2 - vtrn.32 q1, q3 - add lr, r2, lr, lsl #2 - vst2.32 {q0,q1}, [r3, :128]! - vst2.32 {q2,q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4,q5}, [r3, :128]! - vst2.32 {q6,q7}, [lr, :128]! - bne 2b - -3: - ldr r11, [r0, #8] - vld1.32 {q8}, [r5, :128]! - vld1.32 {q10}, [r6, :128]! - vld2.32 {q11}, [r4, :128]! - vld2.32 {q13}, [r1, :128]! - vld2.32 {q15}, [r8, :128]! - vorr d25, d17, d17 - vorr d24, d20, d20 - vorr d20, d16, d16 - vsub.f32 q9, q13, q11 - vadd.f32 q11, q13, q11 - ldr r3, [r12], #4 - vtrn.32 d24, d25 - ldr lr, [r12], #4 - vtrn.32 d20, d21 - add r3, r2, r3, lsl #2 - vsub.f32 q8, q10, q12 - add lr, r2, lr, lsl #2 - vadd.f32 q10, q10, q12 - vadd.f32 q0, q11, q10 -.if \forward - vsub.f32 d25, d19, d16 - vadd.f32 d27, d19, d16 -.else - vadd.f32 d25, d19, d16 - vsub.f32 d27, d19, d16 -.endif - vsub.f32 q1, q11, q10 -.if \forward - vadd.f32 d24, d18, d17 - vsub.f32 d26, d18, d17 -.else - vsub.f32 d24, d18, d17 - vadd.f32 d26, d18, d17 -.endif - vtrn.32 q0, q12 - vtrn.32 q1, q13 - vld1.32 {d24, d25}, [r11, :128] - vswp d1, d2 - vst1.32 {q0, q1}, [r3, :128]! - vld2.32 {q0}, [r7, :128]! - vadd.f32 q1, q0, q15 - vld2.32 {q13}, [r10, :128]! - vld2.32 {q14}, [r9, :128]! - vsub.f32 q15, q0, q15 - vsub.f32 q0, q14, q13 - vadd.f32 q3, q14, q13 - vadd.f32 q2, q3, q1 -.if \forward - vsub.f32 d29, d1, d30 - vadd.f32 d27, d1, d30 -.else - vadd.f32 d29, d1, d30 - vsub.f32 d27, d1, d30 -.endif - vsub.f32 q3, q3, q1 -.if \forward - vadd.f32 d28, d0, d31 - vsub.f32 d26, d0, d31 -.else - vsub.f32 d28, d0, d31 - vadd.f32 d26, d0, d31 -.endif - vtrn.32 q2, q14 - vtrn.32 q3, q13 - vswp d5, d6 - vst1.32 {q2, q3}, [r3, :128]! - vtrn.32 q11, q9 - vtrn.32 q10, q8 - vmul.f32 d20, d18, d25 - vmul.f32 d22, d19, d24 - vmul.f32 d21, d19, d25 - vmul.f32 d18, d18, d24 - vmul.f32 d19, d16, d25 - vmul.f32 d30, d17, d24 - vmul.f32 d23, d16, d24 - vmul.f32 d24, d17, d25 - vadd.f32 d17, d22, d20 - vsub.f32 d16, d18, d21 - ldr r3, [r0, #16] @ p->ee_ws - vsub.f32 d21, d30, d19 - ldr r11, [r0, #32] @ p->i1 - vadd.f32 d20, d24, d23 - vadd.f32 q9, q8, q10 - vsub.f32 q8, q8, q10 - vadd.f32 q4, q14, q9 - vsub.f32 q6, q14, q9 -.if \forward - vsub.f32 d11, d27, d16 - vadd.f32 d15, d27, d16 - vadd.f32 d10, d26, d17 - vsub.f32 d14, d26, d17 -.else - vadd.f32 d11, d27, d16 - vsub.f32 d15, d27, d16 - vsub.f32 d10, d26, d17 - vadd.f32 d14, d26, d17 -.endif - cmp r11, #0 - vswp d9, d10 - vswp d13, d14 - vstmia lr!, {q4-q7} - beq 5f - - vld1.32 {d16, d17}, [r3, :128] -4: - vld2.32 {q15}, [r5, :128]! - vld2.32 {q13}, [r4, :128]! - vld2.32 {q14}, [r1, :128]! - vld2.32 {q9}, [r10, :128]! - vld2.32 {q10}, [r9, :128]! - vld2.32 {q11}, [r8, :128]! - vld2.32 {q12}, [r7, :128]! - vsub.f32 q1, q14, q13 - vld2.32 {q0}, [r6, :128]! - subs r11, r11, #1 - vsub.f32 q2, q0, q15 - vadd.f32 q0, q0, q15 - vmul.f32 d10, d2, d17 - vmul.f32 d11, d3, d16 - vmul.f32 d12, d3, d17 - vmul.f32 d6, d4, d17 - vmul.f32 d7, d5, d16 - vmul.f32 d8, d4, d16 - vmul.f32 d9, d5, d17 - vmul.f32 d13, d2, d16 - vsub.f32 d7, d7, d6 - vadd.f32 d11, d11, d10 - vsub.f32 q1, q12, q11 - vsub.f32 q2, q10, q9 - vadd.f32 d6, d9, d8 - vadd.f32 q4, q14, q13 - vadd.f32 q11, q12, q11 - vadd.f32 q12, q10, q9 - vsub.f32 d10, d13, d12 - vsub.f32 q7, q4, q0 - vsub.f32 q9, q12, q11 - vsub.f32 q13, q5, q3 -.if \forward - vsub.f32 d29, d5, d2 -.else - vadd.f32 d29, d5, d2 -.endif - vadd.f32 q5, q5, q3 - vadd.f32 q10, q4, q0 - vadd.f32 q11, q12, q11 -.if \forward - vadd.f32 d31, d5, d2 - vadd.f32 d28, d4, d3 - vsub.f32 d30, d4, d3 - vsub.f32 d5, d19, d14 - vsub.f32 d7, d31, d26 -.else - vsub.f32 d31, d5, d2 - vsub.f32 d28, d4, d3 - vadd.f32 d30, d4, d3 - vadd.f32 d5, d19, d14 - vadd.f32 d7, d31, d26 -.endif - vadd.f32 q1, q14, q5 - vadd.f32 q0, q11, q10 -.if \forward - vadd.f32 d6, d30, d27 - vadd.f32 d4, d18, d15 - vadd.f32 d13, d19, d14 - vsub.f32 d12, d18, d15 - vadd.f32 d15, d31, d26 -.else - vsub.f32 d6, d30, d27 - vsub.f32 d4, d18, d15 - vsub.f32 d13, d19, d14 - vadd.f32 d12, d18, d15 - vsub.f32 d15, d31, d26 -.endif - ldr r3, [r12], #4 - vtrn.32 q1, q3 - ldr lr, [r12], #4 - vtrn.32 q0, q2 - add r3, r2, r3, lsl #2 - vsub.f32 q4, q11, q10 - add lr, r2, lr, lsl #2 - vsub.f32 q5, q14, q5 -.if \forward - vsub.f32 d14, d30, d27 -.else - vadd.f32 d14, d30, d27 -.endif - vst2.32 {q0, q1}, [r3, :128]! - vst2.32 {q2, q3}, [lr, :128]! - vtrn.32 q4, q6 - vtrn.32 q5, q7 - vst2.32 {q4, q5}, [r3, :128]! - vst2.32 {q6, q7}, [lr, :128]! - bne 4b - -5: - vpop {q4-q7} - pop {r4-r12, pc} -.endm - -.macro neon_static_x4, forward=1 - .align 4 - -.if \forward -#ifdef __APPLE__ - .globl _neon_static_x4_f -_neon_static_x4_f: -#else - .globl neon_static_x4_f -neon_static_x4_f: -#endif -.else -#ifdef __APPLE__ - .globl _neon_static_x4_i -_neon_static_x4_i: -#else - .globl neon_static_x4_i -neon_static_x4_i: -#endif -.endif - add r3, r0, #64 - vpush {q4-q7} - - vld1.32 {q2, q3}, [r1, :128] - vld1.32 {q12, q13}, [r3, :128]! - mov r2, r0 - vmul.f32 q0, q13, q3 - vld1.32 {q14, q15}, [r3, :128] - vmul.f32 q5, q12, q2 - vld1.32 {q8, q9}, [r0, :128]! - vmul.f32 q1, q14, q2 - vld1.32 {q10, q11}, [r0, :128] - vmul.f32 q4, q14, q3 - vmul.f32 q14, q12, q3 - vmul.f32 q13, q13, q2 - vmul.f32 q12, q15, q3 - vmul.f32 q2, q15, q2 - vsub.f32 q0, q5, q0 - vadd.f32 q13, q13, q14 - vadd.f32 q12, q12, q1 - vsub.f32 q1, q2, q4 - vadd.f32 q15, q0, q12 - vsub.f32 q12, q0, q12 - vadd.f32 q14, q13, q1 - vsub.f32 q13, q13, q1 - vadd.f32 q0, q8, q15 - vadd.f32 q1, q9, q14 -.if \forward - vadd.f32 q2, q10, q13 -.else - vsub.f32 q2, q10, q13 -.endif - vsub.f32 q4, q8, q15 -.if \forward - vsub.f32 q3, q11, q12 -.else - vadd.f32 q3, q11, q12 -.endif - vst1.32 {q0, q1}, [r2, :128]! - vsub.f32 q5, q9, q14 -.if \forward - vsub.f32 q6, q10, q13 - vadd.f32 q7, q11, q12 -.else - vadd.f32 q6, q10, q13 - vsub.f32 q7, q11, q12 -.endif - vst1.32 {q2, q3}, [r2, :128]! - vst1.32 {q4, q5}, [r2, :128]! - vst1.32 {q6, q7}, [r2, :128] - - vpop {q4-q7} - bx lr -.endm - -.macro neon_static_x8, forward=1 - .align 4 - -.if \forward -#ifdef __APPLE__ - .globl _neon_static_x8_f -_neon_static_x8_f: -#else - .globl neon_static_x8_f -neon_static_x8_f: -#endif -.else -#ifdef __APPLE__ - .globl _neon_static_x8_i -_neon_static_x8_i: -#else - .globl neon_static_x8_i -neon_static_x8_i: -#endif -.endif - push {r4-r8, lr} - vpush {q4-q7} - - add r4, r0, r1, lsl #1 @ data2 - add r3, r0, r1 @ data1 - add r6, r4, r1, lsl #1 @ data4 - add r5, r4, r1 @ data3 - add r8, r6, r1, lsl #1 @ data6 - add r7, r6, r1 @ data5 - add r12, r8, r1 @ data7 - -1: - vld1.32 {q2, q3}, [r2, :128]! - subs r1, r1, #32 - vld1.32 {q14, q15}, [r5, :128] - vmul.f32 q12, q15, q2 - vld1.32 {q10, q11}, [r4, :128] - vmul.f32 q8, q14, q3 - vmul.f32 q13, q14, q2 - vmul.f32 q9, q10, q3 - vmul.f32 q1, q10, q2 - vmul.f32 q0, q11, q2 - vmul.f32 q14, q11, q3 - vmul.f32 q15, q15, q3 - vsub.f32 q10, q12, q8 - vld1.32 {q2, q3}, [r2, :128]! - vadd.f32 q11, q0, q9 - vadd.f32 q8, q15, q13 - vsub.f32 q9, q1, q14 - vld1.32 {q12, q13}, [r3, :128] - vsub.f32 q15, q11, q10 - vsub.f32 q14, q9, q8 -.if \forward - vadd.f32 q4, q12, q15 - vsub.f32 q6, q12, q15 - vsub.f32 q5, q13, q14 - vadd.f32 q7, q13, q14 -.else - vsub.f32 q4, q12, q15 - vadd.f32 q6, q12, q15 - vadd.f32 q5, q13, q14 - vsub.f32 q7, q13, q14 -.endif - vld1.32 {q14, q15}, [r8, :128] - vld1.32 {q12, q13}, [r6, :128] - vmul.f32 q1, q14, q2 - vmul.f32 q0, q14, q3 - vst1.32 {q4, q5}, [r3, :128] - vmul.f32 q14, q15, q3 - vmul.f32 q4, q15, q2 - vadd.f32 q15, q9, q8 - vst1.32 {q6, q7}, [r5, :128] - vmul.f32 q8, q12, q3 - vmul.f32 q5, q13, q3 - vmul.f32 q12, q12, q2 - vmul.f32 q9, q13, q2 - vadd.f32 q14, q14, q1 - vsub.f32 q13, q4, q0 - vadd.f32 q0, q9, q8 - vld1.32 {q8, q9}, [r0, :128] - vadd.f32 q1, q11, q10 - vsub.f32 q12, q12, q5 - vadd.f32 q11, q8, q15 - vsub.f32 q8, q8, q15 - vadd.f32 q2, q12, q14 - vsub.f32 q10, q0, q13 - vadd.f32 q15, q0, q13 - vadd.f32 q13, q9, q1 - vsub.f32 q9, q9, q1 - vsub.f32 q12, q12, q14 - vadd.f32 q0, q11, q2 - vadd.f32 q1, q13, q15 - vsub.f32 q4, q11, q2 -.if \forward - vadd.f32 q2, q8, q10 - vsub.f32 q3, q9, q12 -.else - vsub.f32 q2, q8, q10 - vadd.f32 q3, q9, q12 -.endif - vst1.32 {q0, q1}, [r0, :128]! - vsub.f32 q5, q13, q15 - vld1.32 {q14, q15}, [r12, :128] -.if \forward - vadd.f32 q7, q9, q12 -.else - vsub.f32 q7, q9, q12 -.endif - vld1.32 {q12, q13}, [r7, :128] - vst1.32 {q2, q3}, [r4, :128]! - vld1.32 {q2, q3}, [r2, :128]! -.if \forward - vsub.f32 q6, q8, q10 -.else - vadd.f32 q6, q8, q10 -.endif - vmul.f32 q8, q14, q2 - vst1.32 {q4, q5}, [r6, :128]! - vmul.f32 q10, q15, q3 - vmul.f32 q9, q13, q3 - vmul.f32 q11, q12, q2 - vmul.f32 q14, q14, q3 - vst1.32 {q6, q7}, [r8, :128]! - vmul.f32 q15, q15, q2 - vmul.f32 q12, q12, q3 - vmul.f32 q13, q13, q2 - vadd.f32 q10, q10, q8 - vsub.f32 q11, q11, q9 - vld1.32 {q8, q9}, [r3, :128] - vsub.f32 q14, q15, q14 - vadd.f32 q15, q13, q12 - vadd.f32 q13, q11, q10 - vadd.f32 q12, q15, q14 - vsub.f32 q15, q15, q14 - vsub.f32 q14, q11, q10 - vld1.32 {q10, q11}, [r5, :128] - vadd.f32 q0, q8, q13 - vadd.f32 q1, q9, q12 -.if \forward - vadd.f32 q2, q10, q15 - vsub.f32 q3, q11, q14 -.else - vsub.f32 q2, q10, q15 - vadd.f32 q3, q11, q14 -.endif - vsub.f32 q4, q8, q13 - vst1.32 {q0, q1}, [r3, :128]! - vsub.f32 q5, q9, q12 -.if \forward - vsub.f32 q6, q10, q15 -.else - vadd.f32 q6, q10, q15 -.endif - vst1.32 {q2, q3}, [r5, :128]! -.if \forward - vadd.f32 q7, q11, q14 -.else - vsub.f32 q7, q11, q14 -.endif - vst1.32 {q4, q5}, [r7, :128]! - vst1.32 {q6, q7}, [r12, :128]! - bne 1b - - vpop {q4-q7} - pop {r4-r8, pc} -.endm - -.macro neon_static_x8_t, forward=1 - .align 4 - -.if \forward -#ifdef __APPLE__ - .globl _neon_static_x8_t_f -_neon_static_x8_t_f: -#else - .globl neon_static_x8_t_f -neon_static_x8_t_f: -#endif -.else -#ifdef __APPLE__ - .globl _neon_static_x8_t_i -_neon_static_x8_t_i: -#else - .globl neon_static_x8_t_i -neon_static_x8_t_i: -#endif -.endif - push {r4-r8, lr} - vpush {q4-q7} - - add r4, r0, r1, lsl #1 @ data2 - add r3, r0, r1 @ data1 - add r6, r4, r1, lsl #1 @ data4 - add r5, r4, r1 @ data3 - add r8, r6, r1, lsl #1 @ data6 - add r7, r6, r1 @ data5 - add r12, r8, r1 @ data7 - -1: - vld1.32 {q2, q3}, [r2, :128]! - subs r1, r1, #32 - vld1.32 {q14, q15}, [r5, :128] - vmul.f32 q12, q15, q2 - vld1.32 {q10, q11}, [r4, :128] - vmul.f32 q8, q14, q3 - vmul.f32 q13, q14, q2 - vmul.f32 q9, q10, q3 - vmul.f32 q1, q10, q2 - vmul.f32 q0, q11, q2 - vmul.f32 q14, q11, q3 - vmul.f32 q15, q15, q3 - vsub.f32 q10, q12, q8 - vld1.32 {q2, q3}, [r2, :128]! - vadd.f32 q11, q0, q9 - vadd.f32 q8, q15, q13 - vsub.f32 q9, q1, q14 - vld1.32 {q12, q13}, [r3, :128] - vsub.f32 q15, q11, q10 - vsub.f32 q14, q9, q8 -.if \forward - vadd.f32 q4, q12, q15 - vsub.f32 q6, q12, q15 - vsub.f32 q5, q13, q14 - vadd.f32 q7, q13, q14 -.else - vsub.f32 q4, q12, q15 - vadd.f32 q6, q12, q15 - vadd.f32 q5, q13, q14 - vsub.f32 q7, q13, q14 -.endif - vld1.32 {q14, q15}, [r8, :128] - vld1.32 {q12, q13}, [r6, :128] - vmul.f32 q1, q14, q2 - vmul.f32 q0, q14, q3 - vst1.32 {q4, q5}, [r3, :128] - vmul.f32 q14, q15, q3 - vmul.f32 q4, q15, q2 - vadd.f32 q15, q9, q8 - vst1.32 {q6, q7}, [r5, :128] - vmul.f32 q8, q12, q3 - vmul.f32 q5, q13, q3 - vmul.f32 q12, q12, q2 - vmul.f32 q9, q13, q2 - vadd.f32 q14, q14, q1 - vsub.f32 q13, q4, q0 - vadd.f32 q0, q9, q8 - vld1.32 {q8, q9}, [r0, :128] - vadd.f32 q1, q11, q10 - vsub.f32 q12, q12, q5 - vadd.f32 q11, q8, q15 - vsub.f32 q8, q8, q15 - vadd.f32 q2, q12, q14 - vsub.f32 q10, q0, q13 - vadd.f32 q15, q0, q13 - vadd.f32 q13, q9, q1 - vsub.f32 q9, q9, q1 - vsub.f32 q12, q12, q14 - vadd.f32 q0, q11, q2 - vadd.f32 q1, q13, q15 - vsub.f32 q4, q11, q2 -.if \forward - vadd.f32 q2, q8, q10 - vsub.f32 q3, q9, q12 -.else - vsub.f32 q2, q8, q10 - vadd.f32 q3, q9, q12 -.endif - vst2.32 {q0, q1}, [r0, :128]! - vsub.f32 q5, q13, q15 - vld1.32 {q14, q15}, [r12, :128] -.if \forward - vadd.f32 q7, q9, q12 -.else - vsub.f32 q7, q9, q12 -.endif - vld1.32 {q12, q13}, [r7, :128] - vst2.32 {q2, q3}, [r4, :128]! - vld1.32 {q2, q3}, [r2, :128]! -.if \forward - vsub.f32 q6, q8, q10 -.else - vadd.f32 q6, q8, q10 -.endif - vmul.f32 q8, q14, q2 - vst2.32 {q4, q5}, [r6, :128]! - vmul.f32 q10, q15, q3 - vmul.f32 q9, q13, q3 - vmul.f32 q11, q12, q2 - vmul.f32 q14, q14, q3 - vst2.32 {q6, q7}, [r8, :128]! - vmul.f32 q15, q15, q2 - vmul.f32 q12, q12, q3 - vmul.f32 q13, q13, q2 - vadd.f32 q10, q10, q8 - vsub.f32 q11, q11, q9 - vld1.32 {q8, q9}, [r3, :128] - vsub.f32 q14, q15, q14 - vadd.f32 q15, q13, q12 - vadd.f32 q13, q11, q10 - vadd.f32 q12, q15, q14 - vsub.f32 q15, q15, q14 - vsub.f32 q14, q11, q10 - vld1.32 {q10, q11}, [r5, :128] - vadd.f32 q0, q8, q13 - vadd.f32 q1, q9, q12 -.if \forward - vadd.f32 q2, q10, q15 - vsub.f32 q3, q11, q14 -.else - vsub.f32 q2, q10, q15 - vadd.f32 q3, q11, q14 -.endif - vsub.f32 q4, q8, q13 - vst2.32 {q0, q1}, [r3, :128]! - vsub.f32 q5, q9, q12 -.if \forward - vsub.f32 q6, q10, q15 -.else - vadd.f32 q6, q10, q15 -.endif - vst2.32 {q2, q3}, [r5, :128]! -.if \forward - vadd.f32 q7, q11, q14 -.else - vsub.f32 q7, q11, q14 -.endif - vst2.32 {q4, q5}, [r7, :128]! - vst2.32 {q6, q7}, [r12, :128]! - bne 1b - - vpop {q4-q7} - pop {r4-r8, pc} -.endm - -# neon_static_e_f -neon_static_e, forward=1 - -# neon_static_e_i -neon_static_e, forward=0 - -# neon_static_o_f -neon_static_o, forward=1 - -# neon_static_o_i -neon_static_o, forward=0 - -# neon_static_x4_f -neon_static_x4, forward=1 - -# neon_static_x4_i -neon_static_x4, forward=0 - -# neon_static_x8_f -neon_static_x8, forward=1 - -# neon_static_x8_i -neon_static_x8, forward=0 - -# neon_static_x8_t_f -neon_static_x8_t, forward=1 - -# neon_static_x8_t_i -neon_static_x8_t, forward=0 - diff --git a/FFTS/Sources/FFTS/src/patterns.h b/FFTS/Sources/FFTS/src/patterns.h deleted file mode 100644 index 69bbe76..0000000 --- a/FFTS/Sources/FFTS/src/patterns.h +++ /dev/null @@ -1,520 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2012, Anthony M. Blake -Copyright (c) 2012, The University of Waikato -Copyright (c) 2015, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_PATTERNS_H -#define FFTS_PATTERNS_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#include - -#ifdef HAVE_STDLIB_H -#include -#endif - -#ifndef LEAF_N -#define LEAF_N 8 -#endif - -#if LEAF_N == 8 -static void -ffts_elaborate_offsets_even8(ptrdiff_t *const offsets, - int log_N); - -static void -ffts_elaborate_offsets_odd8(ptrdiff_t *const offsets, - int log_N, - int input_offset, - int output_offset, - int stride); - -static void -ffts_hardcodedleaf_is_rec_even4(ptrdiff_t **is, - int big_N, - int offset, - int stride, - int VL); - -static void -ffts_hardcodedleaf_is_rec_even8(ptrdiff_t **is, - int big_N, - int offset, - int stride, - int VL); -#else -static void -ffts_elaborate_offsets_even(ptrdiff_t *const offsets, - int leaf_N, - int N, - int input_offset, - int output_offset, - int stride); - -static void -ffts_elaborate_offsets_odd(ptrdiff_t *const offsets, - int leaf_N, - int N, - int input_offset, - int output_offset, - int stride); - -static void -ffts_hardcodedleaf_is_rec_even(ptrdiff_t **is, - int big_N, - int N, - int offset, - int stride, - int VL); - -static void -ffts_hardcodedleaf_is_rec_odd(ptrdiff_t **is, - int big_N, - int N, - int offset, - int stride, - int VL); -#endif - -static int -ffts_compare_offsets(const void *pa, const void *pb) -{ - const ptrdiff_t a = *(const ptrdiff_t*) pa; - const ptrdiff_t b = *(const ptrdiff_t*) pb; - return (a > b) - (a < b); -} - -static void -ffts_permute_addr(int N, int offset, int stride, int *const d) -{ - int a[4] = {0,2,1,3}; - int i; - - for (i = 0; i < 4; i++) { - d[i] = offset + (a[i] << stride); - if (d[i] < 0) { - d[i] += N; - } - } -} - -#if LEAF_N == 8 -static void -ffts_elaborate_offsets_even8(ptrdiff_t *const offsets, int log_N) -{ - int offset = 1 << (log_N - 4); - int stride = 1; - - offsets[0] = 0; - offsets[1] = 0; - offsets[2] = offset * 2; - offsets[3] = 8; - offsets[4] = offset; - offsets[5] = 16; - offsets[6] = -offset; - offsets[7] = 24; - - for(; log_N > 5; --log_N, stride *= 2) { - ffts_elaborate_offsets_odd8(offsets, log_N - 2, - stride, 1 << (log_N - 1), stride * 4); - - ffts_elaborate_offsets_odd8(offsets, log_N - 2, - -stride, 3 * (1 << (log_N - 2)), stride * 4); - } -} - -static void -ffts_elaborate_offsets_odd8(ptrdiff_t *const offsets, - int log_N, - int input_offset, - int output_offset, - int stride) -{ - if (log_N <= 4) { - offsets[(output_offset / 4) + 0] = input_offset * 2; - offsets[(output_offset / 4) + 1] = output_offset; - - if (log_N == 4) { - offsets[(output_offset / 4) + 2] = (input_offset + stride) * 2; - offsets[(output_offset / 4) + 3] = output_offset + 8; - } - } else { - ffts_elaborate_offsets_odd8(offsets, log_N - 1, input_offset, - output_offset, stride * 2); - - ffts_elaborate_offsets_odd8(offsets, log_N - 2, input_offset + stride, - output_offset + (1 << (log_N - 1)), stride * 4); - - ffts_elaborate_offsets_odd8(offsets, log_N - 2, input_offset - stride, - output_offset + 3 * (1 << (log_N - 2)), stride * 4); - } -} - -static void -ffts_hardcodedleaf_is_rec_even4(ptrdiff_t **is, - int big_N, - int offset, - int stride, - int VL) -{ - int i, perm[4]; - - ffts_permute_addr(big_N, offset, stride, perm); - - if (!((2 * perm[0]) % (2 * VL))) { - for (i = 0; i < 4; i++) { - (*is)[i] = 2 * perm[i]; - } - - *is += 4; - } -} - -static void -ffts_hardcodedleaf_is_rec_even8(ptrdiff_t **is, - int big_N, - int offset, - int stride, - int VL) -{ - int temp; - - ffts_hardcodedleaf_is_rec_even4(is, big_N, offset, stride + 1, VL); - - temp = offset + (1 << stride); - if (temp < 0) { - temp += big_N; - } - - temp *= 2; - - if (!(temp % (2 * VL))) { - int i; - - (*is)[0] = offset + (1 << stride); - (*is)[1] = offset + (1 << stride) + (1 << (stride + 2)); - (*is)[2] = offset - (1 << stride); - (*is)[3] = offset - (1 << stride) + (1 << (stride + 2)); - - for (i = 0; i < 4; i++) { - if ((*is)[i] < 0) { - (*is)[i] += big_N; - } - } - - for (i = 0; i < 4; i++) { - (*is)[i] *= 2; - } - - *is += 4; - } -} -#else -static void -ffts_elaborate_offsets_even(ptrdiff_t *const offsets, - int leaf_N, - int N, - int input_offset, - int output_offset, - int stride) -{ - if (N == leaf_N) { - offsets[2 * (output_offset / leaf_N) + 0] = input_offset * 2; - offsets[2 * (output_offset / leaf_N) + 1] = output_offset; - } else if (N > 4) { - ffts_elaborate_offsets_even(offsets, leaf_N, - N/2, input_offset, output_offset, stride * 2); - - ffts_elaborate_offsets_odd(offsets, leaf_N, - N/4, input_offset + stride, output_offset + N/2, stride * 4); - - if (N/4 >= leaf_N) { - ffts_elaborate_offsets_odd(offsets, leaf_N, - N/4, input_offset - stride, output_offset + 3*N/4, stride * 4); - } - } -} - -static void -ffts_elaborate_offsets_odd(ptrdiff_t *const offsets, - int leaf_N, - int N, - int input_offset, - int output_offset, - int stride) -{ - if (N <= leaf_N) { - offsets[2 * (output_offset / leaf_N) + 0] = input_offset * 2; - offsets[2 * (output_offset / leaf_N) + 1] = output_offset; - } else if (N > 4) { - ffts_elaborate_offsets_odd(offsets, leaf_N, N/2, - input_offset, output_offset, stride * 2); - - ffts_elaborate_offsets_odd(offsets, leaf_N, N/4, - input_offset + stride, output_offset + N/2, stride * 4); - - if (N/4 >= leaf_N) { - ffts_elaborate_offsets_odd(offsets, leaf_N, N/4, - input_offset - stride, output_offset + 3*N/4, stride * 4); - } - } -} - -static void -ffts_hardcodedleaf_is_rec_even(ptrdiff_t **is, - int big_N, - int N, - int offset, - int stride, - int VL) -{ - if (N > 4) { - ffts_hardcodedleaf_is_rec_even(is, big_N, N/2, offset, stride + 1, VL); - - if (N/4 >= 4) { - ffts_hardcodedleaf_is_rec_odd( - is, big_N, N/4, offset + (1 << stride), stride + 2, VL); - ffts_hardcodedleaf_is_rec_odd( - is, big_N, N/4, offset - (1 << stride), stride + 2, VL); - } else { - int temp = offset + (1 << stride); - - if (temp < 0) { - temp += big_N; - } - - temp *= 2; - - if (!(temp % (2 * VL))) { - int i; - - (*is)[0] = offset + (1 << stride); - (*is)[1] = offset + (1 << stride) + (1 << (stride + 2)); - (*is)[2] = offset - (1 << stride); - (*is)[3] = offset - (1 << stride) + (1 << (stride + 2)); - - for (i = 0; i < 4; i++) { - if ((*is)[i] < 0) { - (*is)[i] += big_N; - } - } - - for (i = 0; i < 4; i++) { - (*is)[i] *= 2; - } - - *is += 4; - } - } - } else if (N == 4) { - int perm[4]; - - ffts_permute_addr(big_N, offset, stride, perm); - - if (!((2 * perm[0]) % (2 * VL))) { - int i; - - for (i = 0; i < 4; i++) { - (*is)[i] = 2 * perm[i]; - } - - *is += 4; - } - } -} - -static void -ffts_hardcodedleaf_is_rec_odd(ptrdiff_t **is, - int big_N, - int N, - int offset, - int stride, - int VL) -{ - if (N > 4) { - ffts_hardcodedleaf_is_rec_odd(is, big_N, N/2, offset, stride + 1, VL); - - if (N/4 >= 4) { - ffts_hardcodedleaf_is_rec_odd( - is, big_N, N/4, offset + (1 << stride), stride + 2, VL); - ffts_hardcodedleaf_is_rec_odd( - is, big_N, N/4, offset - (1 << stride), stride + 2, VL); - } else { - int temp = offset + (1 << stride); - - if (temp < 0) { - temp += big_N; - } - - temp *= 2; - - if (!(temp % (2 * VL))) { - int i; - - (*is)[0] = offset + (1 << stride); - (*is)[1] = offset + (1 << stride) + (1 << (stride + 2)); - (*is)[2] = offset - (1 << stride); - (*is)[3] = offset - (1 << stride) + (1 << (stride + 2)); - - for (i = 0; i < 4; i++) { - if ((*is)[i] < 0) { - (*is)[i] += big_N; - } - } - - for (i = 0; i < 4; i++) { - (*is)[i] *= 2; - } - - *is += 4; - } - } - } else if (N == 4) { - int perm[4]; - - ffts_permute_addr(big_N, offset, stride, perm); - - if (!((2 * perm[0]) % (2 * VL))) { - int i; - - for (i = 0; i < 4; i++) { - (*is)[i] = 2 * perm[i]; - } - - *is += 4; - } - } -} -#endif - -static ptrdiff_t* -ffts_init_is(size_t N, size_t leaf_N, int VL) -{ - int i, i0, i1, i2; - int stride = ffts_ctzl(N/leaf_N); - ptrdiff_t *is, *pis; - - is = malloc(N / VL * sizeof(*is)); - if (!is) { - return NULL; - } - - i0 = N/leaf_N/3 + 1; - i1 = i2 = N/leaf_N/3; - if ((N/leaf_N) % 3 > 1) { - i1++; - } - - pis = is; - -#if LEAF_N == 8 - for (i = 0; i < i0; i++) { - ffts_hardcodedleaf_is_rec_even8( - &pis, N, i, stride, VL); - } - - for (i = i0; i < i0 + i1; i++) { - ffts_hardcodedleaf_is_rec_even4( - &pis, N, i, stride + 1, VL); - ffts_hardcodedleaf_is_rec_even4( - &pis, N, i - (1 << stride), stride + 1, VL); - } - - for (i = 0 - i2; i < 0; i++) { - ffts_hardcodedleaf_is_rec_even8( - &pis, N, i, stride, VL); - } -#else - for (i = 0; i < i0; i++) { - ffts_hardcodedleaf_is_rec_even( - &pis, N, leaf_N, i, stride, VL); - } - - for (i = i0; i < i0 + i1; i++) { - ffts_hardcodedleaf_is_rec_even( - &pis, N, leaf_N / 2, i, stride + 1, VL); - ffts_hardcodedleaf_is_rec_even( - &pis, N, leaf_N / 2, i - (1 << stride), stride + 1, VL); - } - - for (i = 0 - i2; i < 0; i++) { - ffts_hardcodedleaf_is_rec_even( - &pis, N, leaf_N, i, stride, VL); - } -#endif - - return is; -} - -static ptrdiff_t* -ffts_init_offsets(size_t N, size_t leaf_N) -{ - ptrdiff_t *offsets, *tmp; - size_t i; - - offsets = malloc(N/leaf_N * sizeof(*offsets)); - if (!offsets) { - return NULL; - } - - tmp = malloc(2 * N/leaf_N * sizeof(*tmp)); - if (!tmp) { - free(offsets); - return NULL; - } - -#if LEAF_N == 8 - ffts_elaborate_offsets_even8(tmp, ffts_ctzl(N)); -#else - ffts_elaborate_offsets_even(tmp, leaf_N, N, 0, 0, 1); -#endif - - for (i = 0; i < 2*N/leaf_N; i += 2) { - if (tmp[i] < 0) { - tmp[i] += N; - } - } - - qsort(tmp, N/leaf_N, 2 * sizeof(*tmp), ffts_compare_offsets); - - for (i = 0; i < N/leaf_N; i++) { - offsets[i] = 2 * tmp[2*i + 1]; - } - - free(tmp); - return offsets; -} - -#endif /* FFTS_PATTERNS_H */ diff --git a/FFTS/Sources/FFTS/src/sequitur.h b/FFTS/Sources/FFTS/src/sequitur.h deleted file mode 100644 index d459c56..0000000 --- a/FFTS/Sources/FFTS/src/sequitur.h +++ /dev/null @@ -1,448 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, Anthony M. Blake - Copyright (c) 2012, The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -typedef struct _sym_t { - int c; - struct _sym_t *pPrev, *pNext; - struct _seq_rule_t *r; - int offset; -} sym_t; - -typedef struct _seq_rule_t { - int c; - sym_t *ss; - struct _seq_rule_t *pPrev, *pNext; - int count; - int length; -} seq_rule_t; - -void sym_tail_insert(sym_t **ss, sym_t *s) -{ - if (!*ss) { - *ss = s; - s->pPrev = s->pNext = NULL; - } else { - while (*ss) { - s->pPrev = *ss; - ss = &(*ss)->pNext; - } - - *ss = s; - } -} - -sym_t* sym_init(int c) -{ - sym_t *s; - - s = (sym_t*) malloc(sizeof(*s)); - if (!s) { - return NULL; - } - - s->c = c; - s->pPrev = s->pNext = NULL; - s->r = NULL; - - return s; -} - -sym_t* sym_init_from_sym(sym_t *s2) -{ - sym_t *s; - - s = (sym_t*) malloc(sizeof(*s)); - if (!s) { - return NULL; - } - - s->c = s2->c; - s->pPrev = s->pNext = NULL; - s->r = s2->r; - s->offset = s2->offset; - - return s; -} - -seq_rule_t* seq_init_rule(int c) -{ - seq_rule_t *G; - - G = (seq_rule_t *)malloc(sizeof(*G)); - if (!G) { - return NULL; - } - - G->c = c; - G->count = 2; - G->ss = NULL; - G->pPrev = NULL; - G->pNext = NULL; - - return G; -} - -seq_rule_t* seq_grammer_insert_new_rule(seq_rule_t *G, char r, sym_t *a, sym_t *b) -{ - sym_t *sa, *sb; - - while (G->pNext) { - G = G->pNext; - } - - G->pNext = seq_init_rule(r); - if (!G->pNext) { - return NULL; - } - - sa = sym_init_from_sym(a); - if (!sa) { - goto cleanup_pnext; - } - - sb = sym_init_from_sym(b); - if (!sb) { - goto cleanup_sa; - } - - sb->offset = sb->offset - sa->offset; - sa->offset = 0; - sym_tail_insert(&G->pNext->ss, sa); - sym_tail_insert(&G->pNext->ss, sb); - return G->pNext; - -cleanup_sa: - free(sa); - -cleanup_pnext: - free(G->pNext); - G->pNext = NULL; - - return NULL; -} - -sym_t* sym_match_digram(sym_t *s, sym_t *term, sym_t *a, sym_t *b) -{ - while (s != term) { - if (s->c == a->c && s->pNext->c == b->c && - s->pNext->offset - s->offset == b->offset-a->offset) { - return s; - } - - s = s->pNext; - } - - return NULL; -} - -seq_rule_t* seq_match_digram(seq_rule_t *R, sym_t *a, sym_t *b) -{ - while (R) { - if (R->ss->c == a->c && R->ss->pNext->c == b->c && - R->ss->pNext->offset - R->ss->offset == b->offset - a->offset) { - return R; - } - - R = R->pNext; - } - - return NULL; -} - -sym_t* sym_tail(sym_t *s) -{ - while (s->pNext) { - s = s->pNext; - } - - return s; -} - -int sym_count(sym_t *s) -{ - int count = 0; - - while (s) { - count++; - s = s->pNext; - } - - return count; -} - -sym_t* sym_copylist(sym_t *s) -{ - sym_t *head = NULL; - sym_t *prev = head; - - while (s) { - sym_t *copy = sym_init_from_sym(s); - if (!copy) { - return NULL; - } - - copy->pPrev = prev; - - if (prev) { - prev->pNext = copy; - } - - if (!head) { - head = copy; - } - - prev = copy; - s = s->pNext; - } - - return head; -} - -void seq_enforce_uniqueness(seq_rule_t *G) -{ - seq_rule_t *R = G;//->pNext; - seq_rule_t **ppr = &G->pNext; - - while (R) { - if (R == G || R->count > 1) { - sym_t *s = R->ss; - sym_t **pp = &R->ss; - - while (s) { - if (s->r && s->r->count == 1) { - sym_t *temp_itr; - - *pp = s->r->ss; - - temp_itr = s->r->ss; - while (temp_itr) { - temp_itr->offset += s->offset; - temp_itr = temp_itr->pNext; - } - - s->r->ss->pPrev = s->pPrev; - if (s->pNext) { - s->pNext->pPrev = sym_tail(s->r->ss); - } - - sym_tail(s->r->ss)->pNext = s->pNext; - s = s->r->ss; - continue; - } - - pp = &s->pNext; - s = s->pNext; - } - - ppr = &R->pNext; - } else { - *ppr = R->pNext; - } - - R = R->pNext; - } -} - -void seq_merge_small_rules(seq_rule_t *G, int thresh) -{ - seq_rule_t *R = G; - - while (R) { - if (sym_count(R->ss) <= thresh) { - //printf("count %d > %d for %d\n", sym_count(R->ss), thresh, R->c); - sym_t *s = R->ss; - sym_t **pp = &R->ss; - - while (s) { - if (s->r) { - sym_t *copylist; - sym_t *copylist_itr; - - s->r->count--; - - copylist = sym_copylist(s->r->ss); - if (!copylist) { - return; - } - - copylist_itr = copylist; - while (copylist_itr) { - copylist_itr->offset += s->offset; - copylist_itr = copylist_itr->pNext; - } - - *pp = copylist; - copylist->pPrev = s->pPrev; - if (s->pNext) { - s->pNext->pPrev = sym_tail(copylist); - } - - sym_tail(copylist)->pNext = s->pNext; - pp = &(sym_tail(copylist)->pNext); - s = sym_tail(copylist)->pNext; - continue; - } - - pp = &s->pNext; - s = s->pNext; - } - } - - R = R->pNext; - } - - seq_enforce_uniqueness(G); -} - -void seq_extract_hierarchy(seq_rule_t *G) -{ - int next_rule = -2; - sym_t *cursym = G->ss; - - while (cursym) { - sym_t *m = NULL; - seq_rule_t *mr = NULL; - - if (cursym->pPrev && cursym->pPrev->pPrev) { - mr = seq_match_digram(G->pNext, cursym->pPrev, cursym); - if (mr) { - if (cursym->pPrev->r) { - cursym->pPrev->r->count--; - } - - if(cursym->r) { - cursym->r->count--; - } - - mr->count++; - - cursym->pPrev->r = mr; - cursym->pPrev->c = mr->c; - cursym->pPrev->pNext = cursym->pNext; - cursym->pNext->pPrev = cursym->pPrev; - cursym = cursym->pPrev; - } - - m = sym_match_digram(G->ss, cursym->pPrev->pPrev, cursym->pPrev, cursym); - if (m) { - seq_rule_t *newr; - - if (cursym->pPrev->r) { - cursym->pPrev->r->count--; - } - - if (cursym->r) { - cursym->r->count--; - } - - newr = seq_grammer_insert_new_rule(G, next_rule, m, m->pNext); - if (!newr) { - return; - } - - m->r = newr; - m->c = next_rule; - m->pNext = m->pNext->pNext; - m->pNext->pPrev = m; - - cursym->pPrev->r = newr; - cursym->pPrev->c = next_rule; - cursym->pPrev->pNext = cursym->pNext; - cursym->pNext->pPrev = cursym->pPrev; - cursym = cursym->pPrev; - - next_rule--; - } - } - - if (!m && !mr) { - cursym = cursym->pNext; - } - } - - seq_enforce_uniqueness(G); - seq_merge_small_rules(G, 2); -// seq_enforce_uniqueness(G); -} - -void seq_compute_lengths(seq_rule_t *G) -{ - seq_rule_t *R = G->pNext; - sym_t *s; - int sum; - - while (R) { - sum = 0; - s = R->ss; - - while (s) { - if (s->c >= 0) { - if (s->offset + s->c > sum) { - sum = s->offset + s->c; - } - } - - if (s->c < 0) { - if (s->offset + s->r->length > sum) { - sum = s->offset + s->r->length; - } - } - - s = s->pNext; - } - - R->length = sum; - R = R->pNext; - } - - sum = 0; - s = G->ss; - - while (s) { - if (s->c >= 0) { - if (s->offset + s->c > sum) { - sum = s->offset + s->c; - } - } - - if (s->c < 0) { - if (s->offset + s->r->length > sum) { - sum = s->offset + s->r->length; - } - } - - s = s->pNext; - } - - G->length = sum; -} \ No newline at end of file diff --git a/FFTS/Sources/FFTS/src/types.h b/FFTS/Sources/FFTS/src/types.h deleted file mode 100644 index f8997ce..0000000 --- a/FFTS/Sources/FFTS/src/types.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, Anthony M. Blake - Copyright (c) 2012, The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef FFTS_TYPES_H -#define FFTS_TYPES_H - -#if defined (_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Define complex number as two element array */ -typedef float ffts_cpx_32f[2]; -typedef double ffts_cpx_64f[2]; - -#endif /* FFTS_TYPES_H */ diff --git a/FFTS/Sources/FFTS/src/vfp.h b/FFTS/Sources/FFTS/src/vfp.h deleted file mode 100644 index 8286646..0000000 --- a/FFTS/Sources/FFTS/src/vfp.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, 2013 Anthony M. Blake - Copyright (c) 2012, 2013 The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#ifndef __VFP_H__ -#define __VFP_H__ - -#include "ffts.h" - -void vfp_e(); -void vfp_o(); -void vfp_x4(); -void vfp_x8(); -void vfp_end(); - -#endif -// vim: set autoindent noexpandtab tabstop=3 shiftwidth=3: diff --git a/FFTS/Sources/FFTS/src/vfp.s b/FFTS/Sources/FFTS/src/vfp.s deleted file mode 100644 index a60367d..0000000 --- a/FFTS/Sources/FFTS/src/vfp.s +++ /dev/null @@ -1,472 +0,0 @@ -/* - - This file is part of FFTS -- The Fastest Fourier Transform in the South - - Copyright (c) 2012, 2013 Anthony M. Blake - Copyright (c) 2012, 2013 The University of Waikato - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - .fpu vfp - -@ assumes r0 = out -@ r1 = in ? -@ -@ r12 = offsets -@ r3-r10 = data pointers -@ r11 = loop iterations -@ r2 = const pointer -@ & lr = temps - - .align 4 -#ifdef __APPLE__ - .globl _vfp_e -_vfp_e: -#else - .globl vfp_e -vfp_e: -#endif -_vfp_e_loop: - vldr s15, [r2, #8] - vldr s2, [r3] @ x0 - vldr s0, [r3, #4] - vldr s4, [r4] @ x1 - vldr s11, [r2] - vldr s10, [r7] @ x4 - vldr s3, [r7, #4] - vldr s8, [r8] @ x5 - vldr s1, [r8, #4] - vldr s14, [r9] @ x6 - vldr s9, [r9, #4] - vldr s6, [r10] @ x7 - vldr s12, [r10, #4] - vsub.f32 s18, s3, s1 - vsub.f32 s7, s10, s8 - vsub.f32 s5, s14, s6 - vadd.f32 s6, s14, s6 - vldr s24, [r5, #4] - vsub.f32 s14, s9, s12 - vldr s22, [r6, #4] - vadd.f32 s8, s10, s8 - vldr s28, [r6] @ x3 - vldr s17, [r5] @ x2 - vadd.f32 s10, s9, s12 - vmul.f32 s13, s18, s15 - vmul.f32 s9, s7, s11 - vmul.f32 s16, s5, s11 - vmul.f32 s18, s18, s11 - vmul.f32 s30, s14, s11 - vldr s11, [r4, #4] - add r3, r3, #8 - add r4, r4, #8 - add r5, r5, #8 - add r6, r6, #8 - add r7, r7, #8 - add r8, r8, #8 - add r9, r9, #8 - add r10, r10, #8 - vmul.f32 s12, s5, s15 - vmul.f32 s20, s14, s15 - vadd.f32 s5, s2, s4 - vadd.f32 s3, s3, s1 - vmul.f32 s15, s7, s15 - vadd.f32 s1, s24, s22 - vsub.f32 s7, s24, s22 - vadd.f32 s24, s17, s28 - vadd.f32 s26, s0, s11 - vsub.f32 s14, s9, s13 - vsub.f32 s2, s2, s4 - vadd.f32 s4, s16, s20 - vsub.f32 s22, s0, s11 - vsub.f32 s16, s17, s28 - vadd.f32 s9, s5, s24 - vadd.f32 s28, s18, s15 - vadd.f32 s13, s8, s6 - vsub.f32 s5, s5, s24 - vsub.f32 s24, s8, s6 - vadd.f32 s11, s26, s1 - vsub.f32 s12, s30, s12 - vadd.f32 s20, s3, s10 - vsub.f32 s15, s3, s10 - vsub.f32 s3, s26, s1 - vadd.f32 s18, s9, s13 - vadd.f32 s10, s14, s4 - vadd.f32 s6, s2, s7 @ - vsub.f32 s0, s2, s7 @ - vadd.f32 s26, s11, s20 - vsub.f32 s4, s14, s4 - vsub.f32 s8, s22, s16 @ - vadd.f32 s1, s28, s12 - ldr lr, [r12], #4 - add lr, r0, lr, lsl #2 - subs r11, r11, #1 - vstr s18, [lr] - vsub.f32 s2, s28, s12 - vadd.f32 s12, s22, s16 @ - vsub.f32 s16, s3, s24 @ - vsub.f32 s13, s9, s13 - vstr s26, [lr, #4] - vadd.f32 s28, s5, s15 @ - vsub.f32 s7, s5, s15 @ - vadd.f32 s14, s6, s10 - vadd.f32 s5, s8, s1 - vadd.f32 s9, s0, s2 @ - vsub.f32 s2, s0, s2 @ - vsub.f32 s11, s11, s20 - vstr s28, [lr, #16] - vadd.f32 s3, s3, s24 @ - vstr s16, [lr, #20] - vsub.f32 s6, s6, s10 - vstr s13, [lr, #32] - vsub.f32 s13, s12, s4 @ - vsub.f32 s8, s8, s1 - vadd.f32 s0, s12, s4 @ - vstr s11, [lr, #36] - vstr s7, [lr, #48] - vstr s3, [lr, #52] - vstr s14, [lr, #8] - vstr s5, [lr, #12] - vstr s9, [lr, #24] - vstr s13, [lr, #28] - vstr s6, [lr, #40] - vstr s8, [lr, #44] - vstr s2, [lr, #56] - vstr s0, [lr, #60] - bne _vfp_e_loop - -@ assumes r0 = out -@ r1 = in ? -@ -@ r12 = offsets -@ r3-r10 = data pointers -@ r11 = loop iterations -@ r2 & lr = temps - .align 4 -#ifdef __APPLE__ - .globl _vfp_o -_vfp_o: -#else - .globl vfp_o -vfp_o: -#endif - _vfp_o_loop: - vldr s4, [r3] @ x0 - vldr s0, [r3, #4] - vldr s6, [r4] @ x1 - vldr s5, [r4, #4] - vldr s7, [r5] @ x2 - vldr s1, [r5, #4] - vldr s3, [r6] @ x3 - vldr s8, [r6, #4] - subs r11, r11, #1 - ldr r2, [r12], #4 - add r2, r0, r2, lsl #2 - vadd.f32 s2, s4, s6 - vadd.f32 s14, s0, s5 - vadd.f32 s10, s1, s8 - vsub.f32 s4, s4, s6 - vsub.f32 s0, s0, s5 - vadd.f32 s12, s7, s3 - vsub.f32 s6, s7, s3 - vsub.f32 s8, s1, s8 - vadd.f32 s5, s14, s10 - vsub.f32 s10, s14, s10 - vadd.f32 s7, s2, s12 - vsub.f32 s1, s0, s6 @ - vsub.f32 s12, s2, s12 - vadd.f32 s3, s4, s8 @ - vsub.f32 s2, s4, s8 @ - vadd.f32 s0, s0, s6 @ - vstr s7, [r2] - vldr s7, [r9] @ x2 - vstr s5, [r2, #4] - vstr s3, [r2, #8] - vstr s1, [r2, #12] - vstr s12, [r2, #16] - vstr s10, [r2, #20] - vstr s2, [r2, #24] - vstr s0, [r2, #28] - vldr s4, [r7] @ x0 - vldr s0, [r7, #4] - vldr s6, [r8] @ x1 - vldr s5, [r8, #4] - vldr s3, [r10] @ x3 - vldr s8, [r10, #4] - vldr s1, [r9, #4] - add r3, r3, #8 - add r4, r4, #8 - add r5, r5, #8 - add r6, r6, #8 - add r7, r7, #8 - add r8, r8, #8 - add r9, r9, #8 - add r10, r10, #8 - vadd.f32 s2, s4, s6 - vadd.f32 s14, s0, s5 - vadd.f32 s10, s1, s8 - vsub.f32 s4, s4, s6 - vsub.f32 s0, s0, s5 - vadd.f32 s12, s7, s3 - vsub.f32 s6, s7, s3 - vsub.f32 s8, s1, s8 - vadd.f32 s5, s14, s10 - vsub.f32 s10, s14, s10 - vadd.f32 s7, s2, s12 - vsub.f32 s1, s0, s6 @ - vsub.f32 s12, s2, s12 - vadd.f32 s3, s4, s8 @ - vsub.f32 s2, s4, s8 @ - vadd.f32 s0, s0, s6 @ - vstr s7, [r2, #32] - vstr s5, [r2, #36] - vstr s3, [r2, #40] - vstr s1, [r2, #44] - vstr s12, [r2, #48] - vstr s10, [r2, #52] - vstr s2, [r2, #56] - vstr s0, [r2, #60] - bne _vfp_o_loop - - .align 4 -#ifdef __APPLE__ - .globl _vfp_x4 -_vfp_x4: -#else - .globl vfp_x4 -vfp_x4: -#endif - add r3, r0, #0 - add r7, r2, #0 - add r4, r0, r1, lsl #1 - add r5, r0, r1, lsl #2 - add r6, r4, r1, lsl #2 - mov r11, #4 -_vfp_x4_loop: - - vldr s8, [r3, #0] - vldr s9, [r3, #4] - vldr s10, [r4, #0] - vldr s11, [r4, #4] - vldr s12, [r5, #0] - vldr s13, [r5, #4] - vldr s14, [r6, #0] - vldr s15, [r6, #4] - vldr s2, [r7, #0] - vldr s3, [r7, #4] - add r7, r7, #8 - subs r11, r11, #1 - vmul.f32 s0, s13, s3 - vmul.f32 s5, s12, s2 - vmul.f32 s1, s14, s2 - vmul.f32 s4, s14, s3 - vmul.f32 s14, s12, s3 - vmul.f32 s13, s13, s2 - vmul.f32 s12, s15, s3 - vmul.f32 s2, s15, s2 - vsub.f32 s0, s5, s0 - vadd.f32 s13, s13, s14 - vadd.f32 s12, s12, s1 - vsub.f32 s1, s2, s4 - vadd.f32 s15, s0, s12 - vsub.f32 s12, s0, s12 - vadd.f32 s14, s13, s1 - vsub.f32 s13, s13, s1 - vadd.f32 s0, s8, s15 - vadd.f32 s1, s9, s14 - vadd.f32 s2, s10, s13 @ - vsub.f32 s4, s8, s15 - vsub.f32 s3, s11, s12 @ - vstr s0, [r3, #0] - vstr s1, [r3, #4] - add r3, r3, #8 - vsub.f32 s5, s9, s14 - vsub.f32 s6, s10, s13 @ - vadd.f32 s7, s11, s12 @ - vstr s2, [r4, #0] - vstr s3, [r4, #4] - add r4, r4, #8 - vstr s4, [r5, #0] - vstr s5, [r5, #4] - add r5, r5, #8 - vstr s6, [r6, #0] - vstr s7, [r6, #4] - add r6, r6, #8 - bne _vfp_x4_loop - bx lr - - .align 4 -#ifdef __APPLE__ - .globl _vfp_x8 -_vfp_x8: -#else - .globl vfp_x8 -vfp_x8: -#endif - mov r11, #0 - add r3, r0, #0 @ data0 - add r5, r0, r1, lsl #1 @ data2 - add r4, r0, r1 @ data1 - add r7, r5, r1, lsl #1 @ data4 - add r6, r5, r1 @ data3 - add r9, r7, r1, lsl #1 @ data6 - add r8, r7, r1 @ data5 - add r10, r9, r1 @ data7 - add r12, r2, #0 @ LUT - - sub r11, r11, r1, lsr #3 -_vfp_x8_loop: - vldr s10, [r3, #0] @ x0-re - vldr s8, [r3, #4] @ x0-im - vldr s2, [r4, #0] @ x1-re - vldr s0, [r4, #4] @ x1-im - vldr s6, [r5, #0] @ x2-re - vldr s4, [r5, #4] @ x2-im - vldr s13, [r6, #0] @ x3-re - vldr s15, [r6, #4] @ x3-im - vldr s7, [r12] - vldr s11, [r12, #4] - vldr s5, [r7, #0] @ x4-re - vldr s1, [r7, #4] @ x4-im - vldr s28, [r9, #0] @ x6-re - vldr s18, [r9, #4] @ x6-im - adds r11, r11, #1 - vmul.f32 s14, s15, s7 - vldr s24, [r12, #12] - vmul.f32 s12, s13, s11 - vmul.f32 s26, s13, s7 - vldr s13, [r12, #8] - vmul.f32 s3, s4, s11 - vmul.f32 s15, s15, s11 - vmul.f32 s16, s4, s7 - vmul.f32 s9, s6, s7 - vmul.f32 s11, s6, s11 - vmul.f32 s7, s18, s24 - vmul.f32 s20, s1, s24 - vmul.f32 s30, s5, s13 - vadd.f32 s4, s26, s15 - vsub.f32 s12, s14, s12 - vsub.f32 s6, s9, s3 - vadd.f32 s14, s16, s11 - vmul.f32 s22, s28, s13 - vmul.f32 s26, s28, s24 - vmul.f32 s18, s18, s13 - vmul.f32 s5, s5, s24 - vmul.f32 s1, s1, s13 - vsub.f32 s9, s30, s20 - vadd.f32 s16, s14, s12 - vadd.f32 s3, s22, s7 - vadd.f32 s15, s6, s4 - vsub.f32 s11, s18, s26 - vadd.f32 s18, s1, s5 - vadd.f32 s13, s8, s16 - vadd.f32 s1, s9, s3 - vadd.f32 s7, s10, s15 - vsub.f32 s15, s10, s15 - vsub.f32 s10, s9, s3 - vadd.f32 s5, s18, s11 - vsub.f32 s11, s18, s11 - vsub.f32 s8, s8, s16 - vadd.f32 s20, s7, s1 - vsub.f32 s7, s7, s1 - vadd.f32 s18, s13, s5 - vadd.f32 s16, s15, s11 @ - vsub.f32 s9, s8, s10 @ - vsub.f32 s3, s13, s5 - vsub.f32 s1, s15, s11 @ - vstr s20, [r3] - vadd.f32 s8, s8, s10 @ - vstr s18, [r3, #4] - add r3, r3, #8 - vstr s16, [r5] - vstr s9, [r5, #4] - add r5, r5, #8 - vstr s7, [r7] - vstr s3, [r7, #4] - add r7, r7, #8 - vstr s1, [r9] - vstr s8, [r9, #4] - add r9, r9, #8 - vldr s10, [r8, #0] @ x5-re - vldr s8, [r8, #4] @ x5-im - vldr s5, [r10, #0] @ x7-re - vldr s11, [r10, #4] @ x7-im - vldr s1, [r12, #16] - vldr s15, [r12, #20] - add r12, r12, #24 - vmul.f32 s9, s5, s1 - vmul.f32 s3, s11, s15 - vmul.f32 s13, s10, s1 - vmul.f32 s7, s8, s15 - vmul.f32 s5, s5, s15 - vmul.f32 s11, s11, s1 - vmul.f32 s10, s10, s15 - vmul.f32 s15, s8, s1 - vsub.f32 s1, s14, s12 - vadd.f32 s8, s9, s3 - vsub.f32 s3, s6, s4 - vsub.f32 s12, s13, s7 - vsub.f32 s5, s11, s5 - vadd.f32 s7, s15, s10 - vadd.f32 s4, s2, s1 @ - vsub.f32 s2, s2, s1 @ - vsub.f32 s6, s0, s3 @ - vadd.f32 s10, s12, s8 - vsub.f32 s9, s12, s8 - vadd.f32 s0, s0, s3 @ - vsub.f32 s1, s7, s5 - vadd.f32 s14, s7, s5 - vadd.f32 s7, s4, s10 - vsub.f32 s8, s4, s10 - vsub.f32 s12, s0, s9 @ - vadd.f32 s3, s2, s1 @ - vadd.f32 s5, s6, s14 - vsub.f32 s4, s6, s14 - vsub.f32 s2, s2, s1 @ - vadd.f32 s0, s0, s9 @ - vstr s7, [r4] - vstr s5, [r4, #4] - add r4, r4, #8 - vstr s3, [r6] - vstr s12, [r6, #4] - add r6, r6, #8 - vstr s8, [r8] - vstr s4, [r8, #4] - add r8, r8, #8 - vstr s2, [r10] - vstr s0, [r10, #4] - add r10, r10, #8 - bne _vfp_x8_loop - bx lr - - .align 4 -#ifdef __APPLE__ - .globl _vfp_end -_vfp_end: -#else - .globl vfp_end -vfp_end: -#endif - bx lr diff --git a/FFTS/Sources/FFTS/tests/Makefile.am b/FFTS/Sources/FFTS/tests/Makefile.am deleted file mode 100644 index 208685c..0000000 --- a/FFTS/Sources/FFTS/tests/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ - -noinst_PROGRAMS = test -test_SOURCES = test.c -test_LDADD = $(top_builddir)/src/libffts.la diff --git a/FFTS/Sources/FFTS/tests/Makefile.in b/FFTS/Sources/FFTS/tests/Makefile.in deleted file mode 100644 index 280fae1..0000000 --- a/FFTS/Sources/FFTS/tests/Makefile.in +++ /dev/null @@ -1,591 +0,0 @@ -# Makefile.in generated by automake 1.14 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = test$(EXEEXT) -subdir = tests -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/depcomp -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_classpath.m4 \ - $(top_srcdir)/m4/ax_check_java_home.m4 \ - $(top_srcdir)/m4/ax_java_options.m4 \ - $(top_srcdir)/m4/ax_jni_include_dir.m4 \ - $(top_srcdir)/m4/ax_prog_jar.m4 \ - $(top_srcdir)/m4/ax_prog_javac.m4 \ - $(top_srcdir)/m4/ax_prog_javac_works.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_test_OBJECTS = test.$(OBJEXT) -test_OBJECTS = $(am_test_OBJECTS) -test_DEPENDENCIES = $(top_builddir)/src/libffts.la -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(test_SOURCES) -DIST_SOURCES = $(test_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -JAR = @JAR@ -JAVA = @JAVA@ -JAVAC = @JAVAC@ -JAVACFLAGS = @JAVACFLAGS@ -JAVAFLAGS = @JAVAFLAGS@ -JAVAPREFIX = @JAVAPREFIX@ -JAVA_PATH_NAME = @JAVA_PATH_NAME@ -JNI_CPPFLAGS = @JNI_CPPFLAGS@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -_ACJNI_JAVAC = @_ACJNI_JAVAC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -test_SOURCES = test.c -test_LDADD = $(top_builddir)/src/libffts.la -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) - @rm -f test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/FFTS/Sources/FFTS/tests/cpu_test.c b/FFTS/Sources/FFTS/tests/cpu_test.c deleted file mode 100644 index fbaf061..0000000 --- a/FFTS/Sources/FFTS/tests/cpu_test.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "../src/ffts_cpu.h" - -#include - -int main() -{ - int cpu_flags, extra_flags; - - cpu_flags = ffts_cpu_detect(&extra_flags); - if (!cpu_flags) - return 1; - - printf("SSE : %s\n", (cpu_flags & FFTS_CPU_X86_SSE) ? "yes" : "no"); - printf("SSE2 : %s\n", (cpu_flags & FFTS_CPU_X86_SSE2) ? "yes" : "no"); - printf("SSE3 : %s\n", (cpu_flags & FFTS_CPU_X86_SSE3) ? "yes" : "no"); - printf("SSSE3 : %s\n", (cpu_flags & FFTS_CPU_X86_SSSE3) ? "yes" : "no"); - printf("SSE4.1 : %s\n", (cpu_flags & FFTS_CPU_X86_SSE4_1) ? "yes" : "no"); - printf("SSE4.2 : %s\n", (cpu_flags & FFTS_CPU_X86_SSE4_2) ? "yes" : "no"); - printf("AVX : %s\n", (cpu_flags & FFTS_CPU_X86_AVX) ? "yes" : "no"); - printf("AVX2 : %s\n", (cpu_flags & FFTS_CPU_X86_AVX2) ? "yes" : "no"); - printf("AVX512 : %s\n", (cpu_flags & FFTS_CPU_X86_AVX512) ? "yes" : "no"); - return 0; -} diff --git a/FFTS/Sources/FFTS/tests/test.c b/FFTS/Sources/FFTS/tests/test.c deleted file mode 100644 index d07f766..0000000 --- a/FFTS/Sources/FFTS/tests/test.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - - This file is part of FFTS. - - Copyright (c) 2012, Anthony M. Blake - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the organization nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "../include/ffts.h" -#include "../src/ffts_attributes.h" - -#ifdef __ARM_NEON__ -#endif - -#ifdef HAVE_SSE -#include -#endif - -#include -#include -#include - -#ifndef M_PI -#define M_PI 3.1415926535897932384626433832795028841971693993751058209 -#endif - -static float impulse_error(int N, int sign, float *data) -{ -#ifdef __ANDROID__ - double delta_sum = 0.0f; - double sum = 0.0f; -#else - long double delta_sum = 0.0f; - long double sum = 0.0f; -#endif - int i; - - for (i = 0; i < N; i++) { -#ifdef __ANDROID__ - double re, im; - - if (sign < 0) { - re = cos(2 * M_PI * (double) i / (double) N); - im = -sin(2 * M_PI * (double) i / (double) N); - } else { - re = cos(2 * M_PI * (double) i / (double) N); - im = sin(2 * M_PI * (double) i / (double) N); - } -#else - long double re, im; - - if (sign < 0) { - re = cosl(2 * M_PI * (long double) i / (long double) N); - im = -sinl(2 * M_PI * (long double) i / (long double) N); - } else { - re = cosl(2 * M_PI * (long double) i / (long double) N); - im = sinl(2 * M_PI * (long double) i / (long double) N); - } -#endif - - sum += re * re + im * im; - - re = re - data[2*i]; - im = im - data[2*i+1]; - - delta_sum += re * re + im * im; - } - -#ifdef __ANDROID__ - return (float) (sqrt(delta_sum) / sqrt(sum)); -#else - return (float) (sqrtl(delta_sum) / sqrtl(sum)); -#endif -} - -int test_transform(int n, int sign) -{ - ffts_plan_t *p; - -#ifdef HAVE_SSE - float FFTS_ALIGN(32) *input = _mm_malloc(2 * n * sizeof(float), 32); - float FFTS_ALIGN(32) *output = _mm_malloc(2 * n * sizeof(float), 32); -#else - float FFTS_ALIGN(32) *input = valloc(2 * n * sizeof(float)); - float FFTS_ALIGN(32) *output = valloc(2 * n * sizeof(float)); -#endif - int i; - - for (i = 0; i < n; i++) { - input[2*i + 0] = 0.0f; - input[2*i + 1] = 0.0f; - } - - input[2] = 1.0f; - - p = ffts_init_1d(i, sign); - if (!p) { - printf("Plan unsupported\n"); - return 0; - } - - ffts_execute(p, input, output); - printf(" %3d | %9d | %10E\n", sign, n, impulse_error(n, sign, output)); - ffts_free(p); - return 1; -} - -int main(int argc, char *argv[]) -{ - if (argc == 3) { - ffts_plan_t *p; - int i; - - /* test specific transform with test pattern and display output */ - int n = atoi(argv[1]); - int sign = atoi(argv[2]); - -#ifdef HAVE_SSE - float FFTS_ALIGN(32) *input = _mm_malloc(2 * n * sizeof(float), 32); - float FFTS_ALIGN(32) *output = _mm_malloc(2 * n * sizeof(float), 32); -#else - float FFTS_ALIGN(32) *input = valloc(2 * n * sizeof(float)); - float FFTS_ALIGN(32) *output = valloc(2 * n * sizeof(float)); -#endif - - for (i = 0; i < n; i++) { - input[2*i + 0] = (float) i; - input[2*i + 1] = 0.0f; - } - - /* input[2] = 1.0f; */ - - p = ffts_init_1d(i, sign); - if (!p) { - printf("Plan unsupported\n"); - return 0; - } - - ffts_execute(p, input, output); - - for (i = 0; i < n; i++) - printf("%d %d %f %f\n", i, sign, output[2*i], output[2*i+1]); - ffts_free(p); - -#ifdef HAVE_SSE - _mm_free(input); - _mm_free(output); -#else - free(input); - free(output); -#endif - } else { - int n, power2; - - /* test various sizes and display error */ - printf(" Sign | Size | L2 Error\n"); - printf("------+-----------+-------------\n"); - - for (n = 1, power2 = 2; n <= 18; n++, power2 <<= 1) { - test_transform(power2, -1); - } - - for (n = 1, power2 = 2; n <= 18; n++, power2 <<= 1) { - test_transform(power2, 1); - } - } - - return 0; -} diff --git a/FFTS/Sources/FFTS/tests/trig_test.c b/FFTS/Sources/FFTS/tests/trig_test.c deleted file mode 100644 index 258e5a6..0000000 --- a/FFTS/Sources/FFTS/tests/trig_test.c +++ /dev/null @@ -1,431 +0,0 @@ -/* - -This file is part of FFTS -- The Fastest Fourier Transform in the South - -Copyright (c) 2018, Jukka Ojanen - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -* Neither the name of the organization nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "../src/ffts_internal.h" -#include "../src/ffts_trig.h" - -#ifdef HAVE_MPFR_H -#include -#endif - -#ifdef _OPENMP -#include -#endif - -#include - -/* 32 bit FNV-1a initial hash */ -#define FNV1A_32_INIT ((uint32_t) 0x811c9dc5) - -/* 32 bit magic FNV-1a prime */ -#define FNV_32_PRIME ((uint32_t) 0x01000193) - -#define MAX_LEN 29 - -/* perform a 32 bit Fowler/Noll/Vo FNV-1a hash on a buffer */ -static uint32_t -fnv_32a_buf(const void *buffer, size_t buffer_len, uint32_t hash_value) -{ - const unsigned char *bp = (const unsigned char*) buffer; - const unsigned char *be = bp + buffer_len; - - while (bp < be) { - hash_value ^= (uint32_t) *bp++; - hash_value *= FNV_32_PRIME; - } - - return hash_value; -} - -#ifdef HAVE_MPFR_H -union float_bits { - int32_t i; - float f; -}; - -union double_bits { - int64_t i; - double d; -}; - -static uint64_t distance_between_doubles(double lhs, double rhs) -{ - union double_bits l, r; - l.d = lhs; - r.d = rhs; - return (l.i >= r.i) ? (l.i - r.i) : (r.i - l.i); -} - -static uint32_t distance_between_floats(float lhs, float rhs) -{ - union float_bits l, r; - l.f = lhs; - r.f = rhs; - return (l.i >= r.i) ? (l.i - r.i) : (r.i - l.i); -} - -static int test_float(int i) -{ - mpfr_t pi, *cop, *rop, *sop; - int j, len, threads; - ffts_cpx_32f *table = NULL; - volatile int mismatch; - uint32_t hash; - -#ifdef _OPENMP - threads = omp_get_max_threads(); -#else - threads = 1; -#endif - fprintf(stdout, "Using %d threads\r\n", threads); - - cop = (mpfr_t*) malloc(threads * sizeof(*rop)); - rop = (mpfr_t*) malloc(threads * sizeof(*rop)); - sop = (mpfr_t*) malloc(threads * sizeof(*rop)); - if (!cop || !rop || !sop) { - fprintf(stderr, "out of memory\n"); - return 1; - } - - mpfr_set_default_prec(256); - mpfr_init(pi); - mpfr_const_pi(pi, MPFR_RNDN); - for (j = 0; j < threads; j++) { - mpfr_init(cop[j]); - mpfr_init(rop[j]); - mpfr_init(sop[j]); - } - - fprintf(stdout, "Verify single precision trig table using MPFR:\r\n"); - - mismatch = 0; - for (len = (1 << i); len > 0; i--, len >>= 1) { - fprintf(stdout, "%9d: ", len); - fflush(stdout); - - if (!table) { - size_t buffer_len = len * sizeof(*table); - if (buffer_len < (size_t) len) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - table = (ffts_cpx_32f*) ffts_aligned_malloc(buffer_len); - if (!table) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - } - - ffts_generate_cosine_sine_pow2_32f(table, len); - hash = fnv_32a_buf(table, len * sizeof(*table), FNV1A_32_INIT); - -#ifdef _OPENMP -#pragma omp parallel for shared(mismatch) -#endif - for (j = 1; j <= len/2; j++) { - float c, s; -#ifdef _OPENMP - int tid = omp_get_thread_num(); -#else - int tid = 0; -#endif - if (mismatch) - continue; - mpfr_mul_si(rop[tid], pi, -j, MPFR_RNDN); - mpfr_div_ui(rop[tid], rop[tid], 2 * len, MPFR_RNDN); - mpfr_sin_cos(sop[tid], cop[tid], rop[tid], MPFR_RNDN); - c = mpfr_get_flt(cop[tid], MPFR_RNDN); - s = mpfr_get_flt(sop[tid], MPFR_RNDN); - if (distance_between_floats(c, table[j][0]) || distance_between_floats(s, table[j][1])) { - mismatch = 1; - } - } - - fprintf(stdout, "%s (checksum: %u)\r\n", mismatch ? "incorrect" : "ok", hash); - if (mismatch) - break; - } - - free(cop); - free(rop); - free(sop); - return mismatch; -} - -static int test_double(int i) -{ - mpfr_t pi, *cop, *rop, *sop; - int j, len, threads; - ffts_cpx_64f *table = NULL; - volatile int mismatch; - uint32_t hash; - -#ifdef _OPENMP - threads = omp_get_max_threads(); -#else - threads = 1; -#endif - fprintf(stdout, "Using %d threads\r\n", threads); - - cop = (mpfr_t*) malloc(threads * sizeof(*rop)); - rop = (mpfr_t*) malloc(threads * sizeof(*rop)); - sop = (mpfr_t*) malloc(threads * sizeof(*rop)); - if (!cop || !rop || !sop) { - fprintf(stderr, "out of memory\n"); - return 1; - } - - mpfr_set_default_prec(256); - mpfr_init(pi); - mpfr_const_pi(pi, MPFR_RNDN); - for (j = 0; j < threads; j++) { - mpfr_init(cop[j]); - mpfr_init(rop[j]); - mpfr_init(sop[j]); - } - - fprintf(stdout, "Verify double precision trig table using MPFR:\r\n"); - - mismatch = 0; - for (len = (1 << i); len > 0; i--, len >>= 1) { - fprintf(stdout, "%9d: ", len); - fflush(stdout); - - if (!table) { - size_t buffer_len = len * sizeof(*table); - if (buffer_len < (size_t) len) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - table = (ffts_cpx_64f*) ffts_aligned_malloc(buffer_len); - if (!table) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - } - - ffts_generate_cosine_sine_pow2_64f(table, len); - hash = fnv_32a_buf(table, len * sizeof(*table), FNV1A_32_INIT); - -#ifdef _OPENMP -#pragma omp parallel for shared(mismatch) -#endif - for (j = 1; j <= len/2; j++) { - double c, s; -#ifdef _OPENMP - int tid = omp_get_thread_num(); -#else - int tid = 0; -#endif - if (mismatch) - continue; - mpfr_mul_si(rop[tid], pi, -j, MPFR_RNDN); - mpfr_div_ui(rop[tid], rop[tid], 2 * len, MPFR_RNDN); - mpfr_sin_cos(sop[tid], cop[tid], rop[tid], MPFR_RNDN); - c = mpfr_get_d(cop[tid], MPFR_RNDN); - s = mpfr_get_d(sop[tid], MPFR_RNDN); - if (distance_between_doubles(c, table[j][0]) || distance_between_doubles(s, table[j][1])) { - mismatch = 1; - } - } - - fprintf(stdout, "%s (checksum: %u)\r\n", mismatch ? "incorrect" : "ok", hash); - if (mismatch) - break; - } - - free(cop); - free(rop); - free(sop); - return mismatch; -} -#else -/* generated using MPFR */ -static const uint32_t cosine_sine_pow2_32f_checksum[MAX_LEN+1] = { - 4163796632, /* 1 */ - 752475004, /* 2 */ - 3588569144, /* 4 */ - 637367864, /* 8 */ - 2237388720, /* 16 */ - 1881651208, /* 32 */ - 356152060, /* 64 */ - 3819835580, /* 128 */ - 1180132788, /* 256 */ - 1716628348, /* 512 */ - 2422051204, /* 1024 */ - 3873830812, /* 2048 */ - 1376829016, /* 4096 */ - 2571876996, /* 8192 */ - 759289276, /* 16384 */ - 3423626720, /* 32768 */ - 3366809140, /* 65536 */ - 674354300, /* 131072 */ - 3992680156, /* 262144 */ - 1545599748, /* 524288 */ - 586444388, /* 1048576 */ - 2907181276, /* 2097152 */ - 3274911900, /* 4194304 */ - 1532398892, /* 8388608 */ - 2501994432, /* 16777216 */ - 1992951192, /* 33554432 */ - 2929058012, /* 67108864 */ - 2962003792, /* 134217728 */ - 934675412, /* 268435456 */ - 673507348 /* 536870912 */ -}; - -static const uint32_t cosine_sine_pow2_64f_checksum[MAX_LEN+1] = { - 2244568568, /* 1 */ - 2674442040, /* 2 */ - 637646452, /* 4 */ - 365964188, /* 8 */ - 492049596, /* 16 */ - 1537563784, /* 32 */ - 2795637248, /* 64 */ - 1166550632, /* 128 */ - 2310849600, /* 256 */ - 2701603684, /* 512 */ - 766126000, /* 1024 */ - 3596199488, /* 2048 */ - 3189251260, /* 4096 */ - 2366118336, /* 8192 */ - 3948192124, /* 16384 */ - 789942316, /* 32768 */ - 4160790692, /* 65536 */ - 1400150244, /* 131072 */ - 3473642232, /* 262144 */ - 3445250900, /* 524288 */ - 401920132, /* 1048576 */ - 800848444, /* 2097152 */ - 1239474840, /* 4194304 */ - 3699857428, /* 8388608 */ - 2185444492, /* 16777216 */ - 2780078060, /* 33554432 */ - 1398729992, /* 67108864 */ - 372663520, /* 134217728 */ - 254558992, /* 268435456 */ - 2451140808 /* 536870912 */ -}; - -static int test_float(int i) -{ - ffts_cpx_32f *table = NULL; - int len, mismatch = 0; - uint32_t hash; - - fprintf(stdout, "Verify single precision trig table using FNV-1a checksum:\r\n"); - - for (len = (1 << i); len > 0; i--, len >>= 1) { - fprintf(stdout, "%9d: ", len); - fflush(stdout); - - if (!table) { - size_t buffer_len = len * sizeof(*table); - if (buffer_len < (size_t) len) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - table = (ffts_cpx_32f*) ffts_aligned_malloc(buffer_len); - if (!table) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - } - - ffts_generate_cosine_sine_pow2_32f(table, len); - hash = fnv_32a_buf(table, len * sizeof(*table), FNV1A_32_INIT); - mismatch = (hash != cosine_sine_pow2_32f_checksum[i]); - fprintf(stdout, "%s\r\n", mismatch ? "incorrect" : "ok"); - if (mismatch) - break; - - } - - ffts_aligned_free(table); - return mismatch; -} - -static int test_double(int i) -{ - ffts_cpx_64f *table = NULL; - int len, mismatch = 0; - uint32_t hash; - - fprintf(stdout, "Verify double precision trig table using FNV-1a checksum:\r\n"); - - for (len = (1 << i); len > 0; i--, len >>= 1) { - fprintf(stdout, "%9d: ", len); - fflush(stdout); - - if (!table) { - size_t buffer_len = len * sizeof(*table); - if (buffer_len < (size_t) len) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - table = (ffts_cpx_64f*) ffts_aligned_malloc(buffer_len); - if (!table) { - fprintf(stdout, "out of memory\r\n"); - continue; - } - } - - ffts_generate_cosine_sine_pow2_64f(table, len); - hash = fnv_32a_buf(table, len * sizeof(*table), FNV1A_32_INIT); - mismatch = (hash != cosine_sine_pow2_64f_checksum[i]); - fprintf(stdout, "%s\r\n", mismatch ? "incorrect" : "ok"); - if (mismatch) - break; - - } - - ffts_aligned_free(table); - return mismatch; -} -#endif - -int main(int argc, char *argv[]) -{ - int i; - - if (argc == 2) { - i = atoi(argv[1]); - if (i > MAX_LEN) - i = MAX_LEN; - } else { - i = MAX_LEN; - } - - test_float(i); - test_double(i); - return 0; -} diff --git a/FFTS/Tests/FFTSTests/FFTSTests.swift b/FFTS/Tests/FFTSTests/FFTSTests.swift deleted file mode 100644 index 20511cb..0000000 --- a/FFTS/Tests/FFTSTests/FFTSTests.swift +++ /dev/null @@ -1,6 +0,0 @@ -import Testing -@testable import FFTS - -@Test func example() async throws { - // Write your test here and use APIs like `#expect(...)` to check expected conditions. -} diff --git a/Package.swift b/Package.swift index d29af54..a24ecaa 100644 --- a/Package.swift +++ b/Package.swift @@ -14,7 +14,7 @@ let package = Package( dependencies: [ .package(url: "https://github.com/apple/swift-algorithms", from: "1.2.0"), // .package(url: "https://github.com/AudioKit/KissFFT.git", from: "1.0.0") - .package(path: "./KissFFT/") + .package(path: "./Packages/KissFFT/") ], targets: [ // Targets are the basic building blocks of a package, defining a module or a test suite. diff --git a/KissFFT/.gitignore b/Packages/KissFFT/.gitignore similarity index 100% rename from KissFFT/.gitignore rename to Packages/KissFFT/.gitignore diff --git a/KissFFT/COPYING b/Packages/KissFFT/COPYING similarity index 100% rename from KissFFT/COPYING rename to Packages/KissFFT/COPYING diff --git a/KissFFT/Package.swift b/Packages/KissFFT/Package.swift similarity index 100% rename from KissFFT/Package.swift rename to Packages/KissFFT/Package.swift diff --git a/KissFFT/README.md b/Packages/KissFFT/README.md similarity index 100% rename from KissFFT/README.md rename to Packages/KissFFT/README.md diff --git a/KissFFT/Sources/KissFFT/include/_kiss_fft_guts.h b/Packages/KissFFT/Sources/KissFFT/include/_kiss_fft_guts.h similarity index 100% rename from KissFFT/Sources/KissFFT/include/_kiss_fft_guts.h rename to Packages/KissFFT/Sources/KissFFT/include/_kiss_fft_guts.h diff --git a/KissFFT/Sources/KissFFT/include/kiss_fft.h b/Packages/KissFFT/Sources/KissFFT/include/kiss_fft.h similarity index 100% rename from KissFFT/Sources/KissFFT/include/kiss_fft.h rename to Packages/KissFFT/Sources/KissFFT/include/kiss_fft.h diff --git a/KissFFT/Sources/KissFFT/include/kiss_fftr.h b/Packages/KissFFT/Sources/KissFFT/include/kiss_fftr.h similarity index 100% rename from KissFFT/Sources/KissFFT/include/kiss_fftr.h rename to Packages/KissFFT/Sources/KissFFT/include/kiss_fftr.h diff --git a/KissFFT/Sources/KissFFT/kiss_fft.c b/Packages/KissFFT/Sources/KissFFT/kiss_fft.c similarity index 100% rename from KissFFT/Sources/KissFFT/kiss_fft.c rename to Packages/KissFFT/Sources/KissFFT/kiss_fft.c diff --git a/KissFFT/Sources/KissFFT/kiss_fftr.c b/Packages/KissFFT/Sources/KissFFT/kiss_fftr.c similarity index 100% rename from KissFFT/Sources/KissFFT/kiss_fftr.c rename to Packages/KissFFT/Sources/KissFFT/kiss_fftr.c