[trunk] Make openjpip a first class shared lib, for future linking
[openjpeg.git] / src / lib / openjpip / CMakeLists.txt
1 include_regular_expression("^.*$")
2
3 add_definitions(-DUSE_JPIP)
4
5 include_directories(
6   ${CMAKE_CURRENT_SOURCE_DIR}
7   ${OPENJPEG_BINARY_DIR}/src/lib/openjp2 # opj_config.h
8   ${OPENJPEG_SOURCE_DIR}/src/lib/openjp2
9   ${FCGI_INCLUDE_DIRS}
10   ${CURL_INCLUDE_DIRS}
11 )
12
13 # Defines the source code for the library
14 set(OPENJPIP_SRCS
15   ${CMAKE_CURRENT_SOURCE_DIR}/boxheader_manager.c
16   ${CMAKE_CURRENT_SOURCE_DIR}/codestream_manager.c
17   ${CMAKE_CURRENT_SOURCE_DIR}/imgreg_manager.c
18   ${CMAKE_CURRENT_SOURCE_DIR}/marker_manager.c
19   ${CMAKE_CURRENT_SOURCE_DIR}/msgqueue_manager.c
20   ${CMAKE_CURRENT_SOURCE_DIR}/box_manager.c
21   ${CMAKE_CURRENT_SOURCE_DIR}/faixbox_manager.c
22   ${CMAKE_CURRENT_SOURCE_DIR}/index_manager.c
23   ${CMAKE_CURRENT_SOURCE_DIR}/metadata_manager.c
24   ${CMAKE_CURRENT_SOURCE_DIR}/placeholder_manager.c
25   ${CMAKE_CURRENT_SOURCE_DIR}/byte_manager.c
26   ${CMAKE_CURRENT_SOURCE_DIR}/ihdrbox_manager.c
27   ${CMAKE_CURRENT_SOURCE_DIR}/manfbox_manager.c
28   ${CMAKE_CURRENT_SOURCE_DIR}/mhixbox_manager.c
29   ${CMAKE_CURRENT_SOURCE_DIR}/target_manager.c
30   ${CMAKE_CURRENT_SOURCE_DIR}/cachemodel_manager.c
31   ${CMAKE_CURRENT_SOURCE_DIR}/j2kheader_manager.c
32   ${CMAKE_CURRENT_SOURCE_DIR}/jp2k_encoder.c
33   ${CMAKE_CURRENT_SOURCE_DIR}/openjpip.c
34   ${CMAKE_CURRENT_SOURCE_DIR}/query_parser.c
35   ${CMAKE_CURRENT_SOURCE_DIR}/channel_manager.c
36   ${CMAKE_CURRENT_SOURCE_DIR}/session_manager.c
37   ${CMAKE_CURRENT_SOURCE_DIR}/jpip_parser.c
38   ${CMAKE_CURRENT_SOURCE_DIR}/sock_manager.c
39   ${CMAKE_CURRENT_SOURCE_DIR}/cidx_manager.c
40   ${CMAKE_CURRENT_SOURCE_DIR}/phix_manager.c
41   ${CMAKE_CURRENT_SOURCE_DIR}/ppix_manager.c
42   ${CMAKE_CURRENT_SOURCE_DIR}/thix_manager.c
43   ${CMAKE_CURRENT_SOURCE_DIR}/tpix_manager.c
44   )
45
46 set(SERVER_SRCS
47   ${CMAKE_CURRENT_SOURCE_DIR}/auxtrans_manager.c
48   )
49
50 set(LOCAL_SRCS
51   ${CMAKE_CURRENT_SOURCE_DIR}/jp2k_decoder.c
52   ${CMAKE_CURRENT_SOURCE_DIR}/imgsock_manager.c
53   ${CMAKE_CURRENT_SOURCE_DIR}/jpipstream_manager.c
54   ${CMAKE_CURRENT_SOURCE_DIR}/cache_manager.c
55   ${CMAKE_CURRENT_SOURCE_DIR}/dec_clientmsg_handler.c
56   )
57
58 # Build the library
59 if(WIN32)
60   if(BUILD_SHARED_LIBS)
61     add_definitions(-DOPJ_EXPORTS)
62   else()
63     add_definitions(-DOPJ_STATIC)
64   endif()
65 endif()
66 add_library(openjpip ${OPENJPIP_SRCS} ${LOCAL_SRCS})
67 set_target_properties(openjpip
68   PROPERTIES ${OPENJPEG_LIBRARY_PROPERTIES})
69 target_link_libraries(openjpip ${OPENJPEG_LIBRARY_NAME})
70 if(WIN32)
71   # add Winsock on windows+mingw
72   target_link_libraries(openjpip ws2_32)
73 endif()
74
75 # Install library
76 install(TARGETS openjpip
77   EXPORT OpenJPEGTargets
78   RUNTIME DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
79   LIBRARY DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
80   ARCHIVE DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
81   )
82
83 if(BUILD_JPIP_SERVER)
84   add_library(openjpip_server STATIC ${OPENJPIP_SRCS} ${SERVER_SRCS})
85   target_link_libraries(openjpip_server ${FCGI_LIBRARIES} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
86   set_target_properties(openjpip_server
87     PROPERTIES COMPILE_FLAGS "-DSERVER")
88   install(TARGETS openjpip_server
89     EXPORT OpenJPEGTargets
90     DESTINATION ${OPENJPEG_INSTALL_LIB_DIR} COMPONENT Libraries
91     )
92 endif()