1*1c60b9acSAndroid Build Coastguard Worker# If we are being built as part of lws, confirm current build config supports 2*1c60b9acSAndroid Build Coastguard Worker# reqconfig, else skip building ourselves. 3*1c60b9acSAndroid Build Coastguard Worker# 4*1c60b9acSAndroid Build Coastguard Worker# If we are being built externally, confirm installed lws was configured to 5*1c60b9acSAndroid Build Coastguard Worker# support reqconfig, else error out with a helpful message about the problem. 6*1c60b9acSAndroid Build Coastguard Worker# 7*1c60b9acSAndroid Build Coastguard Worker 8*1c60b9acSAndroid Build Coastguard Workerinclude(CheckIncludeFile) 9*1c60b9acSAndroid Build Coastguard Worker 10*1c60b9acSAndroid Build Coastguard WorkerMACRO(require_lws_config reqconfig _val result) 11*1c60b9acSAndroid Build Coastguard Worker 12*1c60b9acSAndroid Build Coastguard Worker if (DEFINED ${reqconfig}) 13*1c60b9acSAndroid Build Coastguard Worker if (${reqconfig}) 14*1c60b9acSAndroid Build Coastguard Worker set (rq 1) 15*1c60b9acSAndroid Build Coastguard Worker else() 16*1c60b9acSAndroid Build Coastguard Worker set (rq 0) 17*1c60b9acSAndroid Build Coastguard Worker endif() 18*1c60b9acSAndroid Build Coastguard Worker else() 19*1c60b9acSAndroid Build Coastguard Worker set(rq 0) 20*1c60b9acSAndroid Build Coastguard Worker endif() 21*1c60b9acSAndroid Build Coastguard Worker 22*1c60b9acSAndroid Build Coastguard Worker if (${_val} EQUAL ${rq}) 23*1c60b9acSAndroid Build Coastguard Worker set(SAME 1) 24*1c60b9acSAndroid Build Coastguard Worker else() 25*1c60b9acSAndroid Build Coastguard Worker set(SAME 0) 26*1c60b9acSAndroid Build Coastguard Worker endif() 27*1c60b9acSAndroid Build Coastguard Worker 28*1c60b9acSAndroid Build Coastguard Worker string(COMPARE EQUAL "${result}" requirements _cmp) 29*1c60b9acSAndroid Build Coastguard Worker 30*1c60b9acSAndroid Build Coastguard Worker # we go in the first clause if in-tree 31*1c60b9acSAndroid Build Coastguard Worker if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME}) 32*1c60b9acSAndroid Build Coastguard Worker if (${_val}) 33*1c60b9acSAndroid Build Coastguard Worker message("${SAMP}: skipping as lws being built without ${reqconfig}") 34*1c60b9acSAndroid Build Coastguard Worker else() 35*1c60b9acSAndroid Build Coastguard Worker message("${SAMP}: skipping as lws built with ${reqconfig}") 36*1c60b9acSAndroid Build Coastguard Worker endif() 37*1c60b9acSAndroid Build Coastguard Worker set(${result} 0) 38*1c60b9acSAndroid Build Coastguard Worker else() 39*1c60b9acSAndroid Build Coastguard Worker if (LWS_WITH_MINIMAL_EXAMPLES) 40*1c60b9acSAndroid Build Coastguard Worker set(MET ${SAME}) 41*1c60b9acSAndroid Build Coastguard Worker else() 42*1c60b9acSAndroid Build Coastguard Worker CHECK_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig}) 43*1c60b9acSAndroid Build Coastguard Worker if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig}) 44*1c60b9acSAndroid Build Coastguard Worker set(HAS_${reqconfig} 0) 45*1c60b9acSAndroid Build Coastguard Worker else() 46*1c60b9acSAndroid Build Coastguard Worker set(HAS_${reqconfig} 1) 47*1c60b9acSAndroid Build Coastguard Worker endif() 48*1c60b9acSAndroid Build Coastguard Worker if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} AND NOT ${_val})) 49*1c60b9acSAndroid Build Coastguard Worker set(MET 1) 50*1c60b9acSAndroid Build Coastguard Worker else() 51*1c60b9acSAndroid Build Coastguard Worker set(MET 0) 52*1c60b9acSAndroid Build Coastguard Worker endif() 53*1c60b9acSAndroid Build Coastguard Worker endif() 54*1c60b9acSAndroid Build Coastguard Worker if (NOT MET AND _cmp) 55*1c60b9acSAndroid Build Coastguard Worker if (${_val}) 56*1c60b9acSAndroid Build Coastguard Worker message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}") 57*1c60b9acSAndroid Build Coastguard Worker else() 58*1c60b9acSAndroid Build Coastguard Worker message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project") 59*1c60b9acSAndroid Build Coastguard Worker endif() 60*1c60b9acSAndroid Build Coastguard Worker endif() 61*1c60b9acSAndroid Build Coastguard Worker 62*1c60b9acSAndroid Build Coastguard Worker endif() 63*1c60b9acSAndroid Build Coastguard WorkerENDMACRO() 64*1c60b9acSAndroid Build Coastguard Worker 65*1c60b9acSAndroid Build Coastguard WorkerMACRO(require_pthreads result) 66*1c60b9acSAndroid Build Coastguard Worker CHECK_INCLUDE_FILE(pthread.h LWS_HAVE_PTHREAD_H) 67*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_HAVE_PTHREAD_H) 68*1c60b9acSAndroid Build Coastguard Worker if (LWS_WITH_MINIMAL_EXAMPLES) 69*1c60b9acSAndroid Build Coastguard Worker set(${result} 0) 70*1c60b9acSAndroid Build Coastguard Worker message("${SAMP}: skipping as no pthreads") 71*1c60b9acSAndroid Build Coastguard Worker else() 72*1c60b9acSAndroid Build Coastguard Worker message(FATAL_ERROR "threading support requires pthreads") 73*1c60b9acSAndroid Build Coastguard Worker endif() 74*1c60b9acSAndroid Build Coastguard Worker else() 75*1c60b9acSAndroid Build Coastguard Worker if (WIN32) 76*1c60b9acSAndroid Build Coastguard Worker set(PTHREAD_LIB ${LWS_EXT_PTHREAD_LIBRARIES}) 77*1c60b9acSAndroid Build Coastguard Worker else() 78*1c60b9acSAndroid Build Coastguard Worker set(PTHREAD_LIB pthread) 79*1c60b9acSAndroid Build Coastguard Worker endif() 80*1c60b9acSAndroid Build Coastguard Worker endif() 81*1c60b9acSAndroid Build Coastguard WorkerENDMACRO() 82*1c60b9acSAndroid Build Coastguard Worker 83*1c60b9acSAndroid Build Coastguard WorkerMACRO(sai_resource SR_NAME SR_AMOUNT SR_LEASE SR_SCOPE) 84*1c60b9acSAndroid Build Coastguard Worker if (DEFINED ENV{SAI_OVN}) 85*1c60b9acSAndroid Build Coastguard Worker 86*1c60b9acSAndroid Build Coastguard Worker site_name(HOST_NAME) 87*1c60b9acSAndroid Build Coastguard Worker 88*1c60b9acSAndroid Build Coastguard Worker # 89*1c60b9acSAndroid Build Coastguard Worker # Creates a "test" called res_${SR_SCOPE} that waits to be 90*1c60b9acSAndroid Build Coastguard Worker # given a lease on ${SR_AMOUNT} of a resource ${SR_NAME}, for at 91*1c60b9acSAndroid Build Coastguard Worker # most $SR_LEASE seconds, until the test dependent on it can 92*1c60b9acSAndroid Build Coastguard Worker # proceed. 93*1c60b9acSAndroid Build Coastguard Worker # 94*1c60b9acSAndroid Build Coastguard Worker # We need to keep this sai-resource instance up for the 95*1c60b9acSAndroid Build Coastguard Worker # duration of the actual test it is authorizing, when it 96*1c60b9acSAndroid Build Coastguard Worker # is killed, the resource is then immediately released. 97*1c60b9acSAndroid Build Coastguard Worker # 98*1c60b9acSAndroid Build Coastguard Worker # The resource cookie has to be globally unique within the 99*1c60b9acSAndroid Build Coastguard Worker # distributed builder sessions, so it includes the builder 100*1c60b9acSAndroid Build Coastguard Worker # hostname and builder instance information 101*1c60b9acSAndroid Build Coastguard Worker # 102*1c60b9acSAndroid Build Coastguard Worker 103*1c60b9acSAndroid Build Coastguard Worker add_test(NAME st_res_${SR_SCOPE} COMMAND 104*1c60b9acSAndroid Build Coastguard Worker ${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh 105*1c60b9acSAndroid Build Coastguard Worker res_${SR_SCOPE} 106*1c60b9acSAndroid Build Coastguard Worker sai-resource ${SR_NAME} ${SR_AMOUNT} ${SR_LEASE} 107*1c60b9acSAndroid Build Coastguard Worker ${HOST_NAME}-res_${SR_SCOPE}-$ENV{SAI_PROJECT}-$ENV{SAI_OVN}) 108*1c60b9acSAndroid Build Coastguard Worker 109*1c60b9acSAndroid Build Coastguard Worker # allow it to wait for up to 100s for the resource lease 110*1c60b9acSAndroid Build Coastguard Worker 111*1c60b9acSAndroid Build Coastguard Worker set_tests_properties(st_res_${SR_SCOPE} PROPERTIES 112*1c60b9acSAndroid Build Coastguard Worker WORKING_DIRECTORY . 113*1c60b9acSAndroid Build Coastguard Worker FIXTURES_SETUP res_sspcmin 114*1c60b9acSAndroid Build Coastguard Worker TIMEOUT 100) 115*1c60b9acSAndroid Build Coastguard Worker 116*1c60b9acSAndroid Build Coastguard Worker add_test(NAME ki_res_${SR_SCOPE} COMMAND 117*1c60b9acSAndroid Build Coastguard Worker ${CMAKE_SOURCE_DIR}/scripts/ctest-background-kill.sh 118*1c60b9acSAndroid Build Coastguard Worker res_${SR_SCOPE} sai-resource ) 119*1c60b9acSAndroid Build Coastguard Worker 120*1c60b9acSAndroid Build Coastguard Worker set_tests_properties(ki_res_${SR_SCOPE} PROPERTIES 121*1c60b9acSAndroid Build Coastguard Worker FIXTURES_CLEANUP res_${SR_SCOPE}) 122*1c60b9acSAndroid Build Coastguard Worker 123*1c60b9acSAndroid Build Coastguard Worker endif() 124*1c60b9acSAndroid Build Coastguard WorkerENDMACRO() 125*1c60b9acSAndroid Build Coastguard Worker 126