From 4be6a307880c12c8a94ad946f3cdd3b45978f498 Mon Sep 17 00:00:00 2001 From: abergeron <bergearn@iro.umontreal.ca> Date: Fri, 8 Jun 2018 13:23:34 -0400 Subject: [PATCH] Unite cmake builds (#1248) --- CMakeLists.txt | 40 +++- nnvm/CMakeLists.txt | 140 ------------- nnvm/cmake/Utils.cmake | 402 ------------------------------------ nnvm/python/nnvm/libinfo.py | 12 +- 4 files changed, 40 insertions(+), 554 deletions(-) delete mode 100644 nnvm/CMakeLists.txt delete mode 100644 nnvm/cmake/Utils.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ff74458f2..f3521433a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ tvm_option(INSTALL_DEV "Install compiler infrastructure" OFF) tvm_option(USE_CUDNN "Build with cuDNN" OFF) +include_directories(BEFORE "nnvm/include") include_directories("include") include_directories("HalideIR/src") include_directories("dlpack/include") @@ -68,8 +69,9 @@ else(MSVC) endif(MSVC) # add source group -FILE(GLOB_RECURSE GROUP_SOURCE "src/*.cc" "HalideIR/src/*.cpp") -FILE(GLOB_RECURSE GROUP_Include "src/*.h" "include/*.h" "HalideIR/src/*.h") +FILE(GLOB_RECURSE GROUP_SOURCE "src/*.cc" "HalideIR/src/*.cpp" "nnvm/src/*.cc") +FILE(GLOB_RECURSE GROUP_Include "src/*.h" "include/*.h" "HalideIR/src/*.h" + "nnvm/src/*.h" "nnvm/include/*.h") assign_source_group("Source" ${GROUP_SOURCE}) assign_source_group("Include" ${GROUP_Include}) @@ -82,7 +84,16 @@ file(GLOB COMPILER_SRCS src/pass/*.cc src/op/*.cc src/schedule/*.cc -) + ) + +file(GLOB_RECURSE NNVM_COMPILER_SRCS + nnvm/src/c_api/*.cc + nnvm/src/core/*.cc + nnvm/src/pass/*.cc + nnvm/src/compiler/*.cc + nnvm/src/top/*.cc + ) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/topi/include) file(GLOB TOPI_SRCS topi/src/*.cc @@ -252,10 +263,21 @@ list(APPEND RUNTIME_SRCS ${GROUP_Include}) add_library(tvm SHARED ${COMPILER_SRCS} ${RUNTIME_SRCS}) add_library(tvm_topi SHARED ${TOPI_SRCS}) add_library(tvm_runtime SHARED ${RUNTIME_SRCS}) +add_library(nnvm_compiler SHARED ${NNVM_COMPILER_SRCS}) target_link_libraries(tvm ${TVM_LINKER_LIBS} ${TVM_RUNTIME_LINKER_LIBS}) target_link_libraries(tvm_topi tvm ${TVM_LINKER_LIBS} ${TVM_RUNTIME_LINKER_LIBS}) -target_link_libraries(tvm_runtime ${TVM_RUNTIME_LINKER_LIBS}) +target_link_libraries(tvm_runtime ${TVM_RUNTIME_LINKER_LIBS}) +target_link_libraries(nnvm_compiler tvm) + install(TARGETS tvm_runtime DESTINATION lib${LIB_SUFFIX}) + +if(WIN32) + install(TARGETS nnvm_compiler RUNTIME DESTINATION bin) + install(TARGETS nnvm_compiler ARCHIVE DESTINATION lib) +else() + install(TARGETS nnvm_compiler LIBRARY DESTINATION lib) +endif() + if (INSTALL_DEV) install(TARGETS tvm DESTINATION lib${LIB_SUFFIX}) install( @@ -277,13 +299,18 @@ if (INSTALL_DEV) DIRECTORY "dlpack/include/." DESTINATION "include" FILES_MATCHING PATTERN "*.h" - ) + ) + install( + DIRECTORY "nnvm/include/." DESTINATION "include" + FILES_MATCHING + PATTERN "*.h" + ) else(INSTALL_DEV) install( DIRECTORY "include/tvm/runtime/." DESTINATION "include/tvm/runtime" FILES_MATCHING PATTERN "*.h" - ) + ) endif(INSTALL_DEV) if(MSVC) @@ -291,4 +318,5 @@ if(MSVC) target_compile_definitions(tvm_runtime PRIVATE -DHalide_EXPORTS) target_compile_definitions(tvm PRIVATE -DTVM_EXPORTS) target_compile_definitions(tvm_runtime PRIVATE -DTVM_EXPORTS) + target_compile_definitions(nnvm_compiler PRIVATE -DNNVM_EXPORTS) endif() diff --git a/nnvm/CMakeLists.txt b/nnvm/CMakeLists.txt deleted file mode 100644 index 7523b5a19..000000000 --- a/nnvm/CMakeLists.txt +++ /dev/null @@ -1,140 +0,0 @@ -cmake_minimum_required(VERSION 2.8.7) - -project(nnvm C CXX) - -list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) - -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/build/private/local_config.cmake) - include(${CMAKE_CURRENT_SOURCE_DIR}/build/private/local_config.cmake) -endif() - -include(cmake/Utils.cmake) -if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/config.cmake) - include(${CMAKE_CURRENT_BINARY_DIR}/config.cmake) -else() - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/config.cmake) - include(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake) - endif() -endif() - -# include path -include_directories(BEFORE "include") -include_directories("../include") -include_directories("../dlpack/include") -include_directories("../HalideIR/src") -include_directories("../topi/include") - -set(NNVM_LINKER_LIBS "") -set(NNVM_COMPILER_LINKER_LIBS "") -add_definitions(-DNNVM_EXPORTS) - -# Build a shared lib (libnnvm.so) by default -option(BUILD_SHARED_NNVM "Build a shared nnvm lib" ON) -option(BUILD_STATIC_NNVM "Build a static nnvm lib" OFF) -option(USE_MSVC_MT "Build with MT" OFF) - -# compile -if(MSVC) - add_definitions(-DDMLC_USE_CXX11) - add_definitions(-DDMLC_STRICT_CXX11) - if (USE_MSVC_MT) - foreach(flag_var - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - if(${flag_var} MATCHES "/MD") - string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MD") - endforeach(flag_var) - endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") - find_library(TVM_LIB tvm - HINTS ${CMAKE_CURRENT_SOURCE_DIR}/../build/Release) - message(STATUS "Build with TVM libary: " ${TVM_LIB}) - list(APPEND NNVM_COMPILER_LINKER_LIBS ${TVM_LIB}) -else(MSVC) - include(CheckCXXCompilerFlag) - check_cxx_compiler_flag("-std=c++11" SUPPORT_CXX11) - set(CMAKE_C_FLAGS "-O3 -Wall -std=c++11 -fPIC") - set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS}) -endif(MSVC) - -if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup") -endif() - - -mxnet_source_group("Include\\c_api" GLOB "src/c_api/*.h") -mxnet_source_group("Include\\core" GLOB "src/core/*.h") -mxnet_source_group("Include\\pass" GLOB "src/pass/*.h") -mxnet_source_group("Include\\nnvm" GLOB "include/nnvm/*.h") -mxnet_source_group("Include\\dmlc" GLOB "include/dmlc/*.h") - -mxnet_source_group("Source" GLOB "src/*.cc") -mxnet_source_group("Source\\c_api" GLOB "src/c_api/*.cc") -mxnet_source_group("Source\\core" GLOB "src/core/*.cc") -mxnet_source_group("Source\\pass" GLOB "src/pass/*.cc") - - -file(GLOB_RECURSE SOURCE - src/c_api/*.cc - src/core/*.cc - src/pass/*.cc) - -file(GLOB_RECURSE COMPILER_SRCS - src/compiler/*.cc - src/top/*.cc -) - -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../dmlc-core/CMakeLists.txt) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../dmlc-core/include) -elseif(DMLC_CORE_PATH) - include_directories(${DMLC_CORE_PATH}/include) -endif() - -if(BUILD_SHARED_NNVM) - add_library(nnvm SHARED ${SOURCE}) - target_link_libraries(nnvm ${nnvm_LINKER_LIBS}) -endif() -if(BUILD_STATIC_NNVM) - add_library(nnvm_static STATIC ${SOURCE}) - target_link_libraries(nnvm_static ${nnvm_LINKER_LIBS}) - set_target_properties(nnvm_static PROPERTIES OUTPUT_NAME "nnvm") -endif() - -add_library(nnvm_compiler SHARED ${COMPILER_SRCS} ${SOURCE}) -target_link_libraries(nnvm_compiler ${NNVM_COMPILER_LINKER_LIBS} ${NNVM_LINKER_LIBS}) - -if(INSTALL_INCLUDE_DIR) - add_custom_command(TARGET nnvm POST_BUILD - COMMAND COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_SOURCE_DIR}/include ${INSTALL_INCLUDE_DIR}/ - ) -endif() - -# ---[ Install lib, header and docs -if(BUILD_SHARED_NNVM) - if(WIN32) - install(TARGETS nnvm RUNTIME DESTINATION bin) - install(TARGETS nnvm ARCHIVE DESTINATION lib) - install(TARGETS nnvm_compiler RUNTIME DESTINATION bin) - install(TARGETS nnvm_compiler ARCHIVE DESTINATION lib) - else() - install(TARGETS nnvm LIBRARY DESTINATION lib) - install(TARGETS nnvm_compiler LIBRARY DESTINATION lib) - endif() -endif() -if(BUILD_STATIC_NNVM) - install(TARGETS nnvm_static ARCHIVE DESTINATION lib) -endif() -install(DIRECTORY include DESTINATION .) -install(DIRECTORY docs DESTINATION .) - -# ---[ Linter target -if(MSVC) - find_package(PythonInterp 2) - set(PYTHON2_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to the python 2.x executable") - find_package(PythonInterp 3) - set(PYTHON3_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to the python 3.x executable") -endif() -set(LINT_DIRS include src scripts) -add_custom_target(nnvm_lint COMMAND ${CMAKE_COMMAND} -DMSVC=${MSVC} -DPYTHON2_EXECUTABLE=${PYTHON2_EXECUTABLE} -DPYTHON3_EXECUTABLE=${PYTHON3_EXECUTABLE} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -DLINT_DIRS=${LINT_DIRS} -DPROJECT_NAME=dmlc -P ${PROJECT_SOURCE_DIR}/cmake/lint.cmake) diff --git a/nnvm/cmake/Utils.cmake b/nnvm/cmake/Utils.cmake deleted file mode 100644 index 0308645df..000000000 --- a/nnvm/cmake/Utils.cmake +++ /dev/null @@ -1,402 +0,0 @@ -# For cmake_parse_arguments -include(CMakeParseArguments) - -################################################################################################ -# Command alias for debugging messages -# Usage: -# dmsg(<message>) -function(dmsg) - message(STATUS ${ARGN}) -endfunction() - -################################################################################################ -# Removes duplicates from list(s) -# Usage: -# mxnet_list_unique(<list_variable> [<list_variable>] [...]) -macro(mxnet_list_unique) - foreach(__lst ${ARGN}) - if(${__lst}) - list(REMOVE_DUPLICATES ${__lst}) - endif() - endforeach() -endmacro() - -################################################################################################ -# Clears variables from list -# Usage: -# mxnet_clear_vars(<variables_list>) -macro(mxnet_clear_vars) - foreach(_var ${ARGN}) - unset(${_var}) - endforeach() -endmacro() - -################################################################################################ -# Removes duplicates from string -# Usage: -# mxnet_string_unique(<string_variable>) -function(mxnet_string_unique __string) - if(${__string}) - set(__list ${${__string}}) - separate_arguments(__list) - list(REMOVE_DUPLICATES __list) - foreach(__e ${__list}) - set(__str "${__str} ${__e}") - endforeach() - set(${__string} ${__str} PARENT_SCOPE) - endif() -endfunction() - -################################################################################################ -# Prints list element per line -# Usage: -# mxnet_print_list(<list>) -function(mxnet_print_list) - foreach(e ${ARGN}) - message(STATUS ${e}) - endforeach() -endfunction() - -################################################################################################ -# Function merging lists of compiler flags to single string. -# Usage: -# mxnet_merge_flag_lists(out_variable <list1> [<list2>] [<list3>] ...) -function(mxnet_merge_flag_lists out_var) - set(__result "") - foreach(__list ${ARGN}) - foreach(__flag ${${__list}}) - string(STRIP ${__flag} __flag) - set(__result "${__result} ${__flag}") - endforeach() - endforeach() - string(STRIP ${__result} __result) - set(${out_var} ${__result} PARENT_SCOPE) -endfunction() - -################################################################################################ -# Converts all paths in list to absolute -# Usage: -# mxnet_convert_absolute_paths(<list_variable>) -function(mxnet_convert_absolute_paths variable) - set(__dlist "") - foreach(__s ${${variable}}) - get_filename_component(__abspath ${__s} ABSOLUTE) - list(APPEND __list ${__abspath}) - endforeach() - set(${variable} ${__list} PARENT_SCOPE) -endfunction() - -################################################################################################ -# Reads set of version defines from the header file -# Usage: -# mxnet_parse_header(<file> <define1> <define2> <define3> ..) -macro(mxnet_parse_header FILENAME FILE_VAR) - set(vars_regex "") - set(__parnet_scope OFF) - set(__add_cache OFF) - foreach(name ${ARGN}) - if("${name}" STREQUAL "PARENT_SCOPE") - set(__parnet_scope ON) - elseif("${name}" STREQUAL "CACHE") - set(__add_cache ON) - elseif(vars_regex) - set(vars_regex "${vars_regex}|${name}") - else() - set(vars_regex "${name}") - endif() - endforeach() - if(EXISTS "${FILENAME}") - file(STRINGS "${FILENAME}" ${FILE_VAR} REGEX "#define[ \t]+(${vars_regex})[ \t]+[0-9]+" ) - else() - unset(${FILE_VAR}) - endif() - foreach(name ${ARGN}) - if(NOT "${name}" STREQUAL "PARENT_SCOPE" AND NOT "${name}" STREQUAL "CACHE") - if(${FILE_VAR}) - if(${FILE_VAR} MATCHES ".+[ \t]${name}[ \t]+([0-9]+).*") - string(REGEX REPLACE ".+[ \t]${name}[ \t]+([0-9]+).*" "\\1" ${name} "${${FILE_VAR}}") - else() - set(${name} "") - endif() - if(__add_cache) - set(${name} ${${name}} CACHE INTERNAL "${name} parsed from ${FILENAME}" FORCE) - elseif(__parnet_scope) - set(${name} "${${name}}" PARENT_SCOPE) - endif() - else() - unset(${name} CACHE) - endif() - endif() - endforeach() -endmacro() - -################################################################################################ -# Reads single version define from the header file and parses it -# Usage: -# mxnet_parse_header_single_define(<library_name> <file> <define_name>) -function(mxnet_parse_header_single_define LIBNAME HDR_PATH VARNAME) - set(${LIBNAME}_H "") - if(EXISTS "${HDR_PATH}") - file(STRINGS "${HDR_PATH}" ${LIBNAME}_H REGEX "^#define[ \t]+${VARNAME}[ \t]+\"[^\"]*\".*$" LIMIT_COUNT 1) - endif() - - if(${LIBNAME}_H) - string(REGEX REPLACE "^.*[ \t]${VARNAME}[ \t]+\"([0-9]+).*$" "\\1" ${LIBNAME}_VERSION_MAJOR "${${LIBNAME}_H}") - string(REGEX REPLACE "^.*[ \t]${VARNAME}[ \t]+\"[0-9]+\\.([0-9]+).*$" "\\1" ${LIBNAME}_VERSION_MINOR "${${LIBNAME}_H}") - string(REGEX REPLACE "^.*[ \t]${VARNAME}[ \t]+\"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ${LIBNAME}_VERSION_PATCH "${${LIBNAME}_H}") - set(${LIBNAME}_VERSION_MAJOR ${${LIBNAME}_VERSION_MAJOR} ${ARGN} PARENT_SCOPE) - set(${LIBNAME}_VERSION_MINOR ${${LIBNAME}_VERSION_MINOR} ${ARGN} PARENT_SCOPE) - set(${LIBNAME}_VERSION_PATCH ${${LIBNAME}_VERSION_PATCH} ${ARGN} PARENT_SCOPE) - set(${LIBNAME}_VERSION_STRING "${${LIBNAME}_VERSION_MAJOR}.${${LIBNAME}_VERSION_MINOR}.${${LIBNAME}_VERSION_PATCH}" PARENT_SCOPE) - - # append a TWEAK version if it exists: - set(${LIBNAME}_VERSION_TWEAK "") - if("${${LIBNAME}_H}" MATCHES "^.*[ \t]${VARNAME}[ \t]+\"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$") - set(${LIBNAME}_VERSION_TWEAK "${CMAKE_MATCH_1}" ${ARGN} PARENT_SCOPE) - endif() - if(${LIBNAME}_VERSION_TWEAK) - set(${LIBNAME}_VERSION_STRING "${${LIBNAME}_VERSION_STRING}.${${LIBNAME}_VERSION_TWEAK}" ${ARGN} PARENT_SCOPE) - else() - set(${LIBNAME}_VERSION_STRING "${${LIBNAME}_VERSION_STRING}" ${ARGN} PARENT_SCOPE) - endif() - endif() -endfunction() - -######################################################################################################## -# An option that the user can select. Can accept condition to control when option is available for user. -# Usage: -# mxnet_option(<option_variable> "doc string" <initial value or boolean expression> [IF <condition>]) -function(mxnet_option variable description value) - set(__value ${value}) - set(__condition "") - set(__varname "__value") - foreach(arg ${ARGN}) - if(arg STREQUAL "IF" OR arg STREQUAL "if") - set(__varname "__condition") - else() - list(APPEND ${__varname} ${arg}) - endif() - endforeach() - unset(__varname) - if("${__condition}" STREQUAL "") - set(__condition 2 GREATER 1) - endif() - - if(${__condition}) - if("${__value}" MATCHES ";") - if(${__value}) - option(${variable} "${description}" ON) - else() - option(${variable} "${description}" OFF) - endif() - elseif(DEFINED ${__value}) - if(${__value}) - option(${variable} "${description}" ON) - else() - option(${variable} "${description}" OFF) - endif() - else() - option(${variable} "${description}" ${__value}) - endif() - else() - unset(${variable} CACHE) - endif() -endfunction() - -################################################################################################ -# Utility macro for comparing two lists. Used for CMake debugging purposes -# Usage: -# mxnet_compare_lists(<list_variable> <list2_variable> [description]) -function(mxnet_compare_lists list1 list2 desc) - set(__list1 ${${list1}}) - set(__list2 ${${list2}}) - list(SORT __list1) - list(SORT __list2) - list(LENGTH __list1 __len1) - list(LENGTH __list2 __len2) - - if(NOT ${__len1} EQUAL ${__len2}) - message(FATAL_ERROR "Lists are not equal. ${__len1} != ${__len2}. ${desc}") - endif() - - foreach(__i RANGE 1 ${__len1}) - math(EXPR __index "${__i}- 1") - list(GET __list1 ${__index} __item1) - list(GET __list2 ${__index} __item2) - if(NOT ${__item1} STREQUAL ${__item2}) - message(FATAL_ERROR "Lists are not equal. Differ at element ${__index}. ${desc}") - endif() - endforeach() -endfunction() - -################################################################################################ -# Command for disabling warnings for different platforms (see below for gcc and VisualStudio) -# Usage: -# mxnet_warnings_disable(<CMAKE_[C|CXX]_FLAGS[_CONFIGURATION]> -Wshadow /wd4996 ..,) -macro(mxnet_warnings_disable) - set(_flag_vars "") - set(_msvc_warnings "") - set(_gxx_warnings "") - - foreach(arg ${ARGN}) - if(arg MATCHES "^CMAKE_") - list(APPEND _flag_vars ${arg}) - elseif(arg MATCHES "^/wd") - list(APPEND _msvc_warnings ${arg}) - elseif(arg MATCHES "^-W") - list(APPEND _gxx_warnings ${arg}) - endif() - endforeach() - - if(NOT _flag_vars) - set(_flag_vars CMAKE_C_FLAGS CMAKE_CXX_FLAGS) - endif() - - if(MSVC AND _msvc_warnings) - foreach(var ${_flag_vars}) - foreach(warning ${_msvc_warnings}) - set(${var} "${${var}} ${warning}") - endforeach() - endforeach() - elseif((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX) AND _gxx_warnings) - foreach(var ${_flag_vars}) - foreach(warning ${_gxx_warnings}) - if(NOT warning MATCHES "^-Wno-") - string(REPLACE "${warning}" "" ${var} "${${var}}") - string(REPLACE "-W" "-Wno-" warning "${warning}") - endif() - set(${var} "${${var}} ${warning}") - endforeach() - endforeach() - endif() - mxnet_clear_vars(_flag_vars _msvc_warnings _gxx_warnings) -endmacro() - -################################################################################################ -# Helper function get current definitions -# Usage: -# mxnet_get_current_definitions(<definitions_variable>) -function(mxnet_get_current_definitions definitions_var) - get_property(current_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS) - set(result "") - - foreach(d ${current_definitions}) - list(APPEND result -D${d}) - endforeach() - - mxnet_list_unique(result) - set(${definitions_var} ${result} PARENT_SCOPE) -endfunction() - -################################################################################################ -# Helper function get current includes/definitions -# Usage: -# mxnet_get_current_cflags(<cflagslist_variable>) -function(mxnet_get_current_cflags cflags_var) - get_property(current_includes DIRECTORY PROPERTY INCLUDE_DIRECTORIES) - mxnet_convert_absolute_paths(current_includes) - mxnet_get_current_definitions(cflags) - - foreach(i ${current_includes}) - list(APPEND cflags "-I${i}") - endforeach() - - mxnet_list_unique(cflags) - set(${cflags_var} ${cflags} PARENT_SCOPE) -endfunction() - -################################################################################################ -# Helper function to parse current linker libs into link directories, libflags and osx frameworks -# Usage: -# mxnet_parse_linker_libs(<mxnet_LINKER_LIBS_var> <directories_var> <libflags_var> <frameworks_var>) -function(mxnet_parse_linker_libs mxnet_LINKER_LIBS_variable folders_var flags_var frameworks_var) - - set(__unspec "") - set(__debug "") - set(__optimized "") - set(__framework "") - set(__varname "__unspec") - - # split libs into debug, optimized, unspecified and frameworks - foreach(list_elem ${${mxnet_LINKER_LIBS_variable}}) - if(list_elem STREQUAL "debug") - set(__varname "__debug") - elseif(list_elem STREQUAL "optimized") - set(__varname "__optimized") - elseif(list_elem MATCHES "^-framework[ \t]+([^ \t].*)") - list(APPEND __framework -framework ${CMAKE_MATCH_1}) - else() - list(APPEND ${__varname} ${list_elem}) - set(__varname "__unspec") - endif() - endforeach() - - # attach debug or optimized libs to unspecified according to current configuration - if(CMAKE_BUILD_TYPE MATCHES "Debug") - set(__libs ${__unspec} ${__debug}) - else() - set(__libs ${__unspec} ${__optimized}) - endif() - - set(libflags "") - set(folders "") - - # convert linker libraries list to link flags - foreach(lib ${__libs}) - if(TARGET ${lib}) - list(APPEND folders $<TARGET_LINKER_FILE_DIR:${lib}>) - list(APPEND libflags -l${lib}) - elseif(lib MATCHES "^-l.*") - list(APPEND libflags ${lib}) - elseif(IS_ABSOLUTE ${lib}) - get_filename_component(name_we ${lib} NAME_WE) - get_filename_component(folder ${lib} PATH) - - string(REGEX MATCH "^lib(.*)" __match ${name_we}) - list(APPEND libflags -l${CMAKE_MATCH_1}) - list(APPEND folders ${folder}) - else() - message(FATAL_ERROR "Logic error. Need to update cmake script") - endif() - endforeach() - - mxnet_list_unique(libflags folders) - - set(${folders_var} ${folders} PARENT_SCOPE) - set(${flags_var} ${libflags} PARENT_SCOPE) - set(${frameworks_var} ${__framework} PARENT_SCOPE) -endfunction() - -################################################################################################ -# Helper function to detect Darwin version, i.e. 10.8, 10.9, 10.10, .... -# Usage: -# mxnet_detect_darwin_version(<version_variable>) -function(mxnet_detect_darwin_version output_var) - if(APPLE) - execute_process(COMMAND /usr/bin/sw_vers -productVersion - RESULT_VARIABLE __sw_vers OUTPUT_VARIABLE __sw_vers_out - ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - - set(${output_var} ${__sw_vers_out} PARENT_SCOPE) - else() - set(${output_var} "" PARENT_SCOPE) - endif() -endfunction() - -################################################################################################ -# Convenient command to setup source group for IDEs that support this feature (VS, XCode) -# Usage: -# caffe_source_group(<group> GLOB[_RECURSE] <globbing_expression>) -function(mxnet_source_group group) - cmake_parse_arguments(CAFFE_SOURCE_GROUP "" "" "GLOB;GLOB_RECURSE" ${ARGN}) - if(CAFFE_SOURCE_GROUP_GLOB) - file(GLOB srcs1 ${CAFFE_SOURCE_GROUP_GLOB}) - source_group(${group} FILES ${srcs1}) - endif() - - if(CAFFE_SOURCE_GROUP_GLOB_RECURSE) - file(GLOB_RECURSE srcs2 ${CAFFE_SOURCE_GROUP_GLOB_RECURSE}) - source_group(${group} FILES ${srcs2}) - endif() -endfunction() - diff --git a/nnvm/python/nnvm/libinfo.py b/nnvm/python/nnvm/libinfo.py index 86c833cf1..694bd0f92 100644 --- a/nnvm/python/nnvm/libinfo.py +++ b/nnvm/python/nnvm/libinfo.py @@ -29,8 +29,8 @@ def find_lib_path(): lib_name = "nnvm_compiler" if sys.platform.startswith('win32') else "libnnvm_compiler" api_path = os.path.join(base_path, '../../lib/') - cmake_build_path = os.path.join(base_path, '../../build/Release/') - cmake_build_path = os.path.join(base_path, '../../build/') + cmake_build_path = os.path.join(base_path, '../../../build/Release/') + cmake_build_path = os.path.join(base_path, '../../../build/') dll_path = [base_path, api_path, cmake_build_path] if sys.platform.startswith('linux') and os.environ.get('LD_LIBRARY_PATH', None): @@ -43,11 +43,11 @@ def find_lib_path(): if sys.platform.startswith('win32'): vs_configuration = 'Release' if platform.architecture()[0] == '64bit': - dll_path.append(os.path.join(base_path, '../../build', vs_configuration)) - dll_path.append(os.path.join(base_path, '../../windows/x64', vs_configuration)) + dll_path.append(os.path.join(base_path, '../../../build', vs_configuration)) + dll_path.append(os.path.join(base_path, '../../../windows/x64', vs_configuration)) else: - dll_path.append(os.path.join(base_path, '../../build', vs_configuration)) - dll_path.append(os.path.join(base_path, '../../windows', vs_configuration)) + dll_path.append(os.path.join(base_path, '../../../build', vs_configuration)) + dll_path.append(os.path.join(base_path, '../../../windows', vs_configuration)) dll_path = [os.path.join(p, '%s.dll' % lib_name) for p in dll_path] elif sys.platform.startswith('darwin'): dll_path = [os.path.join(p, '%s.dylib' % lib_name) for p in dll_path] -- GitLab