forked from birdofpreyru/react-native-static-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
86 lines (72 loc) · 2.62 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
project(rn-static-server C)
cmake_minimum_required(VERSION 3.7.0 FATAL_ERROR)
# This prevents CMake from complaining that INSTALL(..) directives in
# Lighttpd CMakeLists.txt miss BUNDLE DESTINATION.
set(CMAKE_MACOSX_BUNDLE OFF)
# Pre-build of PCRE2 for the target system from sources.
if(CMAKE_CROSSCOMPILING AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
file(
COPY ${CMAKE_CURRENT_SOURCE_DIR}/windows/ReactNativeStaticServer/lighttpd/lemon.exe
DESTINATION ${CMAKE_BINARY_DIR}/lighttpd1.4/build
)
set(LEMON_PATH ${CMAKE_BINARY_DIR}/lighttpd1.4/build/lemon.exe)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Android")
set(
EXTRA_BUILD_ARGS
-DANDROID_ABI=${ANDROID_ABI}
-DANDROID_PLATFORM=${ANDROID_PLATFORM}
-DANDROID_STL=${ANDROID_STL}
-GNinja
)
elseif(CMAKE_SYSTEM_NAME MATCHES "iOS")
set(
EXTRA_BUILD_ARGS
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
-DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=${CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH}
-DCMAKE_IOS_INSTALL_COMBINED=${CMAKE_IOS_INSTALL_COMBINED}
-GXcode
)
set(PCRE2_TARGET --target pcre2-8-static)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Android|Windows")
set(EXTRA_BUILD_ARGS ${EXTRA_BUILD_ARGS} -DBUILD_SHARED_LIBS=ON)
endif()
execute_process(
COMMAND cmake ${CMAKE_CURRENT_SOURCE_DIR}/pcre2
-B ${CMAKE_BINARY_DIR}/pcre2
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/sysroot
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
${EXTRA_BUILD_ARGS}
# TODO: This is a useful argument, but requires CMake >= 3.19.0.
# COMMAND_ERROR_IS_FATAL ANY
)
execute_process(
COMMAND cmake --build ${CMAKE_BINARY_DIR}/pcre2
--config Release
${PCRE2_TARGET}
)
if(NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
execute_process(COMMAND cmake --install ${CMAKE_BINARY_DIR}/pcre2)
endif()
# Copies shared PCRE2 library into the folder from where Gradle automatically
# will bundle it in the host app package.
if(CMAKE_SYSTEM_NAME MATCHES "Android")
file(
COPY ${CMAKE_BINARY_DIR}/sysroot/lib/libpcre2-8.so
DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/android/src/main/jniLibs/${ANDROID_ABI}
)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Android|Windows")
set(BUILD_SHARED_LIBS 1)
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPCRE2_CODE_UNIT_WIDTH=8 -I${CMAKE_BINARY_DIR}/sysroot/include -L${CMAKE_BINARY_DIR}/sysroot/lib")
add_subdirectory(lighttpd1.4)
file(WRITE ${CMAKE_BINARY_DIR}/lighttpd1.4/build/plugin-static.h
PLUGIN_INIT(mod_indexfile)\n
PLUGIN_INIT(mod_dirlisting)\n
PLUGIN_INIT(mod_staticfile)\n
)