Skip to content

Commit b2a8839

Browse files
committed
Modularize cmake configurations
1 parent 7d1797a commit b2a8839

4 files changed

Lines changed: 114 additions & 116 deletions

File tree

CMakeLists.txt

Lines changed: 7 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,10 @@
1-
cmake_minimum_required(VERSION 3.10)
2-
project(OpenBCI_GUI_Helpers)
1+
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
32

4-
set(CMAKE_CXX_STANDARD 17)
5-
set(CMAKE_VERBOSE_MAKEFILE ON)
6-
set(BRAINFLOW_VERSION 2.1.0)
3+
project(openbci-gui-helpers LANGUAGES CXX)
4+
SET(VERSION "3.0.0" CACHE STRING "Version")
75

8-
# dont export sumbols on unix by default
9-
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
10-
set(CMAKE_C_VISIBILITY_PRESET hidden)
6+
include(cmake/default.cmake)
7+
include(modules/bglib/build.cmake)
8+
include(modules/native-ble/build.cmake)
119

12-
macro(configure_msvc_runtime)
13-
if(MSVC)
14-
# Default to statically-linked runtime.
15-
if("${MSVC_RUNTIME}" STREQUAL "")
16-
set(MSVC_RUNTIME "static")
17-
endif()
18-
19-
# Set compiler options.
20-
set(variables
21-
CMAKE_C_FLAGS_DEBUG
22-
CMAKE_C_FLAGS_MINSIZEREL
23-
CMAKE_C_FLAGS_RELEASE
24-
CMAKE_C_FLAGS_RELWITHDEBINFO
25-
CMAKE_CXX_FLAGS_DEBUG
26-
CMAKE_CXX_FLAGS_MINSIZEREL
27-
CMAKE_CXX_FLAGS_RELEASE
28-
CMAKE_CXX_FLAGS_RELWITHDEBINFO
29-
)
30-
31-
if(${MSVC_RUNTIME} STREQUAL "static")
32-
message(STATUS
33-
"MSVC -> forcing use of statically-linked runtime."
34-
)
35-
36-
foreach(variable ${variables})
37-
if(${variable} MATCHES "/MD")
38-
string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}")
39-
endif()
40-
endforeach()
41-
else()
42-
message(STATUS
43-
"MSVC -> forcing use of dynamically-linked runtime."
44-
)
45-
46-
foreach(variable ${variables})
47-
if(${variable} MATCHES "/MT")
48-
string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}")
49-
endif()
50-
endforeach()
51-
endif()
52-
endif()
53-
endmacro()
54-
55-
# link msvc runtime statically
56-
configure_msvc_runtime()
57-
58-
add_subdirectory(${CMAKE_HOME_DIRECTORY}/3rdparty/SimpleBLE/simpleble)
59-
60-
SET(GANGLION_LIB "GanglionScan")
61-
set(GANGLION_SOURCE_LIB
62-
${CMAKE_HOME_DIRECTORY}/modules/bglib/src/callbacks.cpp
63-
${CMAKE_HOME_DIRECTORY}/modules/bglib/src/cmd_def.cpp
64-
${CMAKE_HOME_DIRECTORY}/modules/bglib/src/stubs.cpp
65-
${CMAKE_HOME_DIRECTORY}/modules/bglib/src/uart.cpp
66-
${CMAKE_HOME_DIRECTORY}/modules/bglib/src/openbci_gui_helpers.cpp
67-
)
68-
69-
add_library(${GANGLION_LIB} SHARED ${GANGLION_SOURCE_LIB})
70-
71-
target_include_directories(${GANGLION_LIB} PUBLIC
72-
$<BUILD_INTERFACE:${CMAKE_HOME_DIRECTORY}/3rdparty/json>
73-
$<BUILD_INTERFACE:${CMAKE_HOME_DIRECTORY}/modules/bglib/include>
74-
)
75-
76-
set_property(TARGET ${GANGLION_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON)
77-
78-
set_target_properties(${GANGLION_LIB}
79-
PROPERTIES
80-
ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
81-
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
82-
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
83-
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
84-
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
85-
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
86-
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
87-
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
88-
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
89-
)
90-
91-
SET(GANGLION_NATIVE_LIB "GanglionNativeScan")
92-
set(GANGLION_NATIVE_SOURCE_LIB
93-
${CMAKE_HOME_DIRECTORY}/modules/native-ble/src/openbci_gui_native_helpers.cpp
94-
)
95-
96-
add_library(${GANGLION_NATIVE_LIB} SHARED ${GANGLION_NATIVE_SOURCE_LIB})
97-
98-
target_include_directories(${GANGLION_NATIVE_LIB} PUBLIC
99-
$<BUILD_INTERFACE:${CMAKE_HOME_DIRECTORY}/modules/native-ble/include>
100-
$<BUILD_INTERFACE:${CMAKE_HOME_DIRECTORY}/3rdparty/json>
101-
$<BUILD_INTERFACE:${CMAKE_HOME_DIRECTORY}/3rdparty/SimpleBLE/simpleble/include/simpleble>
102-
)
103-
104-
target_link_libraries(${GANGLION_NATIVE_LIB} PRIVATE simpleble)
105-
106-
set_property(TARGET ${GANGLION_NATIVE_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON)
107-
108-
set_target_properties(${GANGLION_NATIVE_LIB}
109-
PROPERTIES
110-
ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
111-
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
112-
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
113-
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
114-
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
115-
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
116-
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
117-
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
118-
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
119-
)
10+
add_subdirectory(3rdparty/SimpleBLE/simpleble)

cmake/default.cmake

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
set(CMAKE_CXX_STANDARD 20)
2+
set(CMAKE_CXX_EXTENSIONS OFF)
3+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
4+
5+
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
6+
set(CMAKE_C_VISIBILITY_PRESET hidden)
7+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
8+
9+
set(CMAKE_VERBOSE_MAKEFILE ON)
10+
11+
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
12+
set(OPENBCI_ARCHITECTURE "-32")
13+
endif()
14+
15+
function(message)
16+
if(NOT OPENBCI_MESSAGE_QUIET)
17+
_message(${ARGN})
18+
endif()
19+
endfunction()
20+
21+
if(MSVC)
22+
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -D_CRT_NONSTDC_NO_DEPRECATE)
23+
24+
# Set compiler options.
25+
set(variables
26+
CMAKE_C_FLAGS_DEBUG
27+
CMAKE_C_FLAGS_MINSIZEREL
28+
CMAKE_C_FLAGS_RELEASE
29+
CMAKE_C_FLAGS_RELWITHDEBINFO
30+
CMAKE_CXX_FLAGS_DEBUG
31+
CMAKE_CXX_FLAGS_MINSIZEREL
32+
CMAKE_CXX_FLAGS_RELEASE
33+
CMAKE_CXX_FLAGS_RELWITHDEBINFO
34+
)
35+
endif()
36+
37+
if(MSVC)
38+
set(OPENBCI_LIBRARY_EXTENSION "dll")
39+
elseif(APPLE)
40+
set(OPENBCI_LIBRARY_EXTENSION "dylib")
41+
elseif(UNIX)
42+
set(OPENBCI_LIBRARY_EXTENSION "so")
43+
endif()
44+
45+
include(FetchContent)

modules/bglib/build.cmake

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
SET(GANGLION_LIB "GanglionScan")
2+
3+
add_library(
4+
${GANGLION_LIB} SHARED
5+
modules/bglib/src/callbacks.cpp
6+
modules/bglib/src/cmd_def.cpp
7+
modules/bglib/src/stubs.cpp
8+
modules/bglib/src/uart.cpp
9+
modules/bglib/src/openbci_gui_helpers.cpp
10+
)
11+
12+
target_include_directories(
13+
${GANGLION_LIB} PUBLIC
14+
3rdparty/json
15+
modules/bglib/include
16+
)
17+
18+
set_property(TARGET ${GANGLION_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON)
19+
20+
set_target_properties(${GANGLION_LIB}
21+
PROPERTIES
22+
23+
ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
24+
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
25+
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
26+
27+
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
28+
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
29+
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
30+
)

modules/native-ble/build.cmake

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
SET(OPENBCI_GANGLION_NATIVE_LIB "GanglionNativeScan")
2+
3+
add_library(
4+
${OPENBCI_GANGLION_NATIVE_LIB} SHARED
5+
modules/native-ble/src/openbci_gui_native_helpers.cpp
6+
)
7+
8+
target_include_directories(
9+
${OPENBCI_GANGLION_NATIVE_LIB} PUBLIC
10+
modules/native-ble/include
11+
3rdparty/json
12+
3rdparty/SimpleBLE/simpleble/include/simpleble
13+
)
14+
15+
target_link_libraries(
16+
${OPENBCI_GANGLION_NATIVE_LIB} PRIVATE
17+
simpleble
18+
)
19+
20+
set_property(TARGET ${OPENBCI_GANGLION_NATIVE_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON)
21+
22+
set_target_properties(${OPENBCI_GANGLION_NATIVE_LIB}
23+
PROPERTIES
24+
25+
ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
26+
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
27+
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
28+
29+
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
30+
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
31+
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/
32+
)

0 commit comments

Comments
 (0)