|
1 | | -set(CMAKE_MINIMUM_REQUIRED_VERSION 3.2) |
| 1 | +cmake_minimum_required(VERSION 3.2) |
2 | 2 |
|
3 | 3 | set(CMAKE_CXX_STANDARD 11) |
4 | 4 | set(CMAKE_POSITION_INDEPENDENT_CODE true) |
5 | 5 |
|
6 | | -if(LIBCURL_FOUND) |
7 | | - add_definitions(-DHAVE_LIBCURL=1) |
8 | | -endif() |
9 | | -if(LIBSOCKET_FOUND) |
10 | | - add_definitions(-DHAVE_LIBSOCKET=1) |
11 | | -endif() |
| 6 | +# fix CPR target |
| 7 | +target_include_directories(cpr PUBLIC ${CPR_INCLUDE_DIRS}) |
12 | 8 |
|
13 | | -# include cpr |
14 | | -include_directories(${CPR_INCLUDE_DIRS}) |
15 | | - |
16 | | -# config.h contains some global defines, our config.h.in is a modified version of the upstream config.h.in to make it |
17 | | -# integrate with CMake |
18 | | -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) |
19 | | -# since there's headers in the build directory now, include that as well |
20 | | -include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
21 | | - |
22 | | -set(ZSYNC2_DEPS ${CPR_LIBRARIES} libzsync hashlib) |
23 | | -set(LIBZSYNC2_DEPS ${ZSYNC2_DEPS}) |
24 | | -set(ZSYNC2_HDRS |
| 9 | +# core library |
| 10 | +add_library(libzsync2 SHARED |
| 11 | + zsclient.cpp |
| 12 | + legacy_http.c |
| 13 | + legacy_progress.c |
| 14 | + zsmake.cpp |
| 15 | + ${ZSYNC2_SRCS} ${ZSYNC2_HDRS} |
25 | 16 | format_string.h |
26 | 17 | ${CMAKE_CURRENT_BINARY_DIR}/config.h |
27 | 18 | ${PROJECT_SOURCE_DIR}/include/zsutil.h |
28 | 19 | ${PROJECT_SOURCE_DIR}/include/zsclient.h |
29 | 20 | ${PROJECT_SOURCE_DIR}/include/zsglobal.h |
30 | 21 | ${PROJECT_SOURCE_DIR}/include/zsmake.h |
31 | 22 | ) |
32 | | -set(ZSYNC2_SRCS zsclient.cpp legacy_http.c legacy_progress.c zsmake.cpp) |
33 | | - |
34 | | -# core library |
35 | | -add_library(libzsync2 ${ZSYNC2_SRCS}) |
36 | 23 | # since the target is called libsomething, one doesn't need CMake's additional lib prefix |
37 | 24 | set_target_properties(libzsync2 PROPERTIES PREFIX "") |
38 | | -target_link_libraries(libzsync2 PUBLIC ${LIBZSYNC2_DEPS}) |
39 | | -target_include_directories(libzsync2 PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>) |
| 25 | +target_link_libraries(libzsync2 PRIVATE cpr libzsync hashlib) |
| 26 | +target_include_directories(libzsync2 |
| 27 | + PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> |
| 28 | + INTERFACE $<INSTALL_INTERFACE:include> |
| 29 | +) |
| 30 | + |
| 31 | +if(LIBCURL_FOUND) |
| 32 | + target_compile_definitions(libzsync2 PRIVATE HAVE_LIBCURL=1) |
| 33 | +endif() |
| 34 | +if(LIBSOCKET_FOUND) |
| 35 | + target_compile_definitions(libzsync2 PRIVATE HAVE_LIBSOCKET=1) |
| 36 | +endif() |
40 | 37 |
|
41 | 38 | # core executable |
42 | | -add_executable(zsync2 ${ZSYNC2_SRCS} ${ZSYNC2_HDRS} main.cpp) |
43 | | -target_include_directories(zsync2 PRIVATE ${PROJECT_SOURCE_DIR}/include) |
44 | | -target_link_libraries(zsync2 PRIVATE ${LIBZSYNC2_DEPS} args) |
| 39 | +add_executable(zsync2 main.cpp) |
| 40 | +target_link_libraries(zsync2 PRIVATE libzsync2 args) |
45 | 41 | target_compile_definitions(zsync2 PRIVATE -DZSYNC_STANDALONE) |
| 42 | +# TODO: get rid of this |
| 43 | +target_link_libraries(zsync2 PRIVATE cpr) |
46 | 44 |
|
47 | 45 | ## zsyncmake2 executable |
48 | | -add_executable(zsyncmake2 ${ZSYNC2_SRCS} ${ZSYNC2_HDRS} make_main.cpp) |
49 | | -target_link_libraries(zsyncmake2 ${ZSYNC2_DEPS} args) |
| 46 | +add_executable(zsyncmake2 make_main.cpp) |
| 47 | +target_link_libraries(zsyncmake2 PRIVATE libzsync2 args) |
| 48 | +# TODO: get rid of this |
| 49 | +target_link_libraries(zsyncmake2 PRIVATE cpr) |
50 | 50 |
|
51 | 51 | # install targets |
52 | 52 | install( |
|
0 commit comments