]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | # Copyright Mathieu Malaterre <malat@debian.org> |
2 | # BSD (Same as jxrlib) | |
3 | # Based on https://jxrlib.codeplex.com/discussions/440294 | |
4 | # and modified for vcpkg packaging | |
5 | cmake_minimum_required(VERSION 2.8) | |
6 | project(jxrlib C) | |
7 | ||
8 | # Need shared libs for ABI | |
9 | option(BUILD_SHARED_LIBS "Build shared libraries" ON) | |
10 | ||
11 | # Add a debug postfix | |
12 | set(CMAKE_DEBUG_POSTFIX "d") | |
13 | ||
14 | # helper macro to preserve original Makefile convention | |
15 | macro(JXR_MAKE_OBJ SET_NAME) | |
16 | foreach(src ${SRC_${SET_NAME}}) | |
17 | list(APPEND OBJ_${SET_NAME} ${DIR_${SET_NAME}}/${src}) | |
18 | endforeach() | |
19 | endmacro() | |
20 | ||
21 | if(NOT MSVC) | |
22 | add_definitions(-D__ANSI__) | |
23 | add_compile_options(-Wno-error=implicit-function-declaration) | |
24 | endif() | |
25 | ||
26 | include(TestBigEndian) | |
27 | test_big_endian(ISBIGENDIAN) | |
28 | if(ISBIGENDIAN) | |
29 | set(DEF_ENDIAN _BIG__ENDIAN_) | |
30 | endif() | |
31 | ||
32 | set(DIR_SYS image/sys) | |
33 | set(DIR_DEC image/decode) | |
34 | set(DIR_ENC image/encode) | |
35 | ||
36 | set(DIR_GLUE jxrgluelib) | |
37 | set(DIR_TEST jxrtestlib) | |
38 | set(DIR_EXEC jxrencoderdecoder) | |
39 | ||
40 | if(NOT JXRLIB_INSTALL_BIN_DIR) | |
41 | set(JXRLIB_INSTALL_BIN_DIR "bin") | |
42 | endif() | |
43 | ||
44 | if(NOT JXRLIB_INSTALL_LIB_DIR) | |
45 | set(JXRLIB_INSTALL_LIB_DIR "lib") | |
46 | endif() | |
47 | ||
48 | if(NOT JXRLIB_INSTALL_INCLUDE_DIR) | |
49 | set(JXRLIB_INSTALL_INCLUDE_DIR "include/jxrlib") | |
50 | endif() | |
51 | ||
52 | include_directories( | |
53 | common/include | |
54 | ${DIR_SYS} | |
55 | ${DIR_GLUE} | |
56 | ${DIR_TEST} | |
57 | ) | |
58 | ||
59 | ||
60 | # JPEG-XR | |
61 | set(SRC_SYS adapthuff.c image.c strcodec.c strPredQuant.c strTransform.c perfTimerANSI.c) | |
62 | JXR_MAKE_OBJ(SYS) | |
63 | set(SRC_DEC decode.c postprocess.c segdec.c strdec.c strInvTransform.c strPredQuantDec.c JXRTranscode.c) | |
64 | JXR_MAKE_OBJ(DEC) | |
65 | set(SRC_ENC encode.c segenc.c strenc.c strFwdTransform.c strPredQuantEnc.c) | |
66 | JXR_MAKE_OBJ(ENC) | |
67 | ||
68 | add_library(jpegxr ${OBJ_ENC} ${OBJ_DEC} ${OBJ_SYS}) | |
69 | set_property(TARGET jpegxr | |
70 | PROPERTY COMPILE_DEFINITIONS DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN} | |
71 | ) | |
72 | set_property(TARGET jpegxr PROPERTY LINK_INTERFACE_LIBRARIES "") | |
73 | install(TARGETS jpegxr | |
74 | EXPORT JXRLibTargets | |
75 | RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} | |
76 | LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} | |
77 | ARCHIVE DESTINATION ${JXRLIB_INSTALL_LIB_DIR} | |
78 | ) | |
79 | ||
80 | # JXR-GLUE | |
81 | set(SRC_GLUE JXRGlue.c JXRMeta.c JXRGluePFC.c JXRGlueJxr.c) | |
82 | JXR_MAKE_OBJ(GLUE) | |
83 | set(SRC_TEST JXRTest.c JXRTestBmp.c JXRTestHdr.c JXRTestPnm.c JXRTestTif.c JXRTestYUV.c) | |
84 | JXR_MAKE_OBJ(TEST) | |
85 | ||
86 | add_library(jxrglue ${OBJ_GLUE} ${OBJ_TEST}) | |
87 | set_property(TARGET jxrglue | |
88 | PROPERTY COMPILE_DEFINITIONS DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN} | |
89 | ) | |
90 | set_property(TARGET jxrglue PROPERTY LINK_INTERFACE_LIBRARIES "") | |
91 | install(TARGETS jxrglue | |
92 | EXPORT JXRLibTargets | |
93 | RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR} | |
94 | LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR} | |
95 | ARCHIVE DESTINATION ${JXRLIB_INSTALL_LIB_DIR} | |
96 | ) | |
97 | ||
98 | target_link_libraries(jxrglue jpegxr) | |
99 | ||
100 | # install rules | |
101 | install(FILES jxrgluelib/JXRGlue.h jxrgluelib/JXRMeta.h jxrtestlib/JXRTest.h | |
102 | image/sys/windowsmediaphoto.h | |
103 | DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} COMPONENT Headers | |
104 | ) | |
105 | install(DIRECTORY common/include/ DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} | |
106 | FILES_MATCHING PATTERN "*.h" | |
107 | ) |