11# SPDX-License-Identifier: GPL-2.0-or-later
22#
33# Copyright(c) 2023 ffashion <helloworldffashion@gmail.com>
4- # Copyright(c) 2023 John Sanpe <sanpeqf@gmail.com>
4+ # Copyright(c) 2023 Zhenlin Wang <sanpeqf@gmail.com>
55#
66
77cmake_minimum_required (VERSION 3.12)
@@ -26,6 +26,7 @@ set(BFDEV_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
2626set (BFDEV_HEADER_PATH ${PROJECT_SOURCE_DIR} /include )
2727set (BFDEV_SOURCE_PATH ${PROJECT_SOURCE_DIR} /src)
2828set (BFDEV_TEMPLATE_PATH ${PROJECT_SOURCE_DIR} /template)
29+ set (BFDEV_MODULES_PATH ${PROJECT_SOURCE_DIR} /modules)
2930set (BFDEV_PORT_PATH ${PROJECT_SOURCE_DIR} /port)
3031set (BFDEV_DOCUMENT_PATH ${PROJECT_SOURCE_DIR} /docs)
3132set (BFDEV_GENERATED_PATH ${PROJECT_BINARY_DIR} /generated )
@@ -38,6 +39,7 @@ set(BFDEV_CONFIGURE ${BFDEV_GENERATED_PATH}/bfdev-config.cmake)
3839include (${PROJECT_SOURCE_DIR} /scripts/hostrule.cmake)
3940include (${PROJECT_SOURCE_DIR} /scripts/packed-header.cmake)
4041include (${PROJECT_SOURCE_DIR} /scripts/commit.cmake)
42+ include (${PROJECT_SOURCE_DIR} /scripts/platform.cmake)
4143
4244commit_hash(BFDEV_COMMITID)
4345commit_branch(BFDEV_BRANCH)
@@ -56,6 +58,8 @@ option(BFDEV_STRICT "Enable strict compilation" OFF)
5658option (BFDEV_EXAMPLES "Build examples" OFF )
5759option (BFDEV_TESTSUITE "Build testsuite" OFF )
5860
61+ option (BFDEV_TEMPLATE "Build Template Library" ON )
62+ option (BFDEV_MODULES "Build Modules Library" ON )
5963option (BFDEV_BUILD_STATIC "Build Static Library" ON )
6064option (BFDEV_BUILD_SHARED "Build Shared Library" ON )
6165option (BFDEV_INSTALL_HEADERS "Install Headers" ON )
@@ -85,15 +89,49 @@ if(BFDEV_DEVEL)
8589 set (BFDEV_GCOV ON )
8690endif ()
8791
92+ if (NOT BFDEV_PORT_TYPE STREQUAL "posix" )
93+ set (BFDEV_MODULES OFF )
94+ set (BFDEV_EXAMPLES OFF )
95+ set (BFDEV_TESTSUITE OFF )
96+ endif ()
97+
98+ if (BFDEV_EXAMPLES OR BFDEV_TESTSUITE)
99+ set (BFDEV_TEMPLATE ON )
100+ set (BFDEV_MODULES ON )
101+ endif ()
102+
88103include (${PROJECT_SOURCE_DIR} /build .cmake)
89104add_subdirectory (${PROJECT_SOURCE_DIR} /scripts)
90105
91- packed_header(
92- bfdev/template/
93- _BFDEV_TEMPLATE_H_
94- ${BFDEV_GENERATED_PATH} /bfdev/template.h
95- ${BFDEV_HEADER_PATH} /bfdev/template
96- )
106+ if (BFDEV_TEMPLATE)
107+ packed_header(
108+ bfdev/template/
109+ _BFDEV_TEMPLATE_H_
110+ ${BFDEV_GENERATED_PATH} /bfdev/template.h
111+ ${BFDEV_HEADER_PATH} /bfdev/template
112+ )
113+ else ()
114+ set (BFDEV_EXPORT_EXTRA
115+ ${BFDEV_EXPORT_EXTRA}
116+ COMMAND ${CMAKE_COMMAND} -E rm -rf
117+ ${BFDEV_EXPORT_PATH} /bfdev/template
118+ )
119+ endif ()
120+
121+ if (BFDEV_MODULES)
122+ packed_header(
123+ bfdev/modules/
124+ _BFDEV_MODULES_H_
125+ ${BFDEV_GENERATED_PATH} /bfdev/modules.h
126+ ${BFDEV_HEADER_PATH} /bfdev/modules
127+ )
128+ else ()
129+ set (BFDEV_EXPORT_EXTRA
130+ ${BFDEV_EXPORT_EXTRA}
131+ COMMAND ${CMAKE_COMMAND} -E rm -rf
132+ ${BFDEV_EXPORT_PATH} /bfdev/modules
133+ )
134+ endif ()
97135
98136packed_header(
99137 bfdev/
@@ -116,6 +154,7 @@ add_custom_target(
116154 ${BFDEV_ARCH_HEADER_PATH} /bfdev
117155 ${BFDEV_GENERATED_PATH} /bfdev
118156 ${BFDEV_EXPORT_PATH} /bfdev
157+ ${BFDEV_EXPORT_EXTRA}
119158)
120159
121160set_property (
0 commit comments