Skip to content
Snippets Groups Projects
  1. Dec 18, 2022
  2. Nov 27, 2022
  3. Nov 25, 2021
    • James R.'s avatar
      Backport 2021 SRB2 makefile overhaul · d5c08ac0
      James R. authored
      This is a squashed commit of the following commits from
      upstream:
      
      James R <justsomejames2@gmail.com> on 2021-05-01
      Commit 44d217807f71d15bd7ca69dad226458e7060ccab
      > Collect makefiles
      
      James R <justsomejames2@gmail.com> on 2021-05-04
      Commit f637e28d0c1877c44acd7b01f7130625d5ea4099
      > Remove bin, objs and dep directories
      
      James R <justsomejames2@gmail.com> on 2021-05-02
      Commit b31056c7d977fe3c2a5e0637589fd9521f1f6c04
      > Rewrite Makefile to be modular as well as more automated
      >
      > Some key points for programmers:
      > - Source code files are mostly listed in a 'Sourcefile'.
      >   So you no longer directly edit the object list. There
      >   can be multiple Sourcefiles and they can even live in
      >   subdirectories--the directory name will be prepended to
      >   every filename in the list. Of course, the Makefile
      >   still needs to be edited to read from each Sourcefile.
      > - Different rules are no longer required for source code
      >   files that live in subdirectories (such as sdl/ or
      >   hardware/). Subdirectories Just Work so go ham!
      >
      > In addition to those points, another important change is
      > that the bin directory is no longer divided into platform
      > subdirectories (Linux64, Mingw, etc). Executables now go
      > directly into bin. If you use DEBUGMODE or target 64-bit,
      > then subdirectories for 'debug' and '64' will be made
      > though.
      >
      > Oh by the way, I don't think make clean actually removed
      > files before on Windows. It should now. I also fixed as
      > many little inconsistencies like that as I noticed.
      >
      > And now just an overview of the technical aspects that
      > shouldn't affect anyone who doesn't REALLY care about the
      > Makefile...
      >
      > objs and dep directories have been moved to a make
      > directory. Makefile.cfg and its variants have been moved
      > out of their various subdirectories to src/Makefile.d
      > make distclean removes the bin and make directories
      > entirely, but make clean and cleandep still only affect
      > the current build target.
      >
      > When I say automation, I mean that a lot of copy pasting
      > in the Makefile has been reduced.
      
      James R <justsomejames2@gmail.com> on 2021-05-04
      Commit 53d1cbe8264196e46911c86bc4be13d44aa35dfe
      > Appveyor: update executable directory
      
      James R <justsomejames2@gmail.com> on 2021-05-04
      Commit 888073d64d1885cae0ad8b5d54bfec31e9793e0a
      > Fix make clean printing header
      
      James R <justsomejames2@gmail.com> on 2021-05-04
      Commit 3d7205d4942d1e1b2627fdf5acf9d9c82437a97b
      > Fix minor errors with Windows ECHO, DEL, MD
      >
      > - Quotes were not removed by ECHO.
      > - DEL would print an error on nonexistent file.
      > - MD would do this plus return a nonzero exit code.
      
      James R <justsomejames2@gmail.com> on 2021-05-05
      Commit f9813844e7f0dfa6229062b1ebd83e4e8150c120
      > Update CMakeLists.txt to use Sourcefiles
      >
      > This establishes (near) parity of source code file lists
      > between the Makefile and CMakeLists.txt
      >
      > To make that change I messed around CMakeLists.txt a bit.
      > It now uses target_sources and target_compile_definitions.
      > I also removed some MSVC stuff since we don't actually
      > care about MSVC--it made things easier.
      >
      > CMake minimum version 3.0 -> 3.13 for target_sources.
      
      James R <justsomejames2@gmail.com> on 2021-05-05
      Commit ec8b63d6759f0c124693ea6d5a521e8d82efd566
      > Makefile: remove last of unused flags
      
      James R <justsomejames2@gmail.com> on 2021-05-07
      Commit c06817d0085ee77b0027917bca91a24e60c7deba
      > Makefile: fix mingw/64 swapped with 32-bit
      
      James R <justsomejames2@gmail.com> on 2021-05-07
      Commit 9e7d80c2c44199126fa451c59fca0f98d23ad14d
      > Makefile: suppress DEL error
      
      James R <justsomejames2@gmail.com> on 2021-05-07
      Commit 87afa7655a71539c7cbc7db12df18c4253187fbc
      > CMake: fix ASM compile
      >
      > - target_sources from correct directory
      > - enable_language must be used in add_executable directory
      
      James R <justsomejames2@gmail.com> on 2021-05-08
      Commit 210c9419e4bddd1fe8e9be7cb66de31119fa0d68
      > Ignore -Wtrigraphs
      
      James R <justsomejames2@gmail.com> on 2021-06-16
      Commit 3a044e71cc7cf6c80d9836189511c1a58c108370
      > Disable EXE disassembly and compression by default
      >
      > NOOBJDUMP=1 and NOUPX=1 have been removed. Make 'dump'
      > target to disassemble. UPX=upx to compress executable.
      >
      > Setting UPX used to cause it to fail. That has been fixed.
      
      James R <justsomejames2@gmail.com> on 2021-06-16
      Commit c142b3241ddb8f1ea9b5090d20dffa43a17129ab
      > Makefile: alert full path of final executable
      >
      > With added textual contrast.
      
      James R <justsomejames2@gmail.com> on 2021-06-16
      Commit b04c79d8a7ba4ae8f888ab94d394b6714699e107
      > Say 'at'
      
      James R <justsomejames2@gmail.com> on 2021-06-21
      Commit 2d7a8c3c571bcc5335437e9db074c75af00408ce
      > Makefile: use shell commands to read in Sourcefile
      >
      > File function is not supported < Make 4.2.
      
      James R <justsomejames2@gmail.com> on 2021-06-21
      Commit d5146945a69ebf30e6fc1fbb64558e456e0b7459
      > Makefile: don't automatically set WINDOWSHELL unless PATH matches Windows norms
      >
      > This is for MSYS2, which requires unix shell commands.
      
      James R <justsomejames2@gmail.com> on 2021-06-22
      Commit 5f4d7e3c5b013afe03ae2a441c82ad79bae7c66c
      > Makefile: fail if old build directories exist
      >
      > After a checkout from before revision, old directories
      > such as bin/Linux64 only remain if untracked files exist
      > within. This may be confusing to the user. They may even
      > use an outdated executable if it is one of those untracked
      > files.
      
      James R <justsomejames2@gmail.com> on 2021-06-22
      Commit c3ad5de912fccfdd64c510f5684883afceaa7d36
      > Makefile: let variables be defined on Make line
      >
      > If a variable is defined as in 'make CC=gcc-10', then that
      > definition overrides anything other definition in the
      > Makefile.
      
      James R <justsomejames2@gmail.com> on 2021-06-22
      Commit ed85e994a46ace07cf022b38a9abac1698a8667e
      > Remove misplaced parentheses
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit c1ecfa306f6a0b168d4f6cbc3224ebebd4deec51
      > Makefile: 'dep' not 'deps'
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit 6c03f9b5b3590e01773f05bc1c31cc67a2d88fc2
      > fuck
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit abdf5c101cbe80657f210c0b90800e2c4c6f0c05
      > Makefile: report SHELL
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit 22ab611daa17bd23225f3afeeba39147c0d0fe17
      > Makefile: do not automatically set WINDOWSHELL
      >
      > According to this answer--
      > https://stackoverflow.com/a/45952425
      > --Make will always prefer a unix shell, even on Windows,
      > if one can be found in Path. So we can't check PATH to
      > determine if it's a Windows shell... this is just too much
      > bother.
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit f79e0ee540564fcec5da7c0dc4006906492a7f30
      > Appveyor: remove 64-bit target
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit faee657572f23cd6f8b68c077873e01c4278414e
      > Appveyor: update for new Makefile
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit 44b82dea58612e6f07830647e2b08555f54a7caa
      > Appveyor: remove redundant CFLAGS
      >
      > Also changed -Wno-error=implicit-fallthrough to
      > -Wno-implicit-fallthrough. For some reason Appveyor's
      > version of GCC is triggering these warnings despite the
      > comments, so just shut it up.
      
      James R <justsomejames2@gmail.com> on 2021-06-29
      Commit db919accd22350c087c1fd0e5122d8e490e2f171
      > Appveyor: suppress real time file names
      
      James R <justsomejames2@gmail.com> on 2021-07-12
      Commit 58fa44e8dc0444eecbe701f31872fad9fa563a6a
      > CMP0115
      
      SteelT <steeltitanium1@gmail.com> on 2021-07-16
      Commit 71f905f95bd4fe62dbca87208cf71b7309f12de1
      > Fix gme support being effectively disabled
      >
      > I found this easier than trying to adjust the makefile, as it uses the same thing to automatically generate the various NO* compile options.
      
      James R <justsomejames2@gmail.com> on 2021-08-14
      Commit 824b1ab28cdddfd1c018454a9af14dabaab49fcd
      > Makefile: use full stem in dependency generation
      >
      > Previously took only the filename, so the directory
      > component was stripped. This broke dependencies for
      > basically every file.
      
      GoldenTails <milestailsprower101n2@gmail.com> on 2021-08-28
      Commit 1a8ec7975c20e1d652cbbdb7a9e366192e41c05f
      > Makefile: Improve gcc detection
      >
      > Wasn't working for me until I fixed it.
      > Turns out gcc really doesn't like giving its name out.
      > Most of the time it reads argv[0].
      d5c08ac0
  4. Dec 30, 2018
  5. Dec 28, 2017
  6. Jul 06, 2016
  7. May 22, 2016
  8. May 19, 2016
  9. May 18, 2016
  10. Mar 15, 2014
Loading