Skip to content

Commit f2e9d93

Browse files
committed
new demo version!
1 parent bb34e5d commit f2e9d93

File tree

218 files changed

+73050
-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.

218 files changed

+73050
-0
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
src/engine/kernels/kernels.cpp
2+
src/engine/versionutils.cpp
3+
src/addon/__init__.py

CMakeLists.txt

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
#[[
2+
Copyright (c) 2019 Ryan L. Guy
3+
4+
Permission is hereby granted, free of charge, to any person obtaining a copy
5+
of this software and associated documentation files (the "Software"), to deal
6+
in the Software without restriction, including without limitation the rights
7+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+
copies of the Software, and to permit persons to whom the Software is
9+
furnished to do so, subject to the following conditions:
10+
11+
The above copyright notice and this permission notice shall be included in all
12+
copies or substantial portions of the Software.
13+
14+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20+
SOFTWARE.
21+
]]
22+
23+
cmake_minimum_required(VERSION 2.8.9)
24+
25+
function(set_output_directories DIR)
26+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DIR} PARENT_SCOPE)
27+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${DIR} PARENT_SCOPE)
28+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${DIR} PARENT_SCOPE)
29+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DIR} PARENT_SCOPE)
30+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${DIR} PARENT_SCOPE)
31+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DIR} PARENT_SCOPE)
32+
endfunction(set_output_directories)
33+
34+
option(DISTRIBUTE_SOURCE "Include source code in addon" OFF)
35+
option(WITH_OPENCL "Compile project with OpenCL features" OFF)
36+
37+
project(bl_flip_fluids)
38+
set(CMAKE_BUILD_TYPE Release)
39+
40+
set(FLUIDENGINE_VERSION_MAJOR 0)
41+
set(FLUIDENGINE_VERSION_MINOR 0)
42+
set(FLUIDENGINE_VERSION_REVISION 5)
43+
set(FLUIDENGINE_VERSION_LABEL "0.0.5 Demo 04-JUN-2019")
44+
45+
# Configure OpenCL
46+
if(WITH_OPENCL)
47+
find_package(OpenCL)
48+
if(NOT OpenCL_FOUND)
49+
message(WARNING "WARNING: OpenCL was not found on your system.\nInstall an OpenCL SDK specific to your GPU vender (AMD, NVIDIA, Intel, etc.). This project will be built with OpenCL features disabled.")
50+
set(WITH_OPENCL OFF)
51+
endif()
52+
endif()
53+
54+
if(WITH_OPENCL)
55+
if(MSVC OR MINGW)
56+
# Set to OpenCL ICD loader instead of vendor library
57+
set(OpenCL_LIBRARY "C:/Windows/System32/OpenCL.dll")
58+
endif()
59+
60+
# Allows use os clCreateCommandQueue in OpenCL versions >= 2.0
61+
add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_2_APIS)
62+
63+
add_definitions(-DWITH_OPENCL=1)
64+
include_directories(src ${OpenCL_INCLUDE_DIRS})
65+
else()
66+
add_definitions(-DWITH_OPENCL=0)
67+
endif()
68+
69+
# Configure compiler/OS specific flags
70+
if(MSVC)
71+
message(WARNING "WARNING: Compilation using MSVC (Microsoft Visual Studio) is experimental and not officially supported. Building with MSVC may result in errors and performance issues.")
72+
add_definitions(-DCL_USE_DEPRECATED_OPENCL_1_1_APIS -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS)
73+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /W4 /EHsc /wd4244")
74+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE")
75+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE")
76+
elseif(MINGW)
77+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static -static-libgcc -static-libstdc++ -O3 -std=c++11 -Wall")
78+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
79+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
80+
elseif(APPLE)
81+
set(CMAKE_MACOSX_RPATH ON)
82+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++11 -Wall -Wno-return-type-c-linkage")
83+
else()
84+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++11 -Wall -fPIC -pthread")
85+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include ${PROJECT_SOURCE_DIR}/src/engine/glibc_version_header/force_link_glibc_2.5.h")
86+
endif()
87+
88+
# Configure Version
89+
configure_file(
90+
"${PROJECT_SOURCE_DIR}/src/engine/versionutils.cpp.in"
91+
"${PROJECT_SOURCE_DIR}/src/engine/versionutils.cpp"
92+
)
93+
configure_file(
94+
"${PROJECT_SOURCE_DIR}/src/addon/__init__.py.in"
95+
"${PROJECT_SOURCE_DIR}/src/addon/__init__.py"
96+
)
97+
98+
# Generate kernels.cpp
99+
file(READ "src/engine/kernels/trilinearinterpolate.cl" TRILINEAR_INTERPOLATE_KERNEL_STRING)
100+
file(READ "src/engine/kernels/scalarfield.cl" SCALAR_FIELD_KERNEL_STRING)
101+
configure_file(
102+
"${PROJECT_SOURCE_DIR}/src/engine/kernels/kernels.cpp.in"
103+
"${PROJECT_SOURCE_DIR}/src/engine/kernels/kernels.cpp"
104+
)
105+
106+
# Object library
107+
file(GLOB SOURCES "src/engine/*.cpp" "src/engine/c_bindings/*.cpp" "src/engine/kernels/*.cpp" "src/engine/opencl_bindings/*.cpp")
108+
add_library(objects OBJECT ${SOURCES})
109+
110+
# Test executable
111+
set(TEST_DIR "${CMAKE_BINARY_DIR}/bl_flip_fluids/test")
112+
set_output_directories("${TEST_DIR}")
113+
add_executable(bl_flip_fluids $<TARGET_OBJECTS:objects>)
114+
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "engine_test")
115+
if(WITH_OPENCL)
116+
target_link_libraries(bl_flip_fluids "${OpenCL_LIBRARY}")
117+
endif()
118+
119+
# Pyfluid library
120+
set(PYTHON_MODULE_DIR "${CMAKE_BINARY_DIR}/bl_flip_fluids/pyfluid")
121+
set(PYTHON_MODULE_LIB_DIR "${CMAKE_BINARY_DIR}/bl_flip_fluids/pyfluid/lib")
122+
set_output_directories("${PYTHON_MODULE_LIB_DIR}")
123+
add_library(pyfluid SHARED $<TARGET_OBJECTS:objects>)
124+
if(WITH_OPENCL)
125+
target_link_libraries(pyfluid "${OpenCL_LIBRARY}")
126+
endif()
127+
file(COPY "${CMAKE_SOURCE_DIR}/src/engine/pyfluid/" DESTINATION "${PYTHON_MODULE_DIR}")
128+
129+
# Blender addon
130+
set(BLENDER_ADDON_DIR "${CMAKE_BINARY_DIR}/bl_flip_fluids/flip_fluids_addon")
131+
set_output_directories("${BLENDER_ADDON_DIR}/pyfluid/lib")
132+
add_library(blpyfluid SHARED $<TARGET_OBJECTS:objects>)
133+
if(WITH_OPENCL)
134+
target_link_libraries(blpyfluid "${OpenCL_LIBRARY}")
135+
endif()
136+
file(COPY "${CMAKE_SOURCE_DIR}/src/addon/" DESTINATION "${BLENDER_ADDON_DIR}")
137+
file(COPY "${CMAKE_SOURCE_DIR}/src/engine/pyfluid/" DESTINATION "${BLENDER_ADDON_DIR}/pyfluid")
138+
139+
if(DISTRIBUTE_SOURCE)
140+
set(SOURCE_COPY_PATHS
141+
"${CMAKE_SOURCE_DIR}/src"
142+
"${CMAKE_SOURCE_DIR}/.gitignore"
143+
"${CMAKE_SOURCE_DIR}/CMakeLists.txt"
144+
"${CMAKE_SOURCE_DIR}/LICENSE_GPLv3.md"
145+
"${CMAKE_SOURCE_DIR}/LICENSE_MIT.md"
146+
"${CMAKE_SOURCE_DIR}/LICENSE_Standard_Royalty_Free.md"
147+
"${CMAKE_SOURCE_DIR}/README.md"
148+
)
149+
150+
foreach(SOURCE_PATH ${SOURCE_COPY_PATHS})
151+
file(COPY "${SOURCE_PATH}" DESTINATION "${BLENDER_ADDON_DIR}/source/")
152+
endforeach(SOURCE_PATH)
153+
endif()

0 commit comments

Comments
 (0)