INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}")

SET(LIBPREFIX "lib") #make sure ALL plugins are libXXX for ALL plateforms
SET(CMAKE_IMPORT_LIBRARY_PREFIX "lib") #for Visual C++ import libraries
OPTION( BUILD_SHARED_LIBS "Set to ON to build dynamic libraries" ON )
IF(WIN32)
	#otherwise the lib files are not generated
	SET(BUILD_STATIC_LIBS ON)
ELSE(WIN32)
	OPTION( BUILD_STATIC_LIBS "Set to ON to build static libraries" OFF )
ENDIF(WIN32)

IF(COMMAND cmake_policy)
	CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND cmake_policy)

SET(snowpacklib_sources
	DataClasses.cc
	SmetIO.cc
	SnowpackIO.cc
	AsciiIO.cc
	SnowpackConfig.cc
	Meteo.cc
	Saltation.cc
	Snowpack.cc
	Aggregate.cc
	Laws_sn.cc
	Utils.cc
	Stability.cc
	WaterTransport.cc
	Canopy.cc
	Hazard.cc
	Metamorphism.cc
	PhaseChange.cc
	Radiation.cc
	SnowDrift.cc
	Solver.cc
)

IF(PLUGIN_IMISIO)
	SET(snowpacklib_sources ${snowpacklib_sources} ImisDBIO.cc)
ENDIF(PLUGIN_IMISIO)

FIND_PACKAGE(MeteoIO)
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${METEOIO_INCLUDE_DIR})
LINK_DIRECTORIES(${METEOIO_LIBRARIES}) #this, so that if the users types in paths, it works

#set names for static and dynamic library
IF(BUILD_STATIC_LIBS)
	SET(STATICNAME ${PROJECT_NAME}_STATIC)
	SET(STATICLIBNAME ${PROJECT_NAME})
	ADD_LIBRARY(${STATICNAME} STATIC ${snowpacklib_sources})
	TARGET_LINK_LIBRARIES(${STATICNAME} ${METEOIO_LIBRARIES})
ENDIF(BUILD_STATIC_LIBS)

SET(SHAREDNAME ${PROJECT_NAME})
ADD_LIBRARY(${SHAREDNAME} SHARED ${snowpacklib_sources})
TARGET_LINK_LIBRARIES(${SHAREDNAME} ${METEOIO_LIBRARIES})

IF(PLUGIN_IMISIO)
	FIND_PACKAGE(OCCI)
	INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCCI_INCLUDE_DIR})
	LINK_DIRECTORIES(${OCCI_LIBRARIES}) #this, so that if the users types in paths, it works
	TARGET_LINK_LIBRARIES(${SHAREDNAME} ${METEOIO_LIBRARIES} ${OCCI_LIBRARIES})
ENDIF(PLUGIN_IMISIO)

#set compiling targets
SET_TARGET_PROPERTIES(${SHAREDNAME} PROPERTIES
	PREFIX "${LIBPREFIX}"
	LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib"
	ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib"
	RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib"
	CLEAN_DIRECT_OUTPUT 1
	VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
	SOVERSION "${VERSION_MAJOR}"
)

INSTALL(TARGETS ${SHAREDNAME}
	RUNTIME DESTINATION bin
	LIBRARY DESTINATION lib
	ARCHIVE DESTINATION lib
	COMPONENT libraries
)

IF(BUILD_STATIC_LIBS)
	SET_TARGET_PROPERTIES(${STATICNAME} PROPERTIES
		PREFIX "${LIBPREFIX}"
		LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib"
		ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib"
		RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib"
		CLEAN_DIRECT_OUTPUT 1
		OUTPUT_NAME ${STATICLIBNAME}
	)
	INSTALL(TARGETS ${STATICNAME}
		RUNTIME DESTINATION bin
		LIBRARY DESTINATION lib
		ARCHIVE DESTINATION lib
		COMPONENT libraries
	)
ENDIF(BUILD_STATIC_LIBS)

