diff --git a/meson.build b/meson.build index c8a2f70..021f9d3 100644 --- a/meson.build +++ b/meson.build @@ -4,6 +4,45 @@ add_global_arguments('-std=c++11', language: ['cpp']) compiler = meson.get_compiler('cpp') cmake = import('cmake') +# For macOS only - define extra dependencies early +if build_machine.system() == 'darwin' + objc_dep = dependency('objc', required: false) + if not objc_dep.found() + objc_dep = compiler.find_library('objc', required: true) + endif + # Add other macOS frameworks that might be needed + foundation_dep = dependency('Foundation', required: false) + if not foundation_dep.found() + foundation_dep = compiler.find_library('Foundation', required: false) + endif + cocoa_dep = dependency('Cocoa', required: false) + if not cocoa_dep.found() + cocoa_dep = compiler.find_library('Cocoa', required: false) + endif + iokit_dep = dependency('IOKit', required: false) + if not iokit_dep.found() + iokit_dep = compiler.find_library('IOKit', required: false) + endif + + extra_deps = [objc_dep] + if foundation_dep.found() + extra_deps += [foundation_dep] + endif + if cocoa_dep.found() + extra_deps += [cocoa_dep] + endif + if iokit_dep.found() + extra_deps += [iokit_dep] + endif +else + extra_deps = [] +endif + +# For Windows only +ws2_dep = compiler.find_library('ws2_32', required: false) +winmm = compiler.find_library('winmm', required: false) + +# Handle raylib dependency based on library type # if we are building a shared library if get_option('default_library') == 'shared' raylib = dependency('raylib', required: false) # Try to find dependency with pkg-config @@ -17,24 +56,20 @@ if get_option('default_library') == 'shared' raylib_proj = cmake.subproject('raylib', options: opt_var) raylib = raylib_proj.dependency('raylib') endif +else + # For static library (default case) + opt_var = cmake.subproject_options() + opt_var.add_cmake_defines({'BUILD_SHARED_LIBS' : false}) + raylib_proj = cmake.subproject('raylib', options: opt_var) + raylib = raylib_proj.dependency('raylib') endif -# I we are building a static library -if get_option('default_library') == 'static' - raylib_proj = cmake.subproject('raylib') - raylib = raylib_proj.dependency('raylib') -endif - -#For Windows only - ws2_dep = compiler.find_library('ws2_32', required: false) - winmm = compiler.find_library('winmm', required: false) if build_machine.system() == 'windows' - add_project_arguments('-Wl,--subsystem,windows', '-mwindows', language: ['cpp', 'c']) # Prevent opening console when game is run - + add_project_arguments('-Wl,--subsystem,windows', '-mwindows', language: ['cpp', 'c']) # Prevent opening console when game is run endif executable('pong', - 'main.cpp', 'sock.cpp','paddle.cpp', 'ball.cpp', 'numeric_base.cpp', 'connect_code.cpp', 'server.cpp', 'client.cpp', 'check_input.cpp', 'raygui_helpers.cpp', 'display_text.cpp', - 'netpong-serialization/serialization.c', 'timer.c', 'easysock.c', - dependencies: [raylib, ws2_dep, winmm] + 'main.cpp', 'sock.cpp','paddle.cpp', 'ball.cpp', 'numeric_base.cpp', 'connect_code.cpp', 'server.cpp', 'client.cpp', 'check_input.cpp', 'raygui_helpers.cpp', 'display_text.cpp', + 'netpong-serialization/serialization.c', 'timer.c', 'easysock.c', + dependencies: [raylib, ws2_dep, winmm] + extra_deps )