8000 Mac build improvements by JonnyPtn · Pull Request #95 · fallahn/crogine · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Mac build improvements #95

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 14 commits into
base: golf-1.15
Choose a base branch
from
Draft
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ imgui.ini

build/
bundle/
install/
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.23)
project(cro)

option(BUILD_SAMPLES "Build the crogine samples" OFF)
Expand Down
15 changes: 13 additions & 2 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": 3,
"version": 4,
"configurePresets": [
{
"name": "default",
Expand All @@ -8,12 +8,23 @@
"BUILD_SAMPLES": true,
"CMAKE_INSTALL_PREFIX": "install/${presetName}"
}
},
{
"name": "xcode",
"generator": "Xcode",
"inherits": [
"default"
]
}
],
"buildPresets": [
{
"name":"default",
"name": "default",
"configurePreset": "default"
},
{
"name": "xcode",
"configurePreset": "xcode"
}
]
}
162 changes: 57 additions & 105 deletions crogine/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,172 +1,124 @@
cmake_minimum_required(VERSION 3.5.0)
add_library(crogine)

#required for std::filesystem
if(APPLE)
SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
endif()

project(crogine)
SET(PROJECT_NAME crogine)

if(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build (Debug or Release)" FORCE)
endif()
option(BUILD_SHARED_LIBS "Whether to build shared libraries" ON)

SET(USE_OPENAL TRUE CACHE BOOL "Choose whether to use OpenAL for audio or SDL_Mixer.")
SET(TARGET_ANDROID FALSE CACHE BOOL "Build the library for Android devices")

SET(USE_GL_41 FALSE CACHE BOOL "Use OpenGL 4.1 instead of 4.6 on desktop builds.")

if(${TARGET_ANDROID})
SET(${CMAKE_TOOLCHAIN_FILE} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchains/android-arm.cmake")
endif()
option(USE_OPENAL "Choose whether to use OpenAL for audio or SDL_Mixer." TRUE)
option(TARGET_ANDROID "Build the library for Android devices" FALSE)
option(USE_GL_41 "Use OpenGL 4.1 instead of 4.6 on desktop builds." FALSE)

SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/")

if(CMAKE_COMPILER_IS_GNUCXX)
if(PROJECT_STATIC_RUNTIME)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++17 -static")
else()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++17")
endif()
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/")

if(USE_OPENAL)
add_definitions(-DAL_AUDIO)
target_compile_definitions(crogine PRIVATE AL_AUDIO)
else()
add_defnitions(-DSDL_AUDIO)
target_compile_definitions(crogine PRIVATE SDL_AUDIO)
endif()

if(NOT TARGET_ANDROID)
if(USE_GL_41)
add_definitions(-DGL41)
target_compile_definitions(crogine PRIVATE GL41)
endif()
endif()

if (msvc)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
if (MSVC)
target_compile_definitions(crogine PRIVATE _CRT_SECURE_NO_WARNINGS)
endif()

if (APPLE)
add_definitions(-DGL_SILENCE_DEPRECATION)
target_compile_definitions(crogine PRIVATE GL_SILENCE_DEPRECATION)
endif()

if (NOT BUILD_SHARED_LIBS)
add_definitions(-DCRO_STATIC)
target_compile_definitions(crogine PRIVATE CRO_STATIC)
else()
add_definitions(-DCRO_BUILD)
target_compile_definitions(crogine PRIVATE CRO_BUILD)
endif()

SET (CMAKE_CXX_FLAGS_DEBUG "-g -DCRO_DEBUG_ -DHAS_SOCKLEN_T")
SET (CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -DHAS_SOCKLEN_T")
SET (CMAKE_DEBUG_POSTFIX -d)
target_compile_definitions(crogine PUBLIC $<$<CONFIG:Debug>:CRO_DEBUG>)

set_target_properties(crogine PROPERTIES DEBUG_POSTFIX -d)

# We're using c++17
SET (CMAKE_CXX_STANDARD 17)
SET (CMAKE_CXX_STANDARD_REQUIRED ON)
target_compile_features(crogine PUBLIC cxx_std_17)

SET (OpenGL_GL_PREFERENCE "GLVND")
set (OpenGL_GL_PREFERENCE "GLVND")

find_package(SDL2 REQUIRED)
find_package(Freetype REQUIRED)
find_package(OpenGL REQUIRED)

if(USE_OPENAL)
#use mojo AL on mac
if(NOT APPLE)
find_package(OpenAL REQUIRED)
endif()
find_package(OpenAL REQUIRED)
else()
find_package(SDL2_mixer REQUIRED)
endif()

#used in dumping stack traces
# Used in dumping stack traces
if(MSVC)
find_package(DbgHelp REQUIRED)
elseif(LINUX)
find_package(Libunwind REQUIRED)
endif()

include_directories(
${SDL2_INCLUDE_DIR}
${FREETYPE_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/crogine/include)
target_include_directories(crogine
PRIVATE
${FREETYPE_INCLUDE_DIRS}
PUBLIC
${SDL2_INCLUDE_DIR}
${CMAKE_SOURCE_DIR}/crogine/include)

if(MSVC)
include_directories(${CMAKE_SOURCE_DIR}/extlibs/openal/include ${DBGHELP_INCLUDE_DIR})
target_include_directories(crogine PRIVATE ${CMAKE_SOURCE_DIR}/extlibs/openal/include ${DBGHELP_INCLUDE_DIR})
elseif(LINUX)
include_directories(${LIBUNWIND_INCLUDE_DIRS})
target_include_directories(crogine PRIVATE ${LIBUNWIND_INCLUDE_DIRS})
endif()

SET(PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
set(PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
include(${PROJECT_DIR}/CMakeLists.txt)

if(USE_OPENAL)
if(NOT APPLE)
include_directories(${OPENAL_INCLUDE_DIR})
endif()
SET(PROJECT_SRC ${PROJECT_SRC} ${project_src_openal})
target_include_directories(crogine PRIVATE ${OPENAL_INCLUDE_DIR})
set(PROJECT_SRC ${PROJECT_SRC} ${project_src_openal})
else()
include_directories(${SDL2_MIXER_INCLUDE_DIR})
SET(PROJECT_SRC ${PROJECT_SRC} ${project_src_sdlmixer})
target_include_directories(crogine PRIVATE ${SDL2_MIXER_INCLUDE_DIR})
set(PROJECT_SRC ${PROJECT_SRC} ${project_src_sdlmixer})
endif()


#add platform specific source files for enet
if(WIN32)
SET(PROJECT_SRC ${PROJECT_SRC} ${project_src_win32})
set(PROJECT_SRC ${PROJECT_SRC} ${project_src_win32})
else()
SET(PROJECT_SRC ${PROJECT_SRC} ${project_src_nix})
set(PROJECT_SRC ${PROJECT_SRC} ${project_src_nix})
endif()

# add the Resourcepath source, mojoal source and GL41 loader for apple, else load GL46
if (APPLE)
set(PROJECT_SRC ${PROJECT_SRC} ${project_src_macos})
else()
SET(PROJECT_SRC ${PROJECT_SRC} src/detail/glad.c)
set(PROJECT_SRC ${PROJECT_SRC} src/detail/glad.c)
endif()

# this might be built by a project using crogine
# so skip this step in that case
if(NOT TARGET crogine)
if(NOT BUILD_SHARED_LIBS)
add_library(${PROJECT_NAME} STATIC ${PROJECT_SRC})
else()
add_library(${PROJECT_NAME} SHARED ${PROJECT_SRC})
endif()

target_link_libraries(crogine
${SDL2_LIBRARY}
${FREETYPE_LIBRARIES}
${OPENGL_LIBRARIES})

target_link_libraries(${PROJECT_NAME}
${SDL2_LIBRARY}
${FREETYPE_LIBRARIES}
${OPENGL_LIBRARIES})

if(USE_OPENAL)
if(NOT APPLE)
target_link_libraries(${PROJECT_NAME} ${OPENAL_LIBRARY})
endif()
else()
target_link_libraries(${PROJECT_NAME} ${SDL2_MIXER_LIBRARY})
endif()

if(MSVC)
target_link_libraries(${PROJECT_NAME} winmm ws2_32 IPHLPAPI ${DBGHELP_LIBRARIES} shlwapi)
elseif(LINUX)
target_link_libraries(${PROJECT_NAME} ${LIBUNWIND_LIBRARIES})
endif()
if(USE_OPENAL)
target_link_libraries(crogine ${OPENAL_LIBRARY})
else()
target_link_libraries(crogine ${SDL2_MIXER_LIBRARY})
endif()

target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
if(MSVC)
target_link_libraries(crogine winmm ws2_32 IPHLPAPI ${DBGHELP_LIBRARIES} shlwapi)
elseif(LINUX)
target_link_libraries(crogine ${LIBUNWIND_LIBRARIES})
endif()

target_include_directories(crogine PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/crogine DESTINATION include)
file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp)
target_sources(crogine PUBLIC FILE_SET HEADERS
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include
FILES ${HEADERS}
PRIVATE ${PROJECT_SRC})

if(NOT BUILD_SHARED_LIBS)
install(TARGETS ${PROJECT_NAME} EXPORT crogine-targets DESTINATION lib)
else()
install(TARGETS ${PROJECT_NAME} EXPORT crogine-targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin)
endif()

install(TARGETS crogine EXPORT crogine-targets FILE_SET HEADERS)
1 change: 0 additions & 1 deletion crogine/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,6 @@ SET(project_src_nix
)

SET(project_src_macos
${PROJECT_DIR}/audio/mojoal.c
${PROJECT_DIR}/detail/ResourcePath.mm
${PROJECT_DIR}/detail/41/glad.c
)
Loading
0