ref: 215e26b478c1cbf5a5d5dd86e7ee027072acaaac
dir: /src/CMakeLists.txt/
# # This file is part of RGBDS. # # Copyright (c) 2020 RGBDS contributors. # # SPDX-License-Identifier: MIT # set(common_src "extern/err.c" "extern/getopt.c" "version.c" ) find_package(PkgConfig) if(MSVC OR NOT PKG_CONFIG_FOUND) # fallback to find_package find_package(PNG REQUIRED) else() pkg_check_modules(LIBPNG REQUIRED libpng) endif() find_package(BISON REQUIRED) set(BISON_FLAGS "-Wall") # Set sompe optimization flags on versions that support them if(BISON_VERSION VERSION_GREATER_EQUAL "3.5") set(BISON_FLAGS "${BISON_FLAGS} -Dapi.token.raw=true") endif() if(BISON_VERSION VERSION_GREATER_EQUAL "3.6") set(BISON_FLAGS "${BISON_FLAGS} -Dparse.error=detailed") elseif(BISON_VERSION VERSION_GREATER_EQUAL "3.0") set(BISON_FLAGS "${BISON_FLAGS} -Dparse.error=verbose") endif() if(BISON_VERSION VERSION_GREATER_EQUAL "3.0") set(BISON_FLAGS "${BISON_FLAGS} -Dparse.lac=full") set(BISON_FLAGS "${BISON_FLAGS} -Dlr.type=ielr") endif() BISON_TARGET(PARSER "asm/parser.y" "${PROJECT_SOURCE_DIR}/src/asm/parser.c" COMPILE_FLAGS "${BISON_FLAGS}" DEFINES_FILE "${PROJECT_SOURCE_DIR}/src/asm/parser.h" ) set(rgbasm_src "${BISON_PARSER_OUTPUT_SOURCE}" "asm/charmap.c" "asm/fixpoint.c" "asm/format.c" "asm/fstack.c" "asm/lexer.c" "asm/macro.c" "asm/main.c" "asm/opt.c" "asm/output.c" "asm/rpn.c" "asm/section.c" "asm/symbol.c" "asm/util.c" "asm/warning.c" "extern/utf8decoder.c" "hashmap.c" "linkdefs.c" "opmath.c" ) set(rgbfix_src "fix/main.c" ) set(rgbgfx_src "gfx/gb.c" "gfx/main.c" "gfx/makepng.c" ) set(rgblink_src "link/assign.c" "link/main.c" "link/object.c" "link/output.c" "link/patch.c" "link/script.c" "link/section.c" "link/symbol.c" "hashmap.c" "linkdefs.c" "opmath.c" ) foreach(PROG "asm" "fix" "gfx" "link") add_executable(rgb${PROG} ${rgb${PROG}_src} ${common_src} ) install(TARGETS rgb${PROG} RUNTIME DESTINATION bin) endforeach() set(MANDIR "share/man") set(man1 "asm/rgbasm.1" "fix/rgbfix.1" "gfx/rgbgfx.1" "link/rgblink.1") set(man5 "asm/rgbasm.5" "link/rgblink.5" "rgbds.5") set(man7 "gbz80.7" "rgbds.7") foreach(SECTION "man1" "man5" "man7") set(DEST "${MANDIR}/${SECTION}") install(FILES ${${SECTION}} DESTINATION ${DEST}) endforeach() if(LIBPNG_FOUND) # pkg-config target_include_directories(rgbgfx PRIVATE ${LIBPNG_INCLUDE_DIRS}) target_link_directories(rgbgfx PRIVATE ${LIBPNG_LIBRARY_DIRS}) target_link_libraries(rgbgfx PRIVATE ${LIBPNG_LIBRARIES}) else() target_compile_definitions(rgbgfx PRIVATE ${PNG_DEFINITIONS}) target_include_directories(rgbgfx PRIVATE ${PNG_INCLUDE_DIRS}) target_link_libraries(rgbgfx PRIVATE ${PNG_LIBRARIES}) endif() include(CheckLibraryExists) check_library_exists("m" "sin" "" HAS_LIBM) if(HAS_LIBM) target_link_libraries(rgbasm PRIVATE "m") endif()