• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Build dart binding shared library
2
3file(READ ${CMAKE_CURRENT_SOURCE_DIR}/version.txt _VERSION)
4set_property(GLOBAL PROPERTY EJDB2_DART_VERSION_PROPERTY
5                             "${PROJECT_VERSION}${_VERSION}")
6set(EJDB2_DART_VERSION "${PROJECT_VERSION}${_VERSION}")
7
8add_library(ejdb2_dart SHARED lib/ejdb2_dart.c)
9target_link_libraries(ejdb2_dart ejdb2_s ${PROJECT_LLIBRARIES})
10
11set(dart_COMPILE_FLAGS " ")
12set(dart_LINK_FLAGS " ")
13
14if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
15  set(dart_LINK_FLAGS "-dynamic -undefined dynamic_lookup")
16endif()
17
18set(DART_PUB_DIR ${CMAKE_CURRENT_BINARY_DIR}/ejdb2_dart)
19
20configure_file(lib/ejdb2_dart.c ${DART_PUB_DIR}/lib/ejdb2_dart.c COPYONLY)
21configure_file(lib/ejdb2_dart.dart ${DART_PUB_DIR}/lib/ejdb2_dart.dart COPYONLY)
22configure_file(test/ejdb2_dart_test.dart
23               ${DART_PUB_DIR}/test/ejdb2_dart_test.dart COPYONLY)
24configure_file(example/example.dart ${DART_PUB_DIR}/example/example.dart
25               COPYONLY)
26configure_file(example/isolate.dart ${DART_PUB_DIR}/example/isolate.dart
27               COPYONLY)
28
29configure_file(README.md ${DART_PUB_DIR}/README.md COPYONLY)
30configure_file(LICENSE ${DART_PUB_DIR}/LICENSE COPYONLY)
31configure_file(CHANGELOG.md ${DART_PUB_DIR}/CHANGELOG.md @ONLY)
32configure_file(pubspec.yaml.in ${DART_PUB_DIR}/pubspec.yaml @ONLY)
33configure_file(analysis_options.yaml ${DART_PUB_DIR}/analysis_options.yaml
34               COPYONLY)
35configure_file(.packages ${DART_PUB_DIR}/.packages COPYONLY)
36
37set_target_properties(
38  ejdb2_dart
39  PROPERTIES COMPILE_FLAGS ${dart_COMPILE_FLAGS} LINK_FLAGS ${dart_LINK_FLAGS}
40             LIBRARY_OUTPUT_DIRECTORY ${DART_PUB_DIR}/lib)
41
42if(CMAKE_BUILD_TYPE STREQUAL "Release")
43  add_custom_command(
44    TARGET ejdb2_dart
45    POST_BUILD
46    COMMAND strip -s $<TARGET_FILE:ejdb2_dart>)
47endif()
48
49set_target_properties(
50  ejdb2_dart
51  PROPERTIES VERSION ${PROJECT_VERSION} OUTPUT_NAME ejdb2dart
52             SOVERSION ${PROJECT_VERSION_MAJOR} DEFINE_SYMBOL IW_API_EXPORTS)
53
54install(
55  TARGETS ejdb2_dart
56  FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR}
57  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
58  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
59  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
60  PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
61
62install(FILES ${DART_PUB_DIR}/lib/ejdb2_dart.dart ${DART_PUB_DIR}/README.md
63        DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/dart)
64
65install(FILES ${DART_PUB_DIR}/example/example.dart
66              ${DART_PUB_DIR}/example/isolate.dart
67        DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/dart/example)
68
69if(BUILD_TESTS)
70  find_program(DART_EXEC dart HINTS /usr/bin /usr/local/bin)
71  if(DART_EXEC MATCHES "DART_EXEC-NOTFOUND")
72    message(FATAL_ERROR "`dart` executable not found")
73  endif()
74  find_program(PUB_EXEC pub /usr/bin /usr/local/bin)
75  if(PUB_EXEC MATCHES "PUB_EXEC-NOTFOUND")
76    set(PUB_EXEC ${DART_EXEC} pub)
77  endif()
78
79  add_custom_command(
80    COMMAND ${PUB_EXEC} get
81    OUTPUT ${DART_PUB_DIR}/pubspec.lock
82    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pubspec.yaml
83    WORKING_DIRECTORY ${DART_PUB_DIR}
84    VERBATIM)
85  add_custom_target(pub_get ALL DEPENDS ${DART_PUB_DIR}/pubspec.lock)
86
87  add_test(
88    NAME ejdb2dart
89    COMMAND ${DART_EXEC} --enable-asserts ./test/ejdb2_dart_test.dart
90    WORKING_DIRECTORY ${DART_PUB_DIR})
91endif(BUILD_TESTS)
92