25 # Contributors: |
25 # Contributors: |
26 # |
26 # |
27 # Description: |
27 # Description: |
28 # CMake meta build file for host libOpenVG |
28 # CMake meta build file for host libOpenVG |
29 |
29 |
30 set(SF_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) |
30 set(VG_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) |
|
31 set(VG_INC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/inc) |
|
32 |
|
33 configure_file(${VG_INC_DIR}/VG/openvg.h ${EXPORTED_INC_DIR}/VG/openvg.h COPYONLY) |
|
34 configure_file(${VG_INC_DIR}/VG/vgext.h ${EXPORTED_INC_DIR}/VG/vgext.h COPYONLY) |
|
35 configure_file(${VG_INC_DIR}/VG/vgplatform.h ${EXPORTED_INC_DIR}/VG/vgplatform.h COPYONLY) |
|
36 configure_file(${VG_INC_DIR}/VG/vgu.h ${EXPORTED_INC_DIR}/VG/vgu.h COPYONLY) |
31 |
37 |
32 # Some of the source files are generated using scripts. Check if the |
38 # Some of the source files are generated using scripts. Check if the |
33 # scripts were modified and rebuild if necessary. |
39 # scripts were modified and rebuild if necessary. |
34 set(ALPHA_RCP_GEN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/genheader/make_alpha_rcp.py) |
40 set(ALPHA_RCP_GEN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/genheader/make_alpha_rcp.py) |
35 set(GAMMA_LUT_GEN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/genheader/make_gamma_lut.py) |
41 set(GAMMA_LUT_GEN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/genheader/make_gamma_lut.py) |
36 |
42 |
37 set(ALPHA_RCP_FILE ${SF_SRC_DIR}/sfAlphaRcp.h) |
43 set(ALPHA_RCP_FILE ${VG_SRC_DIR}/sfAlphaRcp.h) |
38 set(GAMMA_LUT_FILE ${SF_SRC_DIR}/sfGammaLUT.h) |
44 set(GAMMA_LUT_FILE ${VG_SRC_DIR}/sfGammaLUT.h) |
39 |
45 |
40 add_custom_command( |
46 add_custom_command( |
41 OUTPUT ${ALPHA_RCP_FILE} |
47 OUTPUT ${ALPHA_RCP_FILE} |
42 COMMAND python ${ALPHA_RCP_GEN_FILE} > ${ALPHA_RCP_FILE} |
48 COMMAND python ${ALPHA_RCP_GEN_FILE} > ${ALPHA_RCP_FILE} |
43 DEPENDS ${ALPHA_RCP_GEN_FILE}) |
49 DEPENDS ${ALPHA_RCP_GEN_FILE}) |
57 set(SF_SSE_FLAGS "/arch:SSE2") |
63 set(SF_SSE_FLAGS "/arch:SSE2") |
58 set(SF_PLATFORM_LINK_LIBRARIES "") |
64 set(SF_PLATFORM_LINK_LIBRARIES "") |
59 set(C_WARNING_FLAGS "") |
65 set(C_WARNING_FLAGS "") |
60 add_definitions(-DOPENVG_DLL_EXPORTS -DNOMINMAX) |
66 add_definitions(-DOPENVG_DLL_EXPORTS -DNOMINMAX) |
61 |
67 |
62 set(GLUT_LIBRARY "") |
|
63 set(GLUT_INCLUDE_DIR "") |
|
64 |
|
65 set(LIB_TYPE SHARED) |
68 set(LIB_TYPE SHARED) |
66 |
|
67 else(WIN32) |
69 else(WIN32) |
68 set(SF_SSE_FLAGS ${GCC_SSE_FLAGS}) |
70 set(SF_SSE_FLAGS ${GCC_SSE_FLAGS}) |
69 set(SF_PLATFORM_LINK_LIBRARIES m stdc++) |
71 set(SF_PLATFORM_LINK_LIBRARIES m stdc++) |
70 set(C_WARNING_FLAGS "-Wall -std=c99 -pedantic-errors -Wno-variadic-macros -Wno-long-long -Wextra") |
72 set(C_WARNING_FLAGS "-Wall -std=c99 -pedantic-errors -Wno-variadic-macros -Wno-long-long -Wextra") |
71 set(CXX_WARNING_FLAGS "-Wall -std=c++98 -pedantic-errors -Wno-variadic-macros -Wno-long-long -Wextra") |
73 set(CXX_WARNING_FLAGS "-Wall -std=c++98 -pedantic-errors -Wno-variadic-macros -Wno-long-long -Wextra") |
72 |
74 |
73 # Easier debugging on linux |
75 # Easier debugging on linux |
74 # \todo Just use BUILD_SHARED_LIBRARIES: This way debug builds can be made with static |
76 # \todo Just use BUILD_SHARED_LIBRARIES: This way debug builds can be made with static |
75 # and release with dynamic linking. |
77 # and release with dynamic linking. |
76 set(LIB_TYPE SHARED) |
78 set(LIB_TYPE SHARED) |
77 |
|
78 find_library(GLUT_LIBRARY glut) |
|
79 find_path(GLUT_INCLUDE_DIR GL/glut.h) |
|
80 endif(WIN32) |
79 endif(WIN32) |
81 |
80 |
82 |
81 |
83 set(VG_SF_SRC_FILES |
82 set(VG_SF_SRC_FILES |
84 ${SF_SRC_DIR}/sfEGLInterface.h |
83 ${VG_SRC_DIR}/sfEGLInterface.h |
85 ${SF_SRC_DIR}/sfEGLInterface.cpp |
84 ${VG_SRC_DIR}/sfEGLInterface.cpp |
86 ${SF_SRC_DIR}/riApi.cpp |
85 ${VG_SRC_DIR}/riApi.cpp |
87 ${SF_SRC_DIR}/riArray.h |
86 ${VG_SRC_DIR}/riArray.h |
88 ${SF_SRC_DIR}/riContext.cpp |
87 ${VG_SRC_DIR}/riContext.cpp |
89 ${SF_SRC_DIR}/riContext.h |
88 ${VG_SRC_DIR}/riContext.h |
90 ${SF_SRC_DIR}/riDefs.h |
89 ${VG_SRC_DIR}/riDefs.h |
91 ${SF_SRC_DIR}/riFont.cpp |
90 ${VG_SRC_DIR}/riFont.cpp |
92 ${SF_SRC_DIR}/riUtils.h |
91 ${VG_SRC_DIR}/riUtils.h |
93 ${SF_SRC_DIR}/riUtils.cpp |
92 ${VG_SRC_DIR}/riUtils.cpp |
94 ${SF_SRC_DIR}/riFont.h |
93 ${VG_SRC_DIR}/riFont.h |
95 ${SF_SRC_DIR}/riImage.cpp |
94 ${VG_SRC_DIR}/riImage.cpp |
96 ${SF_SRC_DIR}/riImage.h |
95 ${VG_SRC_DIR}/riImage.h |
97 ${SF_SRC_DIR}/riMath.cpp |
96 ${VG_SRC_DIR}/riMath.cpp |
98 ${SF_SRC_DIR}/riMath.h |
97 ${VG_SRC_DIR}/riMath.h |
99 ${SF_SRC_DIR}/riPath.cpp |
98 ${VG_SRC_DIR}/riPath.cpp |
100 ${SF_SRC_DIR}/riPath.h |
99 ${VG_SRC_DIR}/riPath.h |
101 ${SF_SRC_DIR}/riPixelPipe.cpp |
100 ${VG_SRC_DIR}/riPixelPipe.cpp |
102 ${SF_SRC_DIR}/riPixelPipe.h |
101 ${VG_SRC_DIR}/riPixelPipe.h |
103 ${SF_SRC_DIR}/riRasterizer.cpp |
102 ${VG_SRC_DIR}/riRasterizer.cpp |
104 ${SF_SRC_DIR}/riRasterizer.h |
103 ${VG_SRC_DIR}/riRasterizer.h |
105 ${SF_SRC_DIR}/riVGU.cpp |
104 ${VG_SRC_DIR}/riVGU.cpp |
106 ${SF_SRC_DIR}/sfMask.h |
105 ${VG_SRC_DIR}/sfMask.h |
107 ${SF_SRC_DIR}/sfDynamicPixelPipe.h |
106 ${VG_SRC_DIR}/sfDynamicPixelPipe.h |
108 ${SF_SRC_DIR}/sfDynamicPixelPipe.cpp |
107 ${VG_SRC_DIR}/sfDynamicPixelPipe.cpp |
109 ${SF_SRC_DIR}/sfBlitter.h |
108 ${VG_SRC_DIR}/sfBlitter.h |
110 ${SF_SRC_DIR}/sfBlitter.cpp |
109 ${VG_SRC_DIR}/sfBlitter.cpp |
111 ${SF_SRC_DIR}/sfDynamicBlitter.h |
110 ${VG_SRC_DIR}/sfDynamicBlitter.h |
112 ${SF_SRC_DIR}/sfDynamicBlitter.cpp |
111 ${VG_SRC_DIR}/sfDynamicBlitter.cpp |
113 ${SF_SRC_DIR}/sfFunctionCache.h |
112 ${VG_SRC_DIR}/sfFunctionCache.h |
114 ${SF_SRC_DIR}/sfCompiler.h |
113 ${VG_SRC_DIR}/sfCompiler.h |
115 ${SF_SRC_DIR}/sfCompiler.cpp |
114 ${VG_SRC_DIR}/sfCompiler.cpp |
116 ${ALPHA_RCP_FILE} |
115 ${ALPHA_RCP_FILE} |
117 ${GAMMA_LUT_FILE} |
116 ${GAMMA_LUT_FILE} |
118 ) |
117 ) |
119 |
|
120 # This VG requires OpenGL to render into window |
|
121 find_package(OpenGL) |
|
122 |
118 |
123 # pthreads on linux, native threads on win32? |
119 # pthreads on linux, native threads on win32? |
124 # \note Porting... |
120 # \note Porting... |
125 find_package(Threads) |
121 find_package(Threads) |
126 |
122 |
127 include_directories( |
123 include_directories( |
128 ${SF_SRC_DIR} |
124 ${VG_SRC_DIR} |
129 ${COMMON_INC_DIR} |
125 ${COMMON_INC_DIR} |
130 ${COMMON_INC_DIR}/VG |
126 ${EXPORTED_INC_DIR} |
131 ${LLVM_INCLUDE_DIR} |
127 ${LLVM_INCLUDE_DIR} |
132 ${CMAKE_CURRENT_BINARY_DIR} |
128 ${CMAKE_CURRENT_BINARY_DIR} |
133 ) |
129 ) |
134 |
130 |
135 # -fvisibility=hidden? |
131 # -fvisibility=hidden? |
142 add_definitions(-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DRI_COMPILE_LLVM_BYTECODE) |
138 add_definitions(-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DRI_COMPILE_LLVM_BYTECODE) |
143 |
139 |
144 # LLVM bitcode files. \todo Create a macro to add these (LLVMTarget has some |
140 # LLVM bitcode files. \todo Create a macro to add these (LLVMTarget has some |
145 # code that needs expansion, especially on the dependencies, which aren't |
141 # code that needs expansion, especially on the dependencies, which aren't |
146 # handled well enough for our use. |
142 # handled well enough for our use. |
147 set(BC_CFLAGS ${BC_CFLAGS} -DNDEBUG -O1 -msse2 -mfpmath=sse -march=pentium4 -c -emit-llvm -I${COMMON_INC_DIR} ) |
143 set(BC_CFLAGS ${BC_CFLAGS} -DNDEBUG -O1 -msse2 -mfpmath=sse -march=pentium4 -c -emit-llvm -I${EXPORTED_INC_DIR} ) |
148 |
144 |
149 # This macro assumes that a pixelpipe is generated from one source-code file atm. |
145 # This macro assumes that a pixelpipe is generated from one source-code file atm. |
150 macro(make_pixelpipe target_name input_file output_file array_name) |
146 macro(make_pixelpipe target_name input_file output_file array_name) |
151 set(BINARY_PIXELPIPE_DIR ${CMAKE_CURRENT_BINARY_DIR}) |
147 set(BINARY_PIXELPIPE_DIR ${CMAKE_CURRENT_BINARY_DIR}) |
152 set(BINARY_PIXELPIPE_TARGET ${target_name}) |
148 set(BINARY_PIXELPIPE_TARGET ${target_name}) |