137 lines
4.1 KiB
CMake
137 lines
4.1 KiB
CMake
# Copyright 2018 Slightech Co., Ltd. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/IncludeGuard.cmake)
|
|
cmake_include_guard()
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/Common.cmake)
|
|
|
|
# make_executable(NAME
|
|
# [SRCS src1 src2 ...]
|
|
# [LINK_LIBS lib1 lib2 ...]
|
|
# [DLL_SEARCH_PATHS path1 path2 ...]
|
|
# [WITH_THREAD])
|
|
macro(make_executable NAME)
|
|
set(options WITH_THREAD)
|
|
set(oneValueArgs)
|
|
set(multiValueArgs SRCS LINK_LIBS DLL_SEARCH_PATHS)
|
|
cmake_parse_arguments(THIS "${options}" "${oneValueArgs}"
|
|
"${multiValueArgs}" ${ARGN})
|
|
|
|
add_executable(${NAME} ${THIS_SRCS})
|
|
target_link_libraries(${NAME} ${THIS_LINK_LIBS})
|
|
target_create_scripts(${NAME} DLL_SEARCH_PATHS ${THIS_DLL_SEARCH_PATHS})
|
|
|
|
if(OS_WIN)
|
|
target_compile_definitions(${NAME}
|
|
PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES
|
|
)
|
|
endif()
|
|
|
|
if(THIS_WITH_THREAD)
|
|
#find_package(Threads REQUIRED)
|
|
if(THREADS_HAVE_PTHREAD_ARG)
|
|
target_compile_options(PUBLIC ${NAME} "-pthread")
|
|
endif()
|
|
if(CMAKE_THREAD_LIBS_INIT)
|
|
target_link_libraries(${NAME} "${CMAKE_THREAD_LIBS_INIT}")
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
# set_default_value(VARIABLE DEFAULT)
|
|
macro(set_default_value VARIABLE DEFAULT)
|
|
if(NOT ${VARIABLE})
|
|
set(${VARIABLE} ${DEFAULT})
|
|
endif()
|
|
endmacro()
|
|
|
|
# set_version_values(VARIABLE)
|
|
macro(set_version_values VARIABLE)
|
|
string(REPLACE "." ";" __version_list "${${VARIABLE}}")
|
|
list(LENGTH __version_list __len)
|
|
if(${__len} GREATER 0)
|
|
list(GET __version_list 0 ${VARIABLE}_MAJOR)
|
|
endif()
|
|
if(${__len} GREATER 1)
|
|
list(GET __version_list 1 ${VARIABLE}_MINOR)
|
|
endif()
|
|
if(${__len} GREATER 2)
|
|
list(GET __version_list 2 ${VARIABLE}_PATCH)
|
|
endif()
|
|
if(${__len} GREATER 3)
|
|
list(GET __version_list 3 ${VARIABLE}_TWEAK)
|
|
endif()
|
|
endmacro()
|
|
|
|
# status(TEXT [IF cond text [ELIF cond text] [ELSE cond text]])
|
|
macro(status TEXT)
|
|
set(options)
|
|
set(oneValueArgs)
|
|
set(multiValueArgs IF ELIF ELSE)
|
|
cmake_parse_arguments(THIS "${options}" "${oneValueArgs}"
|
|
"${multiValueArgs}" ${ARGN})
|
|
|
|
#message(STATUS "TEXT: ${TEXT}")
|
|
#message(STATUS "THIS_IF: ${THIS_IF}")
|
|
#message(STATUS "THIS_ELIF: ${THIS_ELIF}")
|
|
#message(STATUS "THIS_ELSE: ${THIS_ELSE}")
|
|
|
|
set(__msg_list "${TEXT}")
|
|
set(__continue TRUE)
|
|
|
|
if(__continue AND DEFINED THIS_IF)
|
|
#message(STATUS "-- THIS_IF: ${THIS_IF}")
|
|
list(LENGTH THIS_IF __if_len)
|
|
if(${__if_len} GREATER 1)
|
|
list(GET THIS_IF 0 __if_cond)
|
|
if(${__if_cond})
|
|
list(REMOVE_AT THIS_IF 0)
|
|
list(APPEND __msg_list ${THIS_IF})
|
|
set(__continue FALSE)
|
|
endif()
|
|
else()
|
|
message(FATAL_ERROR "status() IF must have cond and text, >= 2 items")
|
|
endif()
|
|
endif()
|
|
|
|
if(__continue AND DEFINED THIS_ELIF)
|
|
#message(STATUS "-- THIS_ELIF: ${THIS_ELIF}")
|
|
list(LENGTH THIS_ELIF __elif_len)
|
|
if(${__elif_len} GREATER 1)
|
|
list(GET THIS_ELIF 0 __elif_cond)
|
|
if(${__elif_cond})
|
|
list(REMOVE_AT THIS_ELIF 0)
|
|
list(APPEND __msg_list ${THIS_ELIF})
|
|
set(__continue FALSE)
|
|
endif()
|
|
else()
|
|
message(FATAL_ERROR "status() ELIF must have cond and text, >= 2 items")
|
|
endif()
|
|
endif()
|
|
|
|
if(__continue AND DEFINED THIS_ELSE)
|
|
#message(STATUS "-- THIS_ELSE: ${THIS_ELSE}")
|
|
list(LENGTH THIS_ELSE __else_len)
|
|
if(${__else_len} GREATER 0)
|
|
list(APPEND __msg_list ${THIS_ELSE})
|
|
else()
|
|
message(FATAL_ERROR "status() ELSE must have text, >= 1 items")
|
|
endif()
|
|
endif()
|
|
|
|
string(REPLACE ";" "" __msg_list "${__msg_list}")
|
|
message(STATUS "${__msg_list}")
|
|
endmacro()
|