Skip to content

Commit 5f95e36

Browse files
authored
Overhaul CMake (#63)
Fixes: #58 * Overhaul CMake * Clang format * Rename method header * Merge conflicts --------- Co-authored-by: Sy Brand <sy.brand@fastly.com>
1 parent d73bffa commit 5f95e36

36 files changed

Lines changed: 232 additions & 257 deletions

.github/workflows/release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ jobs:
3838
- name: Set env
3939
run: echo "ARCHIVE_FILENAME_PREFIX=fastly-cpp-${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
4040

41+
- name: Install SDK
42+
run: cmake --install . --prefix target/release/dist
43+
4144
- name: Archive core dist
4245
run: tar cvf ${{ env.ARCHIVE_FILENAME_PREFIX }}.tar -C target/release/dist fastly libfastly.a
4346

CMakeLists.txt

Lines changed: 94 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,92 @@
11
# From https://github.com/XiangpengHao/cxx-cmake-example/blob/master/fastly/CMakeLists.txt
22
cmake_minimum_required(VERSION 3.15)
3-
project(compute-sdk-cpp)
43

5-
if(!WASI_SDK)
6-
set(WASI_SDK "/opt/wasi-sdk")
7-
endif()
4+
project(compute-sdk-cpp VERSION 0.2.0 LANGUAGES CXX)
85

96
if(VERBOSE)
107
set(VERBOSE_FLAG "--verbose")
118
endif()
129

13-
set(CMAKE_CXX_STANDARD 20)
14-
15-
set(TARGET_TRIPLE wasm32-wasip1)
16-
1710
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
18-
set(CARGO_CMD cargo build --target=${TARGET_TRIPLE} ${VERBOSE_FLAG})
11+
set(CARGO_CMD cargo build --target=${CMAKE_CXX_COMPILER_TARGET} ${VERBOSE_FLAG})
1912
set(TARGET_DIR "debug")
2013
else ()
21-
set(CARGO_CMD cargo build --target=${TARGET_TRIPLE} --release ${VERBOSE_FLAG})
14+
set(CARGO_CMD cargo build --target=${CMAKE_CXX_COMPILER_TARGET} --release ${VERBOSE_FLAG})
2215
set(TARGET_DIR "release")
2316
endif ()
2417

25-
set(DIST_DIR ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_DIR}/dist)
26-
27-
set(CC "${WASI_SDK}/bin/clang")
28-
set(ENV{CC} "${WASI_SDK}/bin/clang")
29-
set(CXX "${WASI_SDK}/bin/clang++")
30-
3118
option(ENABLE_LTO "Enable cross language linking time optimization" ON)
19+
set(LTO_SUPPORTED FALSE)
3220
if(ENABLE_LTO)
3321
include(CheckIPOSupported)
3422
check_ipo_supported(RESULT supported OUTPUT error)
3523
if(supported)
3624
message(STATUS "IPO / LTO enabled")
37-
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
38-
add_link_options(-fuse-ld=lld)
39-
set(CFLAGS "-flto=thin -Oz")
40-
set(CXXFLAGS "${CMAKE_CXX_FLAGS} -flto=thin -Oz --sysroot=${WASI_SDK}/share/wasi-sysroot -DRUST_CXX_NO_EXCEPTIONS -fno-exceptions")
41-
set(CMAKE_CXX_FLAGS ${CXXFLAGS})
42-
set(RUST_FLAGS "-Clinker-plugin-lto" "-Clinker=${CMAKE_CURRENT_SOURCE_DIR}/build-workaround.sh" "-Clink-arg=-fuse-ld=lld" "-L${WASI_SDK}/share/wasi-sysroot/lib/wasm32-wasi" "-lstatic=c++" "-lstatic=c++abi")
25+
set(LTO_SUPPORTED TRUE)
26+
set(FASTLY_LDFLAGS -fuse-ld=lld)
27+
set(FASTLY_CFLAGS -flto=thin -Oz)
28+
set(FASTLY_CXXFLAGS -flto=thin -Oz "--sysroot=${WASI_SDK_PREFIX}/share/wasi-sysroot" -DRUST_CXX_NO_EXCEPTIONS -fno-exceptions)
29+
set(FASTLY_RUST_FLAGS -Clinker-plugin-lto "-Clinker=${CMAKE_CURRENT_SOURCE_DIR}/build-workaround.sh" "-Clink-arg=-fuse-ld=lld" "-L${WASI_SDK_PREFIX}/share/wasi-sysroot/lib/wasm32-wasi" "-lstatic=c++" "-lstatic=c++abi")
4330
else()
4431
message(STATUS "IPO / LTO not supported: <${error}>")
45-
set(CXXFLAGS "${CMAKE_CXX_FLAGS} --sysroot=${WASI_SDK}/share/wasi-sysroot -DRUST_CXX_NO_EXCEPTIONS -fno-exceptions")
46-
set(CMAKE_CXX_FLAGS ${CXXFLAGS})
47-
set(RUST_FLAGS "-L${WASI_SDK}/share/wasi-sysroot/lib/wasm32-wasi" "-lstatic=c++" "-lstatic=c++abi")
32+
set(FASTLY_CXXFLAGS "--sysroot=${WASI_SDK_PREFIX}/share/wasi-sysroot -DRUST_CXX_NO_EXCEPTIONS -fno-exceptions")
33+
set(FASTLY_RUST_FLAGS "-L${WASI_SDK_PREFIX}/share/wasi-sysroot/lib/wasm32-wasi" "-lstatic=c++" "-lstatic=c++abi")
4834
endif()
4935
else()
50-
set(CXXFLAGS "${CMAKE_CXX_FLAGS} --sysroot=${WASI_SDK}/share/wasi-sysroot -DRUST_CXX_NO_EXCEPTIONS -fno-exceptions")
51-
set(CMAKE_CXX_FLAGS ${CXXFLAGS})
52-
set(RUST_FLAGS "-L${WASI_SDK}/share/wasi-sysroot/lib/wasm32-wasi" "-lstatic=c++" "-lstatic=c++abi")
36+
set(FASTLY_CXXFLAGS "-sysroot=${WASI_SDK_PREFIX}/share/wasi-sysroot -DRUST_CXX_NO_EXCEPTIONS -fno-exceptions")
37+
set(FASTLY_RUST_FLAGS "-L${WASI_SDK_PREFIX}/share/wasi-sysroot/lib/wasm32-wasi" "-lstatic=c++" "-lstatic=c++abi")
5338
endif()
54-
if (POLICY CMP0048)
55-
cmake_policy(SET CMP0048 NEW)
56-
endif ()
5739

58-
set(FASTLY_SYS_LIB "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_TRIPLE}/${TARGET_DIR}/libfastly_sys.a")
40+
set(FASTLY_SYS_LIB "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CXX_COMPILER_TARGET}/${TARGET_DIR}/libfastly_sys.a")
5941

6042
set(FASTLY_SYS_CXX "${CMAKE_CURRENT_BINARY_DIR}/fastly-sys.cpp")
6143
file(GLOB_RECURSE FASTLY_CXX "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/**/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/*.cpp")
6244

6345
add_library(fastly-sys STATIC ${FASTLY_SYS_CXX})
46+
add_library(fastly::sys ALIAS fastly-sys)
47+
set_target_properties(fastly-sys PROPERTIES
48+
INTERPROCEDURAL_OPTIMIZATION ${LTO_SUPPORTED})
49+
target_link_options(fastly-sys PRIVATE ${FASTLY_LDFLAGS})
50+
6451
add_library(fastly-sys-orig STATIC IMPORTED)
65-
add_library(fastly-thin STATIC ${FASTLY_CXX} fastly-sys ${CMAKE_CURRENT_SOURCE_DIR}/vendor/tl/expected.h)
6652
set_target_properties(fastly-sys-orig PROPERTIES IMPORTED_LOCATION ${FASTLY_SYS_LIB})
6753

68-
if(MSVC)
69-
target_compile_options(fastly-thin PRIVATE /W3 /WX)
70-
else()
71-
target_compile_options(fastly-thin PRIVATE -Wall -Wextra -Werror)
72-
endif()
54+
add_library(fastly-thin STATIC ${FASTLY_CXX})
55+
add_library(fastly::thin ALIAS fastly-thin)
56+
target_include_directories(fastly-thin PRIVATE
57+
${CMAKE_CURRENT_SOURCE_DIR}/vendor/tl)
58+
set_target_properties(fastly-thin PROPERTIES
59+
INTERPROCEDURAL_OPTIMIZATION ${LTO_SUPPORTED})
60+
target_link_options(fastly-thin PRIVATE ${FASTLY_LDFLAGS})
61+
62+
target_compile_options(fastly-thin PRIVATE -Wall -Wextra -Werror ${FASTLY_CXXFLAGS})
63+
target_compile_options(fastly-sys PRIVATE ${FASTLY_CXXFLAGS})
64+
target_compile_features(fastly-thin PUBLIC cxx_std_20)
7365

7466
set_target_properties(
7567
fastly-sys fastly-thin
7668
PROPERTIES
7769
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_DIR}
7870
)
7971

80-
file(GLOB_RECURSE RUST_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/**/*.rs" "${CMAKE_CURRENT_COURSE_DIR}/src/*.rs")
72+
file(GLOB_RECURSE RUST_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/**/*.rs" "${CMAKE_CURRENT_SOURCE_DIR}/src/*.rs")
8173

8274
add_custom_command(
83-
OUTPUT ${FASTLY_SYS_CXX} ${FASTLY_SYS_LIB} ${DIST_DIR}/fastly/sdk-sys.h ${DIST_DIR}/fastly/util.h
84-
COMMAND CARGO_TARGET_DIR=${CMAKE_CURRENT_BINARY_DIR} CC=${CC} CXX=${CXX} CFLAGS=${CFLAGS} CXXFLAGS=${CXXFLAGS} RUSTFLAGS="${RUST_FLAGS}" ${CARGO_CMD}
75+
OUTPUT ${FASTLY_SYS_CXX} ${FASTLY_SYS_LIB} ${CMAKE_CURRENT_BINARY_DIR}/include/fastly/sdk-sys.h
76+
COMMAND CARGO_TARGET_DIR=${CMAKE_CURRENT_BINARY_DIR} CC="${CMAKE_C_COMPILER}" CXX="${CMAKE_CXX_COMPILER}" CFLAGS="${FASTLY_CFLAGS}" CXXFLAGS="${FASTLY_CXXFLAGS}" RUSTFLAGS="${FASTLY_RUST_FLAGS}" ${CARGO_CMD}
8577
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/cxxbridge/fastly-sys/src/lib.rs.cc ${FASTLY_SYS_CXX}
86-
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/cxxbridge/fastly-sys/src/lib.rs.h ${DIST_DIR}/fastly/sdk-sys.h
87-
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/vendor/tl/expected.h ${DIST_DIR}/fastly/expected.h
78+
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/include/fastly
79+
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/cxxbridge/fastly-sys/src/lib.rs.h ${CMAKE_CURRENT_BINARY_DIR}/include/fastly/sdk-sys.h
80+
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/vendor/tl/expected.h ${CMAKE_CURRENT_BINARY_DIR}/include/fastly/expected.h
8881
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
8982
DEPENDS ${RUST_SRC}
9083
)
9184

92-
target_include_directories(fastly-thin PUBLIC ${DIST_DIR} ${DIST_DIR}/fastly ${DIST_DIR}/fastly/http)
85+
target_include_directories(fastly-thin PUBLIC
86+
${CMAKE_CURRENT_SOURCE_DIR}/include
87+
${CMAKE_CURRENT_BINARY_DIR}/include)
9388

94-
target_link_libraries(fastly-thin PUBLIC fastly-sys-orig fastly-sys)
89+
target_link_libraries(fastly-thin PUBLIC fastly-sys-orig fastly::sys)
9590

9691
function(bundle_static_library tgt_name bundled_tgt_name)
9792
list(APPEND static_libs ${tgt_name})
@@ -129,47 +124,33 @@ function(bundle_static_library tgt_name bundled_tgt_name)
129124

130125
list(REMOVE_DUPLICATES static_libs)
131126

132-
set(bundled_tgt_full_name
133-
${DIST_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${bundled_tgt_name}${CMAKE_STATIC_LIBRARY_SUFFIX})
127+
set(bundled_tgt_full_name "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${bundled_tgt_name}${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE INTERNAL "Bundled target full name")
134128

135129
if (CMAKE_CXX_COMPILER_ID MATCHES "^(Clang|GNU)$")
136-
file(WRITE ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar.in
137-
"CREATE ${bundled_tgt_full_name}\n" )
130+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${bundled_tgt_name}.ar.in "CREATE ${bundled_tgt_full_name}\n" )
138131

139132
foreach(tgt IN LISTS static_libs)
140-
file(APPEND ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar.in
141-
"ADDLIB $<TARGET_FILE:${tgt}>\n")
133+
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${bundled_tgt_name}.ar.in
134+
"ADDLIB $<TARGET_FILE:${tgt}>\n")
142135
endforeach()
143136

144-
file(APPEND ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar.in "SAVE\n")
145-
file(APPEND ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar.in "END\n")
137+
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${bundled_tgt_name}.ar.in "SAVE\n")
138+
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${bundled_tgt_name}.ar.in "END\n")
146139

147140
file(GENERATE
148-
OUTPUT ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar
149-
INPUT ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar.in)
141+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${bundled_tgt_name}.ar
142+
INPUT ${CMAKE_CURRENT_BINARY_DIR}/${bundled_tgt_name}.ar.in)
150143

151144
set(ar_tool ${CMAKE_AR})
152145
if (CMAKE_INTERPROCEDURAL_OPTIMIZATION)
153146
set(ar_tool ${CMAKE_CXX_COMPILER_AR})
154147
endif()
155148

156149
add_custom_command(
157-
COMMAND ${ar_tool} -M < ${CMAKE_BINARY_DIR}/${bundled_tgt_name}.ar
158-
OUTPUT ${bundled_tgt_full_name}
159-
COMMENT "Bundling ${bundled_tgt_name}"
160-
VERBATIM)
161-
elseif(MSVC)
162-
find_program(lib_tool lib)
163-
164-
foreach(tgt IN LISTS static_libs)
165-
list(APPEND static_libs_full_names $<TARGET_FILE:${tgt}>)
166-
endforeach()
167-
168-
add_custom_command(
169-
COMMAND ${lib_tool} /NOLOGO /OUT:${bundled_tgt_full_name} ${static_libs_full_names}
170-
OUTPUT ${bundled_tgt_full_name}
171-
COMMENT "Bundling ${bundled_tgt_name}"
172-
VERBATIM)
150+
COMMAND ${ar_tool} -M < ${CMAKE_CURRENT_BINARY_DIR}/${bundled_tgt_name}.ar
151+
OUTPUT ${bundled_tgt_full_name}
152+
COMMENT "Bundling ${bundled_tgt_name}"
153+
VERBATIM)
173154
else()
174155
message(FATAL_ERROR "Unknown bundle scenario!")
175156
endif()
@@ -178,26 +159,54 @@ function(bundle_static_library tgt_name bundled_tgt_name)
178159
add_dependencies(bundling_target ${tgt_name})
179160

180161
add_library(${bundled_tgt_name} STATIC IMPORTED)
181-
set_target_properties(${bundled_tgt_name} ${bundled_target_full_name}
182-
PROPERTIES
183-
IMPORTED_LOCATION ${bundled_tgt_full_name}
184-
INTERFACE_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:${tgt_name},INTERFACE_INCLUDE_DIRECTORIES>
185-
LIBRARY_OUTPUT_DIRECTORY ${DIST_DIR}
162+
set_target_properties(${bundled_tgt_name} PROPERTIES
163+
IMPORTED_LOCATION ${bundled_tgt_full_name}
164+
INTERFACE_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:${tgt_name},INTERFACE_INCLUDE_DIRECTORIES>
165+
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
186166
)
187167
add_dependencies(${bundled_tgt_name} bundling_target)
188168

189169
endfunction()
190170
bundle_static_library(fastly-thin fastly)
191171

192-
file(GLOB_RECURSE FASTLY_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/**/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/*.h")
172+
file(GLOB_RECURSE FASTLY_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/**/*.h")
193173
foreach(f ${FASTLY_HEADERS})
194-
file(RELATIVE_PATH fr "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp" ${f})
195-
configure_file(${f} ${DIST_DIR}/fastly/${fr} COPYONLY)
196-
list(APPEND incls "#include \"${fr}\"\n")
174+
file(RELATIVE_PATH fr "${CMAKE_CURRENT_SOURCE_DIR}/include" ${f})
175+
list(APPEND incls "#include <${fr}>\n")
197176
endforeach(f)
198-
list(APPEND incls "#include \"expected.h\"\n")
199-
file(WRITE ${DIST_DIR}/fastly/sdk.h ${incls})
177+
list(APPEND incls "#include <fastly/expected.h>\n")
178+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/include/fastly/sdk.h ${incls})
179+
180+
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
181+
include(CTest)
182+
endif()
183+
if (BUILD_TESTING)
184+
add_test(NAME fastly_test
185+
COMMAND cargo test
186+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
187+
endif()
188+
189+
190+
include(CMakePackageConfigHelpers)
191+
write_basic_package_version_file(
192+
fastly-config-version.cmake
193+
VERSION ${PACKAGE_VERSION}
194+
COMPATIBILITY AnyNewerVersion
195+
)
196+
197+
include(GNUInstallDirs)
198+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/fastly-config-version.cmake
199+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/fastly
200+
)
201+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/fastly-config.cmake
202+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/fastly
203+
)
204+
205+
install(FILES ${bundled_tgt_full_name}
206+
DESTINATION ${CMAKE_INSTALL_LIBDIR})
207+
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/fastly
208+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
209+
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/fastly
210+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
211+
200212

201-
add_test(NAME fastly_test
202-
COMMAND cargo test
203-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ one used by your `rustc`.
2323

2424
The build script assumes you're installing `wasi-sdk` to `/opt/wasi-sdk`. You
2525
can specify a custom path using `--set wasi-sdk /path/to/wasi-sdk-dist` in
26-
`just`, or `-DWASI_SDK=/path/to/wasi-sdk-dist` if using `cmake` along.
26+
`just`, or by supplying the relevant `wasi-sdk-p1.cmake` file with `-DCMAKE_TOOLCHAIN_FILE` if using CMake directly.
2727

2828
### Example(s)
2929

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ simply reference the `quickstart` project for a working example configuration.
5656

5757
All header files are included in the `fastly/` folder. You can choose to import
5858
individual headers only for the things you need, or to import the entire Fastly
59-
SDK using `#include "fastly/sdk.h"`.
59+
SDK using `#include <fastly/sdk.h>`.
6060

6161
#### Building from source
6262

cmake/fastly-config.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
include(${CMAKE_CURRENT_LIST_DIR}/fastly-config-version.cmake)
2+
3+
add_library(fastly::fastly STATIC IMPORTED)
4+
5+
set_target_properties(fastly::fastly PROPERTIES
6+
IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/../../libfastly.a"
7+
INTERFACE_COMPILE_FEATURES "cxx_std_20"
8+
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/../../../include"
9+
)
10+
11+
set(FASTLY_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../include")

examples/CMakeLists.txt

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
cmake_minimum_required(VERSION 3.15)
2-
if(!WASI_SDK)
3-
set(WASI_SDK "/opt/wasi-sdk")
4-
endif()
52
if(!EXAMPLE_NAME)
63
set(EXAMPLE_NAME "echo")
74
endif()
@@ -12,36 +9,28 @@ else ()
129
set(TARGET_DIR "release")
1310
endif ()
1411

15-
set(CMAKE_C_COMPILER "${WASI_SDK}/bin/clang")
16-
set(CMAKE_CXX_COMPILER "${WASI_SDK}/bin/clang++")
17-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
12+
project(cxx_example)
13+
14+
add_link_options(-L${WASI_SDK_PREFIX}/share/wasi-sysroot/lib/wasm32-wasi)
15+
16+
add_subdirectory(.. ../../target)
17+
18+
add_executable(${EXAMPLE_NAME} ${EXAMPLE_NAME}.cpp)
19+
target_compile_options(${EXAMPLE_NAME} PRIVATE -Wall -Wextra -Werror -fno-exceptions)
1820

1921
option(ENABLE_LTO "Enable cross language linking time optimization" OFF)
2022
if(ENABLE_LTO)
2123
include(CheckIPOSupported)
2224
check_ipo_supported(RESULT supported OUTPUT error)
2325
if(supported)
2426
message(STATUS "IPO / LTO enabled")
25-
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
26-
add_link_options(-fuse-ld=lld)
27+
set_target_properties(${EXAMPLE_NAME} PROPERTIES CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
28+
target_link_options(${EXAMPLE_NAME} PRIVATE -fuse-ld=lld)
2729
else()
2830
message(STATUS "IPO / LTO not supported: <${error}>")
2931
endif()
3032
endif()
31-
if (POLICY CMP0048)
32-
cmake_policy(SET CMP0048 NEW)
33-
endif ()
34-
35-
project(cxx_example)
36-
37-
set (CMAKE_CXX_STANDARD 20)
38-
39-
add_link_options(-L${WASI_SDK}/share/wasi-sysroot/lib/wasm32-wasi)
40-
41-
add_subdirectory(.. ../../target)
42-
43-
add_executable(${EXAMPLE_NAME} ${EXAMPLE_NAME}.cpp)
4433

4534
set_target_properties(${EXAMPLE_NAME} PROPERTIES SUFFIX .wasm)
4635
target_include_directories(${EXAMPLE_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/../../${TARGET_DIR})
47-
target_link_libraries(${EXAMPLE_NAME} fastly-thin)
36+
target_link_libraries(${EXAMPLE_NAME} fastly::thin)
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef FASTLY_BACKEND_H
22
#define FASTLY_BACKEND_H
33

4-
#include "error.h"
5-
#include "http/request.h"
6-
#include "sdk-sys.h"
7-
#include "util.h"
4+
#include <fastly/error.h>
5+
#include <fastly/http/request.h>
6+
#include <fastly/sdk-sys.h>
87
#include <chrono>
98
#include <string>
109
#include <string_view>
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
#ifndef FASTLY_CONFIG_STORE_H
22
#define FASTLY_CONFIG_STORE_H
33

4-
#include "error.h"
5-
#include "sdk-sys.h"
6-
#include "util.h"
4+
#include <fastly/error.h>
5+
#include <fastly/sdk-sys.h>
76
#include <optional>
87
#include <string>
98
#include <string_view>

0 commit comments

Comments
 (0)