Commit 1015eb6b authored by Nick Sharp's avatar Nick Sharp
Browse files

Initial commit

parents
# Build directory
build/
# Useless files
.DS_STORE
*.swp
.DS_store
\ No newline at end of file
cmake_minimum_required(VERSION 2.8)
project(CMU462)
#-------------------------------------------------------------------------------
# Build options
#-------------------------------------------------------------------------------
option(CMU462_BUILD_DEBUG "Build for debug" OFF)
option(CMU462_BUILD_SHARED "Build shared libraries" OFF)
option(CMU462_BUILD_DOCS "Build documentation" OFF)
option(CMU462_BUILD_TESTS "Build tests programs" OFF)
option(CMU462_BUILD_EXAMPLES "Build examples" OFF)
#-------------------------------------------------------------------------------
# CMake modules
#-------------------------------------------------------------------------------
list(APPEND CMAKE_MODULE_PATH "${CMU462_SOURCE_DIR}/cmake/modules/")
#-------------------------------------------------------------------------------
# CMU462 paths
#-------------------------------------------------------------------------------
set(CMU462_INCLUDE_DIRS "${CMU462_SOURCE_DIR}/include" "${CMU462_SOURCE_DIR}/include/CMU462")
#-------------------------------------------------------------------------------
# Platform-specific settings
#-------------------------------------------------------------------------------
###################
# Building on OSX #
###################
if(APPLE)
# Clang only
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "CLANG")
# OSX Framework dependencies
if(NOT CMU462_BUILD_SHARED)
include_directories( "/System/Library/Frameworks" )
find_library (COCOA_LIBRARIES Cocoa)
find_library (IOKIT_LIBRARIES IOkit)
find_library (COREVIDEO_LIBRARIES CoreVideo)
endif()
# Clang configuration
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
set(CLANG_CXX_FLAGS "-std=c++11 -m64")
if(CMU462_BUILD_DEBUG)
set(CMAKE_BUILD_TYPE Debug)
else(CMU462_BUILD_DEBUG)
set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -O3")
set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -funroll-loops")
set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -Wno-narrowing")
set(CLANG_CXX_FLAGS "${CLANG_CXX_FLAGS} -Wno-deprecated-register")
endif(CMU462_BUILD_DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLANG_CXX_FLAGS}")
endif()
# GCC configuration
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(GCC_CXX_FLAGS "-std=gnu++11 -m64")
if(CMU462_BUILD_DEBUG)
set(CMAKE_BUILD_TYPE Debug)
else(CMU462_BUILD_DEBUG)
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -O3")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -fopenmp")
endif(CMU462_BUILD_DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_CXX_FLAGS}")
endif()
endif()
endif(APPLE)
##################
# Build on Linux #
##################
set(LINUX UNIX AND NOT APPLE)
if(LINUX)
# GCC only
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
set(GCC_CXX_FLAGS "-std=gnu++11 -m64")
# X11 Dependencies
if(NOT CMU462_BUILD_SHARED)
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXi")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXxf86vm")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXinerama")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXcursor")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXfixes")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXrandr")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXext")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXrender")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lX11")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lpthread")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lxcb")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -lXau")
endif()
# Debug configuration
if(CMU462_BUILD_DEBUG)
set(CMAKE_BUILD_TYPE Debug)
else(CMU462_BUILD_DEBUG)
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -O3")
set(GCC_CXX_FLAGS "${GCC_CXX_FLAGS} -fopenmp")
endif(CMU462_BUILD_DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_CXX_FLAGS}")
endif()
endif(LINUX)
####################
# Build on Windows #
####################
if(WIN32)
if(MSVC)
set(MSVC_CXX_FLAGS "-std=gnu++11")
if(CMU462_BUILD_DEBUG)
set(CMAKE_BUILD_TYPE Debug)
else(CMU462_BUILD_DEBUG)
endif(CMU462_BUILD_DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSVC_CXX_FLAGS}")
add_subdirectory("${CMU462_SOURCE_DIR}/deps/freetype")
endif(MSVC)
if(MINGW)
set(MSVC_CXX_FLAGS "-std=gnu++11")
if(CMU462_BUILD_DEBUG)
set(CMAKE_BUILD_TYPE Debug)
else(CMU462_BUILD_DEBUG)
endif(CMU462_BUILD_DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSVC_CXX_FLAGS}")
endif(MINGW)
endif(WIN32)
#-------------------------------------------------------------------------------
# Find dependencies
#-------------------------------------------------------------------------------
# Required packages
find_package(OpenGL REQUIRED)
if(NOT WIN32)
find_package(Freetype REQUIRED)
endif()
# Use pkg-config for GLEW & GLFW if available
find_package(PkgConfig QUIET)
# GLEW
if(PKGCONFIG_FOUND)
pkg_search_module(GLEW QUIET GLEW)
else(PKGCONFIG_FOUND)
find_package(GLEW QUIET)
endif()
if(NOT GLEW_FOUND)
add_subdirectory("${CMU462_SOURCE_DIR}/deps/glew")
set_property( TARGET glew APPEND_STRING PROPERTY COMPILE_FLAGS -w )
endif()
# GLFW
if(PKGCONFIG_FOUND)
pkg_search_module(GLFW QUIET glfw3)
else(PKGCONFIG_FOUND)
find_package(GLFW QUIET)
endif()
if(NOT GLFW_FOUND)
add_subdirectory("${CMU462_SOURCE_DIR}/deps/glfw")
set_property( TARGET glfw APPEND_STRING PROPERTY COMPILE_FLAGS -w )
endif()
#-------------------------------------------------------------------------------
# Set include directories
#-------------------------------------------------------------------------------
include_directories(
${CMU462_INCLUDE_DIRS}
${GLEW_INCLUDE_DIRS}
${GLFW_INCLUDE_DIRS}
${FREETYPE_INCLUDE_DIRS}
)
#-------------------------------------------------------------------------------
# Set link directories
#-------------------------------------------------------------------------------
link_directories(
${GLEW_LIBRARY_DIRS}
${GLFW_LIBRARY_DIRS}
${FREETYPE_LIBRARY_DIRS}
)
#-------------------------------------------------------------------------------
# Add subdirectories
#-------------------------------------------------------------------------------
# CMU462 library source directory
add_subdirectory(src)
# CMU462 tests source directory
if(CMU462_BUILD_TESTS)
add_subdirectory(tests)
endif()
# CMU462 exmaples source directory
if(CMU462_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
# CMU462 documentation directory
if(CMU462_BUILD_DOCS)
find_package(DOXYGEN)
if(DOXYGEN_FOUND AND CMU462_BUILD_DOCS)
add_subdirectory(docs)
endif()
endif()
#-------------------------------------------------------------------------------
# Packing
#-------------------------------------------------------------------------------
# Install settings
set(CMAKE_INSTALL_PREFIX "${CMU462_SOURCE_DIR}")
# CMU462 Library
Designed to build simple graphics applications for 15-462 : Computer Graphics
The library provides basic vector operations, takes care of OpenGL context creation, window event handling, and an on-screen text display interface using freetype. The library is designed to provide a simple interface for building graphics applications and is used in 15-462 assignments.
set(FREETYPE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "" FORCE)
set(FREETYPE_HEADER_DIR ${FREETYPE_ROOT_DIR}/include ${FREETYPE_ROOT_DIR}/include/freetype2)
file(GLOB FREETYPE_DLLS ${FREETYPE_ROOT_DIR}/bin/*.dll)
include_directories(${FREETYPE_HEADER_DIR})
add_library(freetype SHARED IMPORTED)
set(FREETYPE_LIBRARY_DIRS "${FREETYPE_ROOT_DIR}/lib" CACHE PATH "" FORCE)
set(FREETYPE_LIBRARIES freetype CACHE PATH "" FORCE)
set(FREETYPE_INCLUDE_DIRS ${FREETYPE_HEADER_DIR} CACHE PATH "" FORCE)
set(FREETYPE_RUNTIMELIBS ${FREETYPE_DLLS} CACHE PATH "" FORCE)
\ No newline at end of file
#! /bin/sh
#
# Copyright 2000, 2001, 2002, 2003, 2004, 2005 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
# and distributed under the terms of the FreeType project license,
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
prefix=C:/PROGRA~2/GnuWin32
exec_prefix=${prefix}
exec_prefix_set=no
includedir=${prefix}/include
libdir=${exec_prefix}/lib
enable_shared=yes
wl=-Wl,
hardcode_libdir_flag_spec='-L$libdir'
usage()
{
cat <<EOF
Usage: freetype-config [OPTION]...
Get FreeType compilation and linking information.
Options:
--prefix display \`--prefix' value used for building the
FreeType library
--prefix=PREFIX override \`--prefix' value with PREFIX
--exec-prefix display \`--exec-prefix' value used for building
the FreeType library
--exec-prefix=EPREFIX override \`--exec-prefix' value with EPREFIX
--version display libtool version of the FreeType library
--ftversion display FreeType version number
--libs display flags for linking with the FreeType library
--libtool display library name for linking with libtool
--cflags display flags for compiling with the FreeType
library
EOF
exit $1
}
if test $# -eq 0 ; then
usage 1 1>&2
fi
while test $# -gt 0 ; do
case "$1" in
-*=*)
optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
;;
*)
optarg=
;;
esac
case $1 in
--prefix=*)
prefix=$optarg
local_prefix=yes
;;
--prefix)
echo_prefix=yes
;;
--exec-prefix=*)
exec_prefix=$optarg
exec_prefix_set=yes
local_prefix=yes
;;
--exec-prefix)
echo_exec_prefix=yes
;;
--version)
echo 9.16.3
exit 0
;;
--ftversion)
major=`grep define C:/PROGRA~2/GnuWin32/include/freetype2/freetype/freetype.h \
| grep FREETYPE_MAJOR \
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'`
minor=`grep define C:/PROGRA~2/GnuWin32/include/freetype2/freetype/freetype.h \
| grep FREETYPE_MINOR \
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'`
patch=`grep define C:/PROGRA~2/GnuWin32/include/freetype2/freetype/freetype.h \
| grep FREETYPE_PATCH \
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'`
echo $major.$minor.$patch
exit 0
;;
--cflags)
echo_cflags=yes
;;
--libs)
echo_libs=yes
;;
--libtool)
echo_libtool=yes
;;
*)
usage 1 1>&2
;;
esac
shift
done
if test "$local_prefix" = "yes" ; then
if test "$exec_prefix_set" != "yes" ; then
exec_prefix=$prefix
fi
fi
if test "$echo_prefix" = "yes" ; then
echo $prefix
fi
if test "$echo_exec_prefix" = "yes" ; then
echo $exec_prefix
fi
if test "$exec_prefix_set" = "yes" ; then
libdir=$exec_prefix/lib
else
if test "$local_prefix" = "yes" ; then
includedir=$prefix/include
libdir=$prefix/lib
fi
fi
if test "$echo_cflags" = "yes" ; then
cflags="-I$includedir/freetype2"
if test "$includedir" != "/usr/include" ; then
echo $cflags -I$includedir
else
echo $cflags
fi
fi
if test "$echo_libs" = "yes" ; then
rpath=
if test "$enable_shared" = "yes" ; then
eval "rpath=\"$hardcode_libdir_flag_spec\""
fi
libs="-lfreetype -lz -Wl,-s -LD:/Progra~1/GnuWin32/lib -lintl -lwsock32 -lole32 -luuid -lmsvcp60 "
if test "$libdir" != "/usr/lib" && test "$libdir" != "/usr/lib64"; then
echo -L$libdir $rpath $libs
else
echo $libs
fi
fi
if test "$echo_libtool" = "yes" ; then
convlib="libfreetype.la"
echo $libdir/$convlib
fi
# EOF
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment