Skip to content

Commit 4e379a7

Browse files
committed
Starter code from 2014 + README update
0 parents  commit 4e379a7

File tree

311 files changed

+116864
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

311 files changed

+116864
-0
lines changed

.gitignore

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# General
2+
builds/
3+
4+
# Compiled objects
5+
*.o
6+
*.obj
7+
8+
# Compiled dynamic libraries
9+
*.so
10+
11+
# Windows specific
12+
[Rr]elease/
13+
[Dd]ebug/
14+
*.suo
15+
*.pdb
16+
*.sdf
17+
*.opensdf
18+
*.user
19+
*.deps
20+
*.ipch
21+
22+
# CUDA built deps
23+
windows/src/
24+
25+
# OSX specific
26+
.DS_Store
27+
*/.DS_Store
28+
29+
# VIM swap files
30+
*.swp
31+
32+
# Exceptions
33+
!external/lib/*/*.lib
34+
!external/bin/*

CMakeLists.txt

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
cmake_minimum_required(VERSION 3.0.0)
2+
3+
#on OSX we have to explicitly set clang/clang++
4+
#set (CMAKE_C_COMPILER clang)
5+
#set (CMAKE_CXX_COMPILER clang++)
6+
7+
project(Project4-Rasterizer)
8+
9+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
10+
11+
#External libs location (alternatively, /usr/local or something)
12+
set(EXTERNAL "external")
13+
14+
#Set up include and lib paths
15+
include_directories(${EXTERNAL}/include)
16+
include_directories(${EXTERNAL}/src)
17+
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
18+
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${EXTERNAL}/lib/osx)
19+
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
20+
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${EXTERNAL}/lib/linux /usr/lib64)
21+
elseif(WIN32)
22+
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${EXTERNAL}/lib/win)
23+
endif()
24+
25+
set(GLFW_INCLUDE_DIR ${EXTERNAL}/include)
26+
set(GLFW_LIBRARY_DIR ${CMAKE_LIBRARY_PATH})
27+
set(GLEW_INCLUDE_DIR ${EXTERNAL}/include)
28+
set(GLEW_LIBRARY_DIR ${CMAKE_LIBRARY_PATH})
29+
30+
#Find up and set up core dependency libs
31+
find_library(GLFW_LIBRARY "glfw3" HINTS ${GLFW_LIBRARY_DIR})
32+
find_package(GLUT)
33+
find_package(OpenGL)
34+
find_package(GLEW)
35+
36+
set(CORELIBS ${GLFW_LIBRARY} ${GLUT_LIBRARY} ${OPENGL_LIBRARY} ${GLEW_LIBRARY})
37+
38+
#OSX-specific hacks/fixes
39+
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
40+
#Link IOKit because this is where we get GL stuff for OSX
41+
set(IOKIT "-framework IOKit")
42+
set(CORELIBS ${CORELIBS} ${IOKIT})
43+
#Link against libstdc++ since CUDA doesn't support libc++ yet
44+
set(CUDA_NVCC_FLAGS "--compiler-options;-stdlib=libstdc++;")
45+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
46+
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
47+
48+
#Linux specific hacks/fixes
49+
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
50+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lX11 -lXxf86vm -lXrandr -lpthread -lXi")
51+
endif()
52+
53+
#Compiler flag magic
54+
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
55+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -m64 -msse2")
56+
elseif(WIN32)
57+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
58+
endif()
59+
60+
#Crucial magic for CUDA linking
61+
find_package(CUDA REQUIRED)
62+
set(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE ON)
63+
64+
set(CUDA_SEPARABLE_COMPILATION ON)
65+
66+
#Make NVCC run silently
67+
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
68+
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}-w;")
69+
endif()
70+
71+
#Force Visual Studio to link against MT versions of libs
72+
if(MSVC)
73+
set(CompilerFlags
74+
CMAKE_CXX_FLAGS
75+
CMAKE_CXX_FLAGS_DEBUG
76+
CMAKE_CXX_FLAGS_RELEASE
77+
CMAKE_C_FLAGS
78+
CMAKE_C_FLAGS_DEBUG
79+
CMAKE_C_FLAGS_RELEASE
80+
)
81+
foreach(CompilerFlag ${CompilerFlags})
82+
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
83+
endforeach()
84+
set(CUDA_NVCC_FLAGS_RELEASE ${CUDA_NVCC_FLAGS_RELEASE} "--compiler-options /MT; --linker-options /MT")
85+
set(CUDA_NVCC_FLAGS_DEBUG ${CUDA_NVCC_FLAGS_DEBUG} "--compiler-options /MT; --linker-options /MT")
86+
endif()
87+
88+
#Add all source files. Headers don't need to be listed here since the compiler will find them;
89+
#we just need the actual files being fed directly to the compiler
90+
set(SOURCE_FILES "src/main.cpp")
91+
set(SOURCE_FILES ${SOURCE_FILES} "src/rasterizeKernels.cu")
92+
set(SOURCE_FILES ${SOURCE_FILES} "src/utilities.cpp")
93+
set(SOURCE_FILES ${SOURCE_FILES} "${EXTERNAL}/src/glslUtil/glslUtility.cpp")
94+
set(SOURCE_FILES ${SOURCE_FILES} "${EXTERNAL}/src/objUtil/obj.cpp")
95+
set(SOURCE_FILES ${SOURCE_FILES} "${EXTERNAL}/src/objUtil/objloader.cpp")
96+
97+
cuda_add_executable(Project4-Rasterizer ${SOURCE_FILES} OPTIONS -arch=sm_20)
98+
99+
target_link_libraries(Project4-Rasterizer ${CORELIBS})

0 commit comments

Comments
 (0)