Current section

Files

Jump to
dll_loader_helper CMakeLists.txt
Raw

CMakeLists.txt

cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(dll_loader_helper CXX)
if(WIN32)
if(DEFINED MIX_APP_PATH AND DEFINED ${MIX_APP_PATH})
set(PRIV_DIR "${MIX_APP_PATH}/priv")
else()
set(PRIV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/priv")
endif()
set(C_SRC "${CMAKE_CURRENT_SOURCE_DIR}/c_src")
set(NIF_SRC "${C_SRC}/dll_loader_helper.cpp")
if(DEFINED $ENV{ERTS_INCLUDE_DIR})
set(ERTS_INCLUDE_DIR "$ENV{ERTS_INCLUDE_DIR}")
else()
execute_process(COMMAND powershell -command "erl -noshell -s init stop -eval \"io:format('~ts/erts-~ts/include/', [code:root_dir(), erlang:system_info(version)]).\"" OUTPUT_VARIABLE ERTS_INCLUDE_DIR)
endif()
include_directories(${ERTS_INCLUDE_DIR})
include_directories(${C_SRC})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{CFLAGS} /O2 /EHsc /bigobj /wd4996 /wd4267 /wd4068")
add_library(dll_loader_helper SHARED
${NIF_SRC}
)
set_property(TARGET dll_loader_helper PROPERTY CXX_STANDARD 11)
set_target_properties(dll_loader_helper PROPERTIES PREFIX "")
set_target_properties(dll_loader_helper PROPERTIES SUFFIX ".dll")
if(${CMAKE_VERSION} VERSION_GREATER "3.9")
cmake_policy(SET CMP0068 NEW)
endif()
set_target_properties(dll_loader_helper PROPERTIES
INSTALL_RPATH_USE_LINK_PATH TRUE
BUILD_WITH_INSTALL_RPATH TRUE
)
install(
TARGETS dll_loader_helper
DESTINATION "${PRIV_DIR}")
endif()