xref: /aosp_15_r20/external/libwebsockets/contrib/cross-atmel.cmake (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
1*1c60b9acSAndroid Build Coastguard Worker#
2*1c60b9acSAndroid Build Coastguard Worker# CMake Toolchain file for crosscompiling on Atmel Arm products
3*1c60b9acSAndroid Build Coastguard Worker#
4*1c60b9acSAndroid Build Coastguard Worker# To build without tls
5*1c60b9acSAndroid Build Coastguard Worker#
6*1c60b9acSAndroid Build Coastguard Worker#  cd build/
7*1c60b9acSAndroid Build Coastguard Worker#  cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/opt/atmel/cross-root \
8*1c60b9acSAndroid Build Coastguard Worker#           -DCMAKE_TOOLCHAIN_FILE=../contrib/cross-atmel.cmake \
9*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_PLAT_FREERTOS=1 \
10*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_WITH_ZLIB=0 \
11*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_WITHOUT_EXTENSIONS=1 \
12*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_WITH_ZIP_FOPS=0 \
13*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_WITH_HTTP_STREAM_COMPRESSION=0 \
14*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_WITH_MBEDTLS=0 \
15*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_WITH_SSL=0 \
16*1c60b9acSAndroid Build Coastguard Worker#           -DLWS_WITH_FILE_OPS=0
17*1c60b9acSAndroid Build Coastguard Worker#
18*1c60b9acSAndroid Build Coastguard Worker
19*1c60b9acSAndroid Build Coastguard Worker# I had to edit /opt/xdk-asf-3.48.0/thirdparty/lwip/lwip-port-1.4.1-dev/sam/include/arch/cc.h
20*1c60b9acSAndroid Build Coastguard Worker# to comment out #define LWIP_PROVIDE_ERRNO
21*1c60b9acSAndroid Build Coastguard Worker
22*1c60b9acSAndroid Build Coastguard Worker# if your sdk lives somewhere else, this is the only place that should need changing
23*1c60b9acSAndroid Build Coastguard Worker
24*1c60b9acSAndroid Build Coastguard Workerset(CROSS_BASE /opt/arm-none-eabi)
25*1c60b9acSAndroid Build Coastguard Workerset(SDK_BASE /opt/xdk-asf-3.48.0)
26*1c60b9acSAndroid Build Coastguard Workerset(CROSS_PATH ${CROSS_BASE}/bin/arm-none-eabi)
27*1c60b9acSAndroid Build Coastguard Worker
28*1c60b9acSAndroid Build Coastguard Workerset(LWIP_VER 1.4.1-dev)
29*1c60b9acSAndroid Build Coastguard Workerset(FREERTOS_VER 10.0.0)
30*1c60b9acSAndroid Build Coastguard Worker
31*1c60b9acSAndroid Build Coastguard Worker#
32*1c60b9acSAndroid Build Coastguard Worker# Target operating system name.
33*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_SYSTEM_NAME Generic)
34*1c60b9acSAndroid Build Coastguard Worker
35*1c60b9acSAndroid Build Coastguard Worker# Name of C compiler.
36*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_C_COMPILER "${CROSS_PATH}-gcc")
37*1c60b9acSAndroid Build Coastguard Worker
38*1c60b9acSAndroid Build Coastguard Worker#
39*1c60b9acSAndroid Build Coastguard Worker# cmake believes we should link a NOP test program OK, but since we're
40*1c60b9acSAndroid Build Coastguard Worker# baremetal, that's not true in our case.  It tries to build this test
41*1c60b9acSAndroid Build Coastguard Worker# with the cross compiler, but with no args on it, and it fails.
42*1c60b9acSAndroid Build Coastguard Worker# So disable this test for this toolchain (we'll find out soon enough
43*1c60b9acSAndroid Build Coastguard Worker# if we actually can't compile anything)
44*1c60b9acSAndroid Build Coastguard Worker
45*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_C_COMPILER_WORKS 1)
46*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_CXX_COMPILER_WORKS 1)
47*1c60b9acSAndroid Build Coastguard Worker
48*1c60b9acSAndroid Build Coastguard Worker#
49*1c60b9acSAndroid Build Coastguard Worker# similarly we're building a .a like this, we can't actually build
50*1c60b9acSAndroid Build Coastguard Worker# complete test programs to probe api availability... so force some
51*1c60b9acSAndroid Build Coastguard Worker# key ones
52*1c60b9acSAndroid Build Coastguard Worker
53*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_ssl_conf_alpn_protocols 1)
54*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_ssl_conf_alpn_protocols 1)
55*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_ssl_get_alpn_protocol 1)
56*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_ssl_conf_sni 1)
57*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_ssl_set_hs_ca_chain 1)
58*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_ssl_set_hs_own_cert 1)
59*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_ssl_set_hs_authmode 1)
60*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_net_init 1)
61*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_md_setup 1) # not on xenial 2.2
62*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_rsa_complete 1) # not on xenial 2.2
63*1c60b9acSAndroid Build Coastguard Workerset(LWS_HAVE_mbedtls_internal_aes_encrypt 1)
64*1c60b9acSAndroid Build Coastguard Worker#
65*1c60b9acSAndroid Build Coastguard Worker# Different build system distros set release optimization level to different
66*1c60b9acSAndroid Build Coastguard Worker# things according to their local policy, eg, Fedora is -O2 and Ubuntu is -O3
67*1c60b9acSAndroid Build Coastguard Worker# here.  Actually the build system's local policy is completely unrelated to
68*1c60b9acSAndroid Build Coastguard Worker# our desire for cross-build release optimization policy for code built to run
69*1c60b9acSAndroid Build Coastguard Worker# on a completely different target than the build system itself.
70*1c60b9acSAndroid Build Coastguard Worker#
71*1c60b9acSAndroid Build Coastguard Worker# Since this goes last on the compiler commandline we have to override it to a
72*1c60b9acSAndroid Build Coastguard Worker# sane value for cross-build here.  Notice some gcc versions enable broken
73*1c60b9acSAndroid Build Coastguard Worker# optimizations with -O3.
74*1c60b9acSAndroid Build Coastguard Worker#
75*1c60b9acSAndroid Build Coastguard Workerif (CMAKE_BUILD_TYPE MATCHES RELEASE OR CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES release)
76*1c60b9acSAndroid Build Coastguard Worker	set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2")
77*1c60b9acSAndroid Build Coastguard Worker	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
78*1c60b9acSAndroid Build Coastguard Workerendif()
79*1c60b9acSAndroid Build Coastguard Worker
80*1c60b9acSAndroid Build Coastguard Workerset(PLAT_ARCH        ARM_CM4F)
81*1c60b9acSAndroid Build Coastguard Workerset(PLAT_ARCH_CMSIS  sam4e)
82*1c60b9acSAndroid Build Coastguard Workerset(PLAT_SOC         __SAM4E16E__)
83*1c60b9acSAndroid Build Coastguard Workerset(PLAT_BOARD       SAM4E_XPLAINED_PRO)
84*1c60b9acSAndroid Build Coastguard Worker
85*1c60b9acSAndroid Build Coastguard Workerset(CF_LWIP "${CF_LWIP} -I${SDK_BASE}/thirdparty/lwip/lwip-${LWIP_VER}/src/include/lwip")
86*1c60b9acSAndroid Build Coastguard Workerset(CF_LWIP "${CF_LWIP} -I${SDK_BASE}/thirdparty/lwip/lwip-${LWIP_VER}/src/include/posix")
87*1c60b9acSAndroid Build Coastguard Workerset(CF_LWIP "${CF_LWIP} -I${SDK_BASE}/thirdparty/lwip/lwip-${LWIP_VER}/src/include")
88*1c60b9acSAndroid Build Coastguard Workerset(CF_LWIP "${CF_LWIP} -I${SDK_BASE}/thirdparty/lwip/lwip-${LWIP_VER}/src/module_config")
89*1c60b9acSAndroid Build Coastguard Workerset(CF_LWIP "${CF_LWIP} -I${SDK_BASE}/thirdparty/lwip/lwip-port-${LWIP_VER}/sam/include")
90*1c60b9acSAndroid Build Coastguard Workerset(CF_LWIP "${CF_LWIP} -I${SDK_BASE}/thirdparty/lwip/lwip-${LWIP_VER}/src/include/ipv4")
91*1c60b9acSAndroid Build Coastguard Worker
92*1c60b9acSAndroid Build Coastguard Workerset(CF_FREERTOS "${CF_FREERTOS} -I${SDK_BASE}/thirdparty/freertos/freertos-${FREERTOS_VER}/Source/include")
93*1c60b9acSAndroid Build Coastguard Workerset(CF_FREERTOS "${CF_FREERTOS} -I${SDK_BASE}/thirdparty/freertos/freertos-${FREERTOS_VER}/module_config")
94*1c60b9acSAndroid Build Coastguard Workerset(CF_FREERTOS "${CF_FREERTOS} -I${SDK_BASE}/thirdparty/freertos/freertos-${FREERTOS_VER}/Source/portable/GCC/${PLAT_ARCH}")
95*1c60b9acSAndroid Build Coastguard Worker
96*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/common/boards")
97*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/common/utils")
98*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/sam/utils/")
99*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/sam/utils/preprocessor")
100*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/sam/utils/header_files")
101*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/sam/boards")
102*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/sam/utils/cmsis/${PLAT_ARCH_CMSIS}/source/templates")
103*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/sam/utils/cmsis/${PLAT_ARCH_CMSIS}/include")
104*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/thirdparty/CMSIS/Include")
105*1c60b9acSAndroid Build Coastguard Workerset(CF_SDK_GLUE "${CF_SDK_GLUE} -I${SDK_BASE}/common/utils/osprintf")
106*1c60b9acSAndroid Build Coastguard Worker
107*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lnosys -nostartfiles ${CF_LWIP} ${CF_FREERTOS} ${CF_SDK_GLUE} -DBOARD=${PLAT_BOARD} -D${PLAT_SOC} -DLWIP_TIMEVAL_PRIVATE=0 -DLWS_AMAZON_RTOS=1 -DLWIP_SOCKET_OFFSET=0 -DLWIP_COMPAT_SOCKETS -DLWIP_DNS=1 -DLWIP_SOCKETS=1 "  CACHE STRING "" FORCE)
108*1c60b9acSAndroid Build Coastguard Worker
109*1c60b9acSAndroid Build Coastguard Worker# Where to look for the target environment. (More paths can be added here)
110*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_FIND_ROOT_PATH "${CROSS_PATH}")
111*1c60b9acSAndroid Build Coastguard Worker
112*1c60b9acSAndroid Build Coastguard Worker# Adjust the default behavior of the FIND_XXX() commands:
113*1c60b9acSAndroid Build Coastguard Worker# search programs in the host environment only.
114*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
115*1c60b9acSAndroid Build Coastguard Worker
116*1c60b9acSAndroid Build Coastguard Worker# Search headers and libraries in the target environment only.
117*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
118*1c60b9acSAndroid Build Coastguard Workerset(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
119*1c60b9acSAndroid Build Coastguard Worker
120