cmake_minimum_required(VERSION 3.2)

# set project name as the module name of the .so/.dll/.pyd 
project(lmproc_1)
set(CURR_FOLDER_NAME "lm_1")

set(HDF5_ROOT "/usr/local/hdf5/")


# get the site packages location, then strip the trailing whitespace
execute_process ( COMMAND python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)

# HDF5 needed for GE data
find_package(HDF5 REQUIRED)

#get source files
file(GLOB_RECURSE SRC "src/*.cu")
file(GLOB_RECURSE HDR "src/*.h")

list(APPEND SRC ${HDR})

include_directories(include	${CMAKE_BINARY_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME})
include_directories(${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME}/src)
include_directories(${PYTHON_INCLUDE_DIRS})
include_directories(${PYTHON_SITE_PACKAGES}/numpy/core/include/)
if(HDF5_FOUND)
	include_directories(${HDF5_INCLUDE_DIRS})
	message(">>> HDF5: include dir is: ${HDF5_INCLUDE_DIRS}")
else()
	message(">>> Could not find the HDF5 package")
endif()

cuda_add_library(${PROJECT_NAME} SHARED ${SRC}) 

target_link_libraries(${PROJECT_NAME} ${PYTHON_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${CUDA_LIBRARIES} ${CUDA_curand_LIBRARY})
target_link_libraries(${PROJECT_NAME} ${HDF5_LIBRARIES})

if(WIN32)
	set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".pyd")
	ADD_CUSTOM_COMMAND(
	    TARGET ${PROJECT_NAME}
	    POST_BUILD
		COMMAND ${CMAKE_COMMAND} -E copy
		${PROJECT_BINARY_DIR}/Release/${PROJECT_NAME}.pyd
		${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME}/${CURR_FOLDER_NAME}/${PROJECT_NAME}.pyd
	)
endif()

if(UNIX)
    set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
    ADD_CUSTOM_COMMAND(
        TARGET ${PROJECT_NAME}
        POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy
        ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.so
        ${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME}/${CURR_FOLDER_NAME}/${PROJECT_NAME}.so
    )
endif()