This commit is contained in:
张壹 2021-04-17 08:27:34 +08:00
commit d001110e30
26 changed files with 78 additions and 131 deletions

1
.gitignore vendored
View File

@ -35,6 +35,7 @@ language.settings.xml
#wavelib-specific
denoised.txt
test/
build/
.DS_Store
test/

View File

@ -1,58 +1,25 @@
cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR)
cmake_minimum_required(VERSION 3.15.2)
set(PROJECT_NAME wavelib)
project(${PROJECT_NAME} C)
#
project(WAVELIB)
include(GNUInstallDirs)
# src root path
set(WAVELIB_SRC_ROOT ${PROJECT_SOURCE_DIR} CACHE PATH "Wavelib source root")
# binary output by default
set(COMMON_BIN_PATH ${CMAKE_BINARY_DIR}/Bin)
set(LIBRARY_OUTPUT_PATH ${COMMON_BIN_PATH}/${CMAKE_BUILD_TYPE})
set(EXECUTABLE_OUTPUT_PATH ${COMMON_BIN_PATH}/${CMAKE_BUILD_TYPE})
# set where to find additional cmake modules if any
set(CMAKE_MODULE_PATH ${WAVELIB_SRC_ROOT}/cmake ${CMAKE_MODULE_PATH})
set(WAVELIB_VERSION "1.0.0" CACHE STRING "Wavelib version" FORCE)
message(">>> Building Wavelib version: ${WAVELIB_VERSION}")
message(">>> EXECUTABLE_OUTPUT_PATH = ${EXECUTABLE_OUTPUT_PATH}")
option(BUILD_UT "Enable Unit test" ON)
# cleanup prefix lib for Unix-like OSes
set(CMAKE_SHARED_MODULE_PREFIX)
# homebrew
set(CMAKE_INSTALL_PREFIX /usr/local)
# install target to this folder by default
#set(WAVELIB_BINARY_DIR ${WAVELIB_SRC_ROOT}/bin)
#if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
# set(CMAKE_INSTALL_PREFIX "${WAVELIB_BINARY_DIR}" CACHE PATH "default install path" FORCE)
#endif()
# make include globaly visible
set(PROJECT_WIDE_INCLUDE ${WAVELIB_SRC_ROOT}/header)
include_directories(${PROJECT_WIDE_INCLUDE})
include_directories(${COMMON_BIN_PATH})
if(BUILD_UT)
include(CTest)
enable_testing()
enable_language(CXX)
add_subdirectory(unitTests)
if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux")
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_INSTALL_PREFIX "/usr/local")
elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin")
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_INSTALL_PREFIX "/usr/local")
elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
set(CMAKE_INSTALL_PREFIX "D:/Library")
else()
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
set(CMAKE_INSTALL_PREFIX "/usr/local")
endif()
message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX})
#
add_subdirectory(src)
add_subdirectory(auxiliary)
add_subdirectory(test)
install(DIRECTORY ${WAVELIB_SRC_ROOT}/header/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")
add_subdirectory(auxiliary)

View File

@ -1,20 +1,35 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
#
aux_source_directory(. WAUX_SRC)
set(SOURCE_FILES denoise.c
waux.c
)
#
#
# libcmake
add_library(wauxlib SHARED ${WAUX_SRC})
#
add_library(wauxlib_static STATIC ${WAUX_SRC})
#
set_target_properties(wauxlib_static PROPERTIES OUTPUT_NAME "wauxlib")
#
set_target_properties(wauxlib PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(wauxlib_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
#
set_target_properties(wauxlib PROPERTIES VERSION 1.0 SOVERSION 1.0)
set(HEADER_FILES waux.h)
target_link_libraries(wauxlib PUBLIC wavelib)
target_link_libraries(wauxlib_static PUBLIC wavelib_static)
add_library(wauxlib STATIC ${SOURCE_FILES} ${HEADER_FILES})
#
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
target_link_libraries(wauxlib wavelib)
#
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set_property(TARGET wauxlib PROPERTY FOLDER "lib")
target_include_directories(wauxlib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
install(TARGETS wauxlib
EXPORT wavelib-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
#
if(WIN32)
install(TARGETS wauxlib DESTINATION lib)
install(TARGETS wauxlib_static DESTINATION lib)
else()
install(TARGETS wauxlib wauxlib_static
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
endif()

View File

@ -1,70 +1,34 @@
#
aux_source_directory(. WAVE_SRC)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(SOURCE_FILES conv.c
cwt.c
cwtmath.c
hsfft.c
real.c
wavefilt.c
wavefunc.c
wavelib.c
wtmath.c
)
set(HEADER_FILES conv.h
cwt.h
cwtmath.h
hsfft.h
real.h
wavefilt.h
wavefunc.h
wtmath.h
)
add_library(wavelib STATIC ${SOURCE_FILES} ${HEADER_FILES})
#add_library(wavelib SHARED ${SOURCE_FILES} ${HEADER_FILES})
#
#
# libcmake
add_library(wavelib SHARED ${WAVE_SRC})
#
#add_library(wavelib_static STATIC ${SOURCE_FILES} ${HEADER_FILES})
add_library(wavelib_static STATIC ${WAVE_SRC})
#
#set_target_properties(wavelib_static PROPERTIES OUTPUT_NAME "wavelib")
set_target_properties(wavelib_static PROPERTIES OUTPUT_NAME "wavelib")
#
#set_target_properties(wavelib PROPERTIES CLEAN_DIRECT_OUTPUT 1)
#set_target_properties(wavelib_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(wavelib PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(wavelib_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
#
set_target_properties(wavelib PROPERTIES VERSION 1.0 SOVERSION 1.0)
#
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
include(CheckSymbolExists)
#
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
# https://stackoverflow.com/questions/32816646/can-cmake-detect-if-i-need-to-link-to-libm-when-using-pow-in-c
if(NOT POW_FUNCTION_EXISTS AND NOT NEED_LINKING_AGAINST_LIBM)
check_symbol_exists(pow "math.h" POW_FUNCTION_EXISTS)
if(NOT POW_FUNCTION_EXISTS)
unset(POW_FUNCTION_EXISTS CACHE)
list(APPEND CMAKE_REQUIRED_LIBRARIES m)
check_symbol_exists(pow "math.h" POW_FUNCTION_EXISTS)
if(POW_FUNCTION_EXISTS)
set(NEED_LINKING_AGAINST_LIBM True CACHE BOOL "" FORCE)
else()
message(FATAL_ERROR "Failed making the pow() function available")
endif()
endif()
#
if(WIN32)
install(TARGETS wavelib DESTINATION lib)
install(TARGETS wavelib_static DESTINATION lib)
else()
install(TARGETS wavelib wavelib_static
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
endif()
if(NEED_LINKING_AGAINST_LIBM)
target_link_libraries(wavelib PUBLIC m)
endif()
set_property(TARGET wavelib PROPERTY FOLDER "lib")
target_include_directories(wavelib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}../header)
install(TARGETS wavelib
EXPORT wavelib-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT wavelib-targets
FILE wavelib-config.cmake
NAMESPACE wavelib::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wavelib)
#
install(FILES ../header/wavelib.h DESTINATION include)
install(FILES ../header/wauxlib.h DESTINATION include)

0
src/cwt.c Executable file → Normal file
View File

0
src/cwt.h Executable file → Normal file
View File

0
src/cwtmath.c Executable file → Normal file
View File

0
src/cwtmath.h Executable file → Normal file
View File

0
src/wavefunc.c Executable file → Normal file
View File

0
src/wavefunc.h Executable file → Normal file
View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

0
test/dwt2test.c Executable file → Normal file
View File

Binary file not shown.

Binary file not shown.

0
test/modwt2test.c Executable file → Normal file
View File

Binary file not shown.

0
test/modwtdenoisetest.c Executable file → Normal file
View File

Binary file not shown.

0
test/sst_nino3.dat Executable file → Normal file
View File

Binary file not shown.

0
test/swt2test.c Executable file → Normal file
View File

Binary file not shown.

Binary file not shown.