Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
project(ShivaVG)
cmake_minimum_required(VERSION 3.0)

project(ShivaVG
VERSION 0.2.1
LANGUAGES C
DESCRIPTION "The shivavg implementation of openvg"
)

# TODO test on Windows/MSVC
# TODO test on Windows/MinGW
# TODO separate targets for examples and install target
# TODO update INSTALL/README etc
cmake_minimum_required(VERSION 2.8)

include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckTypeSize)

# make cache variables for install destinations
include(GNUInstallDirs)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
set(CMAKE_C_FLAGS "-std=c99")

# Processing the generator options
# TODO: can we have a master option that will turn others in UI?
Expand Down Expand Up @@ -35,6 +50,7 @@ if(BUILD_ALL_EXAMPLES)
set(BUILD_PATTERN ON)
set(BUILD_BLEND ON)
set(BUILD_EB ON)
set(BUILD_WARP ON)
endif()
set(BUILD_EXAMPLES BUILD_VGU OR BUILD_DASH OR BUILD_LINEAR OR BUILD_RADIAL OR BUILD_INTERPOLATE OR BUILD_TIGER OR
BUILD_IMAGE OR BUILD_PATTERN OR BUILD_BLEND OR BUILD_EB)
Expand Down Expand Up @@ -68,8 +84,6 @@ check_include_files(sys/stat.h HAVE_SYS_STAT_H)
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
check_include_files(unistd.h HAVE_UNISTD_H)
check_type_size("void*" SIZEOF_VOID_P)
# TODO the AC_TYPE defines need porting
find_package(ANSIC)

# Trying to get the version of the package
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
Expand All @@ -85,10 +99,10 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
endif()
endif()
else()
set(PACKAGE_VERSION "Unknown(no git)")
set(PACKAGE_VERSION $PROJECT_VERSION)
endif()
else()
set(PACKAGE_VERSION "Unknown(off-repo)")
set(PACKAGE_VERSION $PROJECT_VERSION)
endif()

# Names, strings etc
Expand Down
80 changes: 75 additions & 5 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 3.0)
# TODO headers as dependencies
# TODO shared/static switch CMake-style
set(libOpenVG_SOURCES

set(libOpenVG_SOURCES
shExtensions.c
shArrays.c
shVectors.c
Expand All @@ -25,12 +26,81 @@ set(libOpenVG_HEADERS
shPaint.h
shGeometry.h
shContext.h
)
add_definitions(-std=c99 -pedantic -DHAVE_CONFIG_H)
)

add_definitions(-DHAVE_CONFIG_H)
include_directories(${OPENGL_INCLUDE_DIR})
# TODO what if OpenGL library has nonstandard location?
add_library(OpenVG SHARED ${libOpenVG_SOURCES})
target_link_libraries(OpenVG ${OPENGL_LIBRARIES} -lm)
SET_TARGET_PROPERTIES( OpenVG PROPERTIES COMPILE_FLAGS -fPIC)

install(TARGETS OpenVG DESTINATION lib)
# create library
add_library(OpenVG_objlib OBJECT ${libOpenVG_SOURCES})
set_property(TARGET OpenVG_objlib PROPERTY POSITION_INDEPENDENT_CODE 1)

# create library
add_library(OpenVGStatic STATIC $<TARGET_OBJECTS:OpenVG_objlib>)
set_target_properties(OpenVGStatic PROPERTIES LIBRARY_OUTPUT_NAME OpenVG.a)

# create library
add_library(OpenVG SHARED $<TARGET_OBJECTS:OpenVG_objlib>)
target_link_libraries(OpenVG ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} -lm)

# add include directories
target_include_directories(OpenVG
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)

# install the target and create export-set
install(TARGETS OpenVG OpenVGStatic
EXPORT OpenVGTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

# header files (include/VG) are installed by ../CMakeLists.txt

# generate and install export file
install(EXPORT OpenVGTargets
FILE OpenVGTargets.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/OpenVG
)



include(CMakePackageConfigHelpers)

set(version $PROJECT_VERSION)

# generate the version file for the config file
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/OpenVGConfigVersion.cmake"
VERSION "${version}"
COMPATIBILITY AnyNewerVersion
)

# create config file
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/OpenVGConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/OpenVG
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)

# install config files
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/OpenVGConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/OpenVGConfigVersion.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/OpenVG
)



# TODO verify
# generate pkgconfig file
set(target1 OpenVG)
configure_file(openvg.pc.in lib/pkgconfig/openvg.pc @ONLY)
4 changes: 4 additions & 0 deletions src/Config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@PACKAGE_INIT@

set(OpenVG_FOUND True)
include("${CMAKE_CURRENT_LIST_DIR}/OpenVGTargets.cmake")
10 changes: 10 additions & 0 deletions src/openvg.pc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
prefix="@CMAKE_INSTALL_PREFIX@"
exec_prefix="${prefix}"
libdir="${prefix}/lib"
includedir="${prefix}/include"

Name: @PROJECT_NAME@
Description: @CMAKE_PROJECT_DESCRIPTION@
Version: @PROJECT_VERSION@
Cflags: -I${includedir}
Libs: -L${libdir} -l@target1@