11cmake_minimum_required (VERSION 3.10)
22
3- find_program (CLANG_FOUND clang)
4- find_program (CLANGXX_FOUND clang++)
5- if (CLANG_FOUND AND CLANGXX_FOUND)
6- set (CMAKE_C_COMPILER ${CLANG_FOUND} )
7- set (CMAKE_CXX_COMPILER ${CLANGXX_FOUND} )
8- else ()
9- message (FATAL_ERROR "Clang and Clang++ are required!" )
10- endif ()
3+ # NOTES
4+ #
5+ # HOW TO CHANGE THE COMPILER?
6+ # If you want to use specific compiler, consider using -C | --cc | --cxx cmake-js flags.
7+ #
8+ # WINDOWS AND MINGW ISSUES?
9+ # cmake-js doesn't support MinGW Makefiles -> https://github.com/cmake-js/cmake-js/issues/195
10+ # /DELAYLOAD:NODE.EXE: No such file or directory -> https://github.com/cmake-js/cmake-js/issues/200
11+ # cmake-js adds /DELAYLOAD:NODE.EXE + there is not an easy solution -> Move to node-gyp
12+ # I've played with paths + setting the CMAKE_SHARED_LINKER_FLAGS but all that is N/A.
13+ # The following does not work because CMake changes the string to be Windows path.
14+ # set(CMAKE_SHARED_LINKER_FLAGS "/DELAYLOAD:/c/Program\\ Files/nodejs/node.exe")
1115
1216project (nodemgclient VERSION 0.1.0)
1317
18+ find_package (OpenSSL REQUIRED)
19+
1420set (CMAKE_C_STANDARD 11)
1521set (CMAKE_CXX_STANDARD 17)
1622set (C_STANDARD_REQUIRED ON )
@@ -27,7 +33,13 @@ set_project_warnings(project_warnings)
2733
2834include (ExternalProject)
2935
30- # Add mgclient as a library.
36+ if (WIN32 AND MINGW)
37+ message (FATAL_ERROR "ON WINDOWS BUILD UNDER MINGW NOT YES POSSIBLE" )
38+ elseif (APPLE )
39+ message (FATAL_ERROR "ON APPLE BUILD NOT YET POSSIBLE" )
40+ endif ()
41+
42+ # Add mgclient as an imported library.
3143ExternalProject_Add(mgclient-proj
3244 PREFIX mgclient
3345 GIT_REPOSITORY https://github.com/memgraph/mgclient.git
@@ -39,18 +51,27 @@ ExternalProject_Get_Property(mgclient-proj install_dir)
3951set (MGCLIENT_ROOT ${install_dir} )
4052set (MGCLIENT_INCLUDE_DIRS ${MGCLIENT_ROOT} /include
4153 CACHE INTERNAL "Path to mgclient include directory" )
42- set (MGCLIENT_LIBRARY_PATH ${MGCLIENT_ROOT} /lib/libmgclient.so)
54+ if (UNIX AND NOT APPLE )
55+ set (MGCLIENT_LIBRARY_PATH ${MGCLIENT_ROOT} /lib/libmgclient.so)
56+ elseif (WIN32 AND MINGW)
57+ set (MGCLIENT_LIBRARY_PATH ${MGCLIENT_ROOT} /lib/libmgclient.dll)
58+ endif ()
59+ message (STATUS "MGCLIENT_LIBRARY_PATH: ${MGCLIENT_LIBRARY_PATH} " )
4360set (MGCLIENT_LIBRARY mgclient-lib)
4461add_library (${MGCLIENT_LIBRARY} SHARED IMPORTED )
45- set_target_properties (${MGCLIENT_LIBRARY} PROPERTIES
46- IMPORTED_LOCATION ${MGCLIENT_LIBRARY_PATH} )
62+ set_property (TARGET ${MGCLIENT_LIBRARY} PROPERTY IMPORTED_LOCATION ${MGCLIENT_LIBRARY_PATH} )
63+ if (WIN32 AND MINGW)
64+ set_property (TARGET ${MGCLIENT_LIBRARY} PROPERTY IMPORTED_IMPLIB ${MGCLIENT_ROOT} /lib/libmgclient.dll.a)
65+ endif ()
4766add_dependencies (${MGCLIENT_LIBRARY} mgclient-proj)
67+ message (STATUS "MGCLIENT_LIBRARY: ${MGCLIENT_LIBRARY} " )
4868
4969# Define the addon.
5070include_directories (${CMAKE_JS_INC} )
5171set (SOURCE_FILES src/addon.cpp src/connection.cpp src/glue.cpp
5272 src/record.cpp src/cursor.cpp)
5373add_library (${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC} )
74+ add_dependencies (${PROJECT_NAME} ${MGCLIENT_LIBRARY} )
5475set_target_properties (${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node" )
5576target_link_libraries (${PROJECT_NAME} PRIVATE
5677 ${CMAKE_JS_LIB} ${MGCLIENT_LIBRARY}
@@ -66,7 +87,7 @@ execute_process(COMMAND node -p "require('node-addon-api').include"
6687 OUTPUT_VARIABLE NODE_ADDON_API_DIR)
6788string (REPLACE "\n " "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR} )
6889string (REPLACE "\" " "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR} )
69- target_include_directories (${PROJECT_NAME} SYSTEM PRIVATE ${NODE_ADDON_API_DIR} )
90+ target_include_directories (${PROJECT_NAME} SYSTEM PRIVATE " ${NODE_ADDON_API_DIR} " )
7091
7192# Added because of BigInt support.
7293add_definitions (-DNAPI_EXPERIMENTAL)
0 commit comments