Apply CMake
[platform/core/multimedia/libmm-utility.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 PROJECT(mm-utility C)
3 SET(VERSION_MAJOR 0)
4 SET(VERSION "${VERSION_MAJOR}.0.0")
5
6 SET(BMP-LIB "mmutil_bmp")
7 SET(GIF-LIB "mmutil_gif")
8 SET(IMGCV-LIB "mmutil_imgcv")
9 SET(IMGP-LIB "mmutil_imgp")
10 SET(JPEG-LIB "mmutil_jpeg")
11 SET(PNG-LIB "mmutil_png")
12
13 SET(BMP_SRCS bmp/mm_util_bmp.c)
14 SET(GIF_SRCS gif/mm_util_gif.c)
15 SET(IMGCV_SRCS imgcv/mm_util_imgcv.c)
16 SET(IMGP_SRCS imgp/mm_util_imgp.c)
17 SET(JPEG_SRCS jpeg/mm_util_jpeg.c)
18 SET(PNG_SRCS png/mm_util_png.c)
19
20 SET(VENDOR "samsung")
21 SET(PACKAGE ${PROJECT_NAME})
22 SET(PKGNAME "com.${VENDOR}.${PACKAGE}")
23 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
24 SET(BINDIR "${PREFIX}/bin")
25 SET(DATADIR "${PREFIX}/share")
26 SET(EXEC_PREFIX "\${prefix}")
27 SET(LIBDIR "\${prefix}/lib")
28 SET(INCLUDEDIR "\${prefix}/include")
29
30 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
31         SET(CMAKE_BUILD_TYPE "Release")
32 ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
33 MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
34
35 SET(INC_DIR
36         bmp/include
37         common/include
38         gif/include
39         imgcv/include
40         imgp/include
41         jpeg/include
42         png/include
43         )
44 INCLUDE_DIRECTORIES(${INC_DIR})
45
46 FIND_PROGRAM(UNAME NAMES uname)
47 EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
48
49 INCLUDE(FindPkgConfig)
50 pkg_check_modules(pkgs REQUIRED dlog glib-2.0 gio-2.0 gmodule-2.0 libtzplatform-config opencv)
51
52 FOREACH(flag ${pkgs_CFLAGS})
53         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
54 ENDFOREACH(flag)
55
56 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -Werror")
57 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
58 SET(CMAKE_C_FLAGS_RELEASE "-O2 -fPIC")
59
60 IF("${ARCH}" STREQUAL "arm")
61         ADD_DEFINITIONS("-DTARGET")
62         MESSAGE("add -DTARGET")
63 ENDIF("${ARCH}" STREQUAL "arm")
64
65 ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
66 ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
67 ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
68 ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
69 ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64")
70 ADD_DEFINITIONS("-DLIBPREFIX=\"${LIBDIR}\"")
71 ADD_DEFINITIONS("-DTIZEN_DEBUG")
72
73 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--hash-style=both")
74 CONFIGURE_FILE(${CMAKE_CURRENT_BINARY_DIR}/imgp/mmutil-imgp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/imgp/mmutil-imgp.pc @ONLY)
75 CONFIGURE_FILE(${CMAKE_CURRENT_BINARY_DIR}/jpeg/mmutil-jpeg.pc.in ${CMAKE_CURRENT_BINARY_DIR}/jpeg/mmutil-jpeg.pc @ONLY)
76 CONFIGURE_FILE(${CMAKE_CURRENT_BINARY_DIR}/imgcv/mmutil-imgcv.pc.in ${CMAKE_CURRENT_BINARY_DIR}/imgcv/mmutil-imgcv.pc @ONLY)
77 CONFIGURE_FILE(${CMAKE_CURRENT_BINARY_DIR}/bmp/mmutil-bmp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/bmp/mmutil-bmp.pc @ONLY)
78 CONFIGURE_FILE(${CMAKE_CURRENT_BINARY_DIR}/gif/mmutil-gif.pc.in ${CMAKE_CURRENT_BINARY_DIR}/gif/mmutil-gif.pc @ONLY)
79 CONFIGURE_FILE(${CMAKE_CURRENT_BINARY_DIR}/png/mmutil-png.pc.in ${CMAKE_CURRENT_BINARY_DIR}/png/mmutil-png.pc @ONLY)
80 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgp/mmutil-imgp.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
81 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/jpeg/mmutil-jpeg.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
82 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgcv/mmutil-imgcv.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
83 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/bmp/mmutil-bmp.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
84 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/gif/mmutil-gif.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
85 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/png/mmutil-png.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
86
87 ADD_SUBDIRECTORY(bmp/test)
88 ADD_SUBDIRECTORY(gif/test)
89 ADD_SUBDIRECTORY(imgcv/test)
90 ADD_SUBDIRECTORY(imgp/test)
91 ADD_SUBDIRECTORY(jpeg/test)
92 ADD_SUBDIRECTORY(png/test)
93
94 LINK_DIRECTORIES(${LIB_INSTALL_DIR})
95
96 ADD_LIBRARY(${IMGP-LIB} SHARED ${IMGP_SRCS})
97 TARGET_LINK_LIBRARIES(${IMGP-LIB} ${pkgs_LDFLAGS})
98 SET_TARGET_PROPERTIES(${IMGP-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
99 SET_TARGET_PROPERTIES(${IMGP-LIB} PROPERTIES VERSION ${VERSION})
100 ADD_LIBRARY(${JPEG-LIB} SHARED ${JPEG_SRCS})
101 TARGET_LINK_LIBRARIES(${JPEG-LIB} ${pkgs_LDFLAGS} ${IMGP-LIB} jpeg turbojpeg)
102 SET_TARGET_PROPERTIES(${JPEG-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
103 SET_TARGET_PROPERTIES(${JPEG-LIB} PROPERTIES VERSION ${VERSION})
104 ADD_LIBRARY(${IMGCV-LIB} SHARED ${IMGCV_SRCS})
105 TARGET_LINK_LIBRARIES(${IMGCV-LIB} ${pkgs_LDFLAGS})
106 SET_TARGET_PROPERTIES(${IMGCV-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
107 SET_TARGET_PROPERTIES(${IMGCV-LIB} PROPERTIES VERSION ${VERSION})
108 ADD_LIBRARY(${BMP-LIB} SHARED ${BMP_SRCS})
109 TARGET_LINK_LIBRARIES(${BMP-LIB} ${pkgs_LDFLAGS} bmp nsbmp)
110 SET_TARGET_PROPERTIES(${BMP-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
111 SET_TARGET_PROPERTIES(${BMP-LIB} PROPERTIES VERSION ${VERSION})
112 ADD_LIBRARY(${GIF-LIB} SHARED ${GIF_SRCS})
113 TARGET_LINK_LIBRARIES(${GIF-LIB} ${pkgs_LDFLAGS} gif)
114 SET_TARGET_PROPERTIES(${GIF-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
115 SET_TARGET_PROPERTIES(${GIF-LIB} PROPERTIES VERSION ${VERSION})
116 ADD_LIBRARY(${PNG-LIB} SHARED ${PNG_SRCS})
117 TARGET_LINK_LIBRARIES(${PNG-LIB} ${pkgs_LDFLAGS} png)
118 SET_TARGET_PROPERTIES(${PNG-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
119 SET_TARGET_PROPERTIES(${PNG-LIB} PROPERTIES VERSION ${VERSION})
120
121 INSTALL(TARGETS ${IMGP-LIB} LIBRARY DESTINATION ${LIB_INSTALL_DIR})
122 INSTALL(TARGETS ${JPEG-LIB} LIBRARY DESTINATION ${LIB_INSTALL_DIR})
123 INSTALL(TARGETS ${IMGCV-LIB} LIBRARY DESTINATION ${LIB_INSTALL_DIR})
124 INSTALL(TARGETS ${BMP-LIB} LIBRARY DESTINATION ${LIB_INSTALL_DIR})
125 INSTALL(TARGETS ${GIF-LIB} LIBRARY DESTINATION ${LIB_INSTALL_DIR})
126 INSTALL(TARGETS ${PNG-LIB} LIBRARY DESTINATION ${LIB_INSTALL_DIR})
127
128 INSTALL(FILES bmp/include/mm_util_bmp.h DESTINATION include/mmf)
129 INSTALL(FILES common/include/mm_util_type.h DESTINATION include/mmf)
130 INSTALL(FILES gif/include/mm_util_gif.h DESTINATION include/mmf)
131 INSTALL(FILES imgcv/include/mm_util_imgcv.h DESTINATION include/mmf)
132 INSTALL(FILES imgp/include/mm_util_imgp.h DESTINATION include/mmf)
133 INSTALL(FILES jpeg/include/mm_util_jpeg.h DESTINATION include/mmf)
134 INSTALL(FILES png/include/mm_util_png.h DESTINATION include/mmf)