forked from PPUC/libzedmd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
119 lines (105 loc) · 3.43 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
cmake_minimum_required(VERSION 3.18)
option(USE_OSXARM "macOS arm64" OFF)
option(USE_OSXINTEL "macOS x86_64" OFF)
option(USE_IOS "ios" OFF)
option(USE_TVOS "tvos" OFF)
option(USE_ANDROID "android" OFF)
option(USE_WIN32 "Win32" OFF)
if(USE_IOS)
set(CMAKE_SYSTEM_NAME iOS)
elseif(USE_TVOS)
set(CMAKE_SYSTEM_NAME tvOS)
elseif(USE_ANDROID)
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 30)
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
endif()
file(READ src/ZeDMD.h version)
string(REGEX MATCH "ZEDMD_VERSION_MAJOR[ ]+([0-9]+)" _tmp ${version})
set(VERSION_MAJOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "ZEDMD_VERSION_MINOR[ ]+([0-9]+)" _tmp ${version})
set(VERSION_MINOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "ZEDMD_VERSION_PATCH[ ]+([0-9]+)" _tmp ${version})
set(VERSION_PATCH "${CMAKE_MATCH_1}")
project(zedmd VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
DESCRIPTION "Cross-platform library for communicating with ZeDMD.")
set(LIB_NAME "zedmd")
if(USE_OSXARM)
set(CMAKE_OSX_ARCHITECTURES arm64)
elseif(USE_OSXINTEL)
set(CMAKE_OSX_ARCHITECTURES x86_64)
elseif(USE_IOS OR USE_TVOS)
set(CMAKE_OSX_DEPLOYMENT_TARGET 16.0)
set(CMAKE_OSX_ARCHITECTURES arm64)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_C_FLAGS -fembed-bitcode)
set(CMAKE_CXX_FLAGS -fembed-bitcode)
elseif(USE_WIN32)
add_compile_definitions(WIN32)
elseif(USE_ANDROID)
else()
set(LIB_NAME "zedmd64")
endif()
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(MINIZ_SOURCES
src/miniz/miniz.h
src/miniz/miniz.c
)
if(USE_ANDROID)
else()
set(SERIALIB_SOURCES
src/serialib/serialib.h
src/serialib/serialib.cpp
)
endif()
set(LIBRARY_SOURCES
${MINIZ_SOURCES}
${SERIALIB_SOURCES}
src/SerialPort.h
src/SerialPort.cpp
src/ZeDMDComm.h
src/ZeDMDComm.cpp
src/ZeDMDWiFi.h
src/ZeDMDWiFi.cpp
src/ZeDMD.h
src/ZeDMD.cpp
)
set(INCLUDE_DIRS
src
)
include_directories(AFTER src)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
if(NOT USE_IOS AND NOT USE_TVOS)
add_library(zedmd_shared SHARED ${LIBRARY_SOURCES} "src/WinUnistd.h" "src/WinUnistd.cpp")
set_target_properties(zedmd_shared PROPERTIES
OUTPUT_NAME ${LIB_NAME}
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
LINK_FLAGS_RELEASE -s
)
target_include_directories(zedmd_shared PUBLIC ${INCLUDE_DIRS})
if(WIN32)
target_link_libraries(zedmd_shared PRIVATE ws2_32)
endif()
install(TARGETS zedmd_shared
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
)
endif()
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
add_library(zedmd_static STATIC ${LIBRARY_SOURCES} "src/WinUnistd.h" "src/WinUnistd.cpp")
set_target_properties(zedmd_static PROPERTIES OUTPUT_NAME "zedmd")
target_include_directories(zedmd_static PUBLIC ${INCLUDE_DIRS})
if(WIN32)
target_link_libraries(zedmd_static PRIVATE ws2_32)
endif()
install(TARGETS zedmd_static
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
)
install(FILES src/ZeDMD.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
endif()
else()
include_directories(AFTER src)
add_library(ZeDMD ${LIBRARY_SOURCES})
endif()