# Copyright (C) 2007-2009 LuaDist. # Created by Peter Kapec # Redistribution and use of this file is allowed according to the terms of the MIT license. # For details see the COPYRIGHT file distributed with LuaDist. # Please note that the package source code is licensed under its own license. PROJECT(imlua C) # CMake configuration: CMAKE_MINIMUM_REQUIRED (VERSION 2.6) SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) # Where to install module parts: SET (INSTALL_CMOD share/lua/cmod CACHE PATH "Directory to install Lua binary modules.") SET (INSTALL_LIB lib CACHE PATH "Directory for external libraries.") # Macros MACRO(ADD_PREFIX prefix rootlist) SET(outlist ) FOREACH(root ${${rootlist}}) LIST(APPEND outlist ${prefix}${root}) ENDFOREACH(root) SET(${rootlist} ${outlist}) ENDMACRO(ADD_PREFIX) # find headers & libs FIND_PACKAGE(Lua51 REQUIRED) INCLUDE_DIRECTORIES (${LUA_INCLUDE_DIR}) FIND_PATH( IM_INCLUDE_DIR NAMES im.h ) INCLUDE_DIRECTORIES (${IM_INCLUDE_DIR}) FIND_LIBRARY( IM_LIBRARY NAMES im) FIND_LIBRARY( IM_LIBRARY_PROCESS NAMES im_process) FIND_LIBRARY( IM_LIBRARY_FFTW NAMES im_fftw) FIND_LIBRARY( IM_LIBRARY_AVI NAMES im_avi) FIND_LIBRARY( IM_LIBRARY_CAPTURE NAMES im_capture) FIND_LIBRARY( IM_LIBRARY_WMV NAMES im_wmv) FIND_LIBRARY( IM_LIBRARY_JP2 NAMES im_jp2) # imlua INCLUDE_DIRECTORIES (include src/lua5) SET(SRC_IMLUALIB lua5/imlua.c lua5/imlua_aux.c lua5/imlua_convert.c lua5/imlua_file.c lua5/imlua_image.c lua5/imlua_palette.c lua5/imlua_util.c) ADD_PREFIX(src/ SRC_IMLUALIB) ADD_LIBRARY(imlua SHARED ${SRC_IMLUALIB}) TARGET_LINK_LIBRARIES(imlua ${LUA_LIBRARY} ${IM_LIBRARY}) IF(MSVC) SET_TARGET_PROPERTIES(imlua PROPERTIES OUTPUT_NAME libimlua CLEAN_DIRECT_OUTPUT 1 LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua.def") ENDIF(MSVC) # imlua module ADD_LIBRARY(imlua_module MODULE src/lua5/imlua_module.c) TARGET_LINK_LIBRARIES(imlua_module imlua ) SET_TARGET_PROPERTIES(imlua_module PROPERTIES PREFIX "" OUTPUT_NAME imlua CLEAN_DIRECT_OUTPUT 1 ) IF(MSVC) SET_TARGET_PROPERTIES(imlua_module PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua_module.def") ENDIF(MSVC) # imlua_process5 SET(SRC_IMLUA_PROCESS src/lua5/imlua_process.c src/lua5/imlua_kernel.c) ADD_LIBRARY(process MODULE ${SRC_IMLUA_PROCESS}) TARGET_LINK_LIBRARIES(process imlua ${IM_LIBRARY_PROCESS}) SET_TARGET_PROPERTIES(process PROPERTIES PREFIX "") IF(MSVC) SET_TARGET_PROPERTIES(process PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua_process.def") ENDIF(MSVC) # imlua_fftw5 ADD_LIBRARY(fftw MODULE src/lua5/imlua_fftw.c) TARGET_LINK_LIBRARIES(fftw imlua ${IM_LIBRARY_FFTW}) SET_TARGET_PROPERTIES(fftw PROPERTIES PREFIX "") IF(MSVC) SET_TARGET_PROPERTIES(fftw PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua_fftw.def") ENDIF(MSVC) # imlua_avi IF(IM_LIBRARY_AVI) SET(SRC_IMLUA_AVI src/lua5/imlua_avi.c) ADD_LIBRARY(avi MODULE ${SRC_IMLUA_AVI}) TARGET_LINK_LIBRARIES(avi imlua ${IM_LIBRARY_AVI}) SET_TARGET_PROPERTIES(avi PROPERTIES PREFIX "") IF(MSVC) SET_TARGET_PROPERTIES(avi PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua_avi.def") ENDIF(MSVC) INSTALL(TARGETS avi DESTINATION ${INSTALL_CMOD}/imlua) ENDIF() # imlua_capture IF(IM_LIBRARY_CAPTURE) SET(SRC_IMLUA_CAPTURE src/lua5/imlua_capture.c) ADD_LIBRARY(capture MODULE ${SRC_IMLUA_CAPTURE}) TARGET_LINK_LIBRARIES(capture imlua ${IM_LIBRARY_CAPTURE}) SET_TARGET_PROPERTIES(capture PROPERTIES PREFIX "") IF(MSVC) SET_TARGET_PROPERTIES(capture PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua_capture.def") ENDIF(MSVC) INSTALL(TARGETS capture DESTINATION ${INSTALL_CMOD}/imlua) ENDIF() # imlua_wmv IF(IM_LIBRARY_WMV) SET(SRC_IMLUA_WMV src/lua5/imlua_wmv.c) ADD_LIBRARY(wmv MODULE ${SRC_IMLUA_WMV}) TARGET_LINK_LIBRARIES(wmv imlua ${LUA_LIBRARY} ${IM_LIBRARY} ${IM_LIBRARY_WMV}) SET_TARGET_PROPERTIES(wmv PROPERTIES PREFIX "") IF(MSVC) SET_TARGET_PROPERTIES(wmv PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua_wmv.def") ENDIF(MSVC) INSTALL(TARGETS wmv DESTINATION ${INSTALL_CMOD}/imlua) ENDIF() # imlua_jp2 SET(SRC_IMLUA_JP2 src/lua5/imlua_jp2.c) ADD_LIBRARY(jp2 MODULE ${SRC_IMLUA_JP2}) TARGET_LINK_LIBRARIES(jp2 imlua ${IM_LIBRARY_JP2}) SET_TARGET_PROPERTIES(jp2 PROPERTIES PREFIX "") IF(MSVC) SET_TARGET_PROPERTIES(jp2 PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/lua5/imlua_jp2.def") ENDIF(MSVC) # install all Lua modules INSTALL(TARGETS imlua DESTINATION ${INSTALL_LIB}) INSTALL(TARGETS imlua_module DESTINATION ${INSTALL_CMOD}) INSTALL(TARGETS process fftw jp2 DESTINATION ${INSTALL_CMOD}/imlua)