hostsupport/hostopenvg/CMakeLists.txt
branchbug235_bringup_0
changeset 56 40cc73c24bf8
parent 53 c2ef9095503a
child 73 11fc086941ac
equal deleted inserted replaced
55:09263774e342 56:40cc73c24bf8
    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})
   154     set(BINARY_PIXELPIPE_HEADER ${BINARY_PIXELPIPE_DIR}/${output_file})
   150     set(BINARY_PIXELPIPE_HEADER ${BINARY_PIXELPIPE_DIR}/${output_file})
   155 
   151 
   156     set_source_files_properties(${BINARY_PIXELPIPE_HEADER}
   152     set_source_files_properties(${BINARY_PIXELPIPE_HEADER}
   157         PROPERTIES GENERATED true)
   153         PROPERTIES GENERATED true)
   158 
   154 
   159     set(LLVM_PIXELPIPE_FILES ${SF_SRC_DIR}/${input_file})
   155     set(LLVM_PIXELPIPE_FILES ${VG_SRC_DIR}/${input_file})
   160 
   156 
   161     # Note: Adds all project files as dependency to bitcode file.
   157     # Note: Adds all project files as dependency to bitcode file.
   162     add_custom_command(
   158     add_custom_command(
   163         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${input_file}.bc
   159         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${input_file}.bc
   164         COMMAND ${LLVM_CC} ARGS ${BC_CFLAGS} -o ${CMAKE_CURRENT_BINARY_DIR}/${input_file}.bc ${LLVM_PIXELPIPE_FILES}
   160         COMMAND ${LLVM_CC} ARGS ${BC_CFLAGS} -o ${CMAKE_CURRENT_BINARY_DIR}/${input_file}.bc ${LLVM_PIXELPIPE_FILES}
   182         set(BINARY_PIXELPIPE_HEADER_DEPS ${BINARY_PIXELPIPE_DEPS} ${BINARY_PIXELPIPE_FILE}.disasm)
   178         set(BINARY_PIXELPIPE_HEADER_DEPS ${BINARY_PIXELPIPE_DEPS} ${BINARY_PIXELPIPE_FILE}.disasm)
   183     endif()
   179     endif()
   184 
   180 
   185     add_custom_command(
   181     add_custom_command(
   186         OUTPUT ${BINARY_PIXELPIPE_HEADER}
   182         OUTPUT ${BINARY_PIXELPIPE_HEADER}
   187         COMMAND python ${PROJECT_SOURCE_DIR}/vg/bin/bin2h.py ${BINARY_PIXELPIPE_FILE} ${array_name} > ${BINARY_PIXELPIPE_HEADER}
   183         COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/genheader/bin2h.py ${BINARY_PIXELPIPE_FILE} ${array_name} > ${BINARY_PIXELPIPE_HEADER}
   188         DEPENDS ${BINARY_PIXELPIPE_HEADER_DEPS}
   184         DEPENDS ${BINARY_PIXELPIPE_HEADER_DEPS}
   189     )
   185     )
   190 
   186 
   191     set(VG_SF_SRC_FILES ${VG_SF_SRC_FILES} ${BINARY_PIXELPIPE_HEADER})
   187     set(VG_SF_SRC_FILES ${VG_SF_SRC_FILES} ${BINARY_PIXELPIPE_HEADER})
   192 endmacro(make_pixelpipe)
   188 endmacro(make_pixelpipe)
   196 
   192 
   197 add_library(${LIBRARY_NAME_PREFIX}OpenVG ${LIB_TYPE} ${VG_SF_SRC_FILES})
   193 add_library(${LIBRARY_NAME_PREFIX}OpenVG ${LIB_TYPE} ${VG_SF_SRC_FILES})
   198 
   194 
   199 set_target_properties(${LIBRARY_NAME_PREFIX}OpenVG PROPERTIES LINK_INTERFACE_LIBRARIES "")
   195 set_target_properties(${LIBRARY_NAME_PREFIX}OpenVG PROPERTIES LINK_INTERFACE_LIBRARIES "")
   200 
   196 
   201 target_link_libraries(${LIBRARY_NAME_PREFIX}OpenVG ${SF_PLATFORM_LINK_LIBRARIES} ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${LLVM_JIT_LIBS})
   197 target_link_libraries(${LIBRARY_NAME_PREFIX}OpenVG ${SF_PLATFORM_LINK_LIBRARIES} ${OPENGL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${LLVM_JIT_LIBS})