# THE VERSION NUMBER
SET(CMAKE_SYSTEM_NAME Generic)
CMAKE_MINIMUM_REQUIRED (VERSION 3.10)
PROJECT(WCOMMON)

SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
SET(CMAKE_NINJA_FORCE_RESPONSE_FILE 1 CACHE INTERNAL "")

set(CMAKE_VERBOSE_MAKEFILE OFF)

# ENABLE ASM
ENABLE_LANGUAGE(ASM)

SET(CMAKE_STATIC_LIBRARY_PREFIX)
SET(CMAKE_STATIC_LIBRARY_SUFFIX)

SET(CMAKE_EXECUTABLE_LIBRARY_PREFIX)
SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX)

# C FLAGS
SET(CMAKE_C_FLAGS " -mthumb --function-sections --data-sections -mcpu=cortex-m3 -std=gnu99 -mabi=aapcs -march=armv7-m -fno-builtin -Wall")
STRING(APPEND CMAKE_C_FLAGS " -DGCC_COMPILE=1 -DWOLFSSL_USER_SETTINGS -D_IN_ADDR_T_DECLARED -D__MACHINE_ENDIAN_H__ -D_TIMEVAL_DEFINED -D__INSIDE_CYGWIN_NET__ ")

SET(CMAKE_C_FLAGS_DEBUG   "-O0 -g3 -gdwarf-2 -Wall -DDEBUG ")
SET(CMAKE_C_FLAGS_RELEASE "-Os -Wall")


# DEBUG ASM FLAGS
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -O0 -g3 -gdwarf-2 -Wall -mthumb-interwork -mthumb -std=gnu99 -mcpu=cortex-m3 -march=armv7-m -mabi=aapcs -fno-builtin -DDEBUG ")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -Os -Wall -mthumb-interwork -mthumb -std=gnu99 -mcpu=cortex-m3 -march=armv7-m -mabi=aapcs -fno-builtin ")

# Library sources
SET(LIBRARY_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/fwup/wm_fwup.c"
"${CMAKE_CURRENT_SOURCE_DIR}/mem/wm_mem.c"
"${CMAKE_CURRENT_SOURCE_DIR}/Params/wm_param.c"
"${CMAKE_CURRENT_SOURCE_DIR}/task/wm_wl_mbox.c"
"${CMAKE_CURRENT_SOURCE_DIR}/task/wm_wl_task.c"
"${CMAKE_CURRENT_SOURCE_DIR}/task/wm_wl_timers.c"
"${CMAKE_CURRENT_SOURCE_DIR}/utils/utils.c"
"${CMAKE_CURRENT_SOURCE_DIR}/crypto/wm_crypto_hard.c"

    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/digest/hmac.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/digest/md2.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/digest/md4.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/digest/sha224.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/digest/sha384.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/digest/sha512.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/keyformat/asn1.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/keyformat/base64.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/keyformat/x509.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/math/pstm_mul_comba.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/prng/prng.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/prng/yarrow.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/pubkey/dh.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/pubkey/ecc.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/pubkey/pkcs.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/pubkey/pubkey.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/pubkey/rsa.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/symmetric/aesGCM.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/symmetric/des3.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/symmetric/idea.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/symmetric/rc2.c"
    # "${CMAKE_CURRENT_SOURCE_DIR}/crypto/symmetric/seed.c"
)

function(ADD_LIB_TARGET LIBTARGET)
    add_library(${LIBTARGET} OBJECT ${LIBRARY_SOURCES})
    # ADD_CUSTOM_COMMAND(TARGET ${LIBTARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${EXECUTABLE_OUTPUT_PATH}/${LIBTARGET} ${CMAKE_CURRENT_SOURCE_DIR}/../../Lib/GNU/${LIBTARGET})
endfunction()

ADD_LIB_TARGET(wmcommon.a)
