Advertisement
vidok

Untitled

Jun 26th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 11.37 KB | None | 0 0
  1. #####  DP_MAKE_TARGET autodetection and arch specific variables #####
  2.  
  3.  
  4. # If we're targeting an x86 CPU we want to enable DP_SSE (CFLAGS_SSE and SSE2)
  5. DP_SSE:=1
  6.  
  7. # Makefile name
  8. MAKEFILE=makefile
  9.  
  10. # Commands
  11. ifdef windir
  12.     CMD_RM=del
  13.     CMD_CP=copy /y
  14.     CMD_MKDIR=mkdir
  15. else
  16.     CMD_RM=rm -rf
  17.     CMD_CP=cp -f
  18.     CMD_MKDIR=mkdir -p
  19. endif
  20.  
  21.  
  22.  
  23. ###### Optional features #####
  24. DP_CDDA?=enabled
  25. ifeq ($(DP_CDDA), enabled)
  26.     OBJ_CD=cd_shared.o cd_win.o
  27. else
  28.     OBJ_CD=cd_shared.o cd_null.o
  29. endif
  30.  
  31. DP_VIDEO_CAPTURE?=enabled
  32. ifeq ($(DP_VIDEO_CAPTURE), enabled)
  33.     CFLAGS_VIDEO_CAPTURE=-DCONFIG_VIDEO_CAPTURE
  34.     OBJ_VIDEO_CAPTURE= cap_avi.o cap_ogg.o
  35. else
  36.     CFLAGS_VIDEO_CAPTURE=
  37.     OBJ_VIDEO_CAPTURE=
  38. endif
  39.  
  40.  
  41. # Win32 configuration
  42.  
  43. #D3D?=1
  44. ifeq ($(D3D), 1)
  45.     CFLAGS_D3D=-DSUPPORTD3D -DSUPPORTDIRECTX
  46.     CFLAGS_WARNINGS=-Wall
  47.     LDFLAGS_D3D=-ld3d9
  48. else
  49.     CFLAGS_D3D=
  50.     CFLAGS_WARNINGS=-Wall -Wold-style-definition -Wstrict-prototypes -Wsign-compare -Wdeclaration-after-statement -Wmissing-prototypes
  51.     LDFLAGS_D3D=
  52. endif
  53.  
  54.  
  55. DP_LINK_ZLIB?=dlopen
  56. DP_LINK_JPEG?=shared
  57. DP_LINK_ODE?=dlopen
  58. DP_LINK_CRYPTO?=dlopen
  59. DP_LINK_CRYPTO_RIJNDAEL?=dlopen
  60.  
  61.  
  62. # set these to "" if you want to use dynamic loading instead
  63. # zlib
  64. ifeq ($(DP_LINK_ZLIB), shared)
  65.     CFLAGS_LIBZ=-DLINK_TO_ZLIB
  66.     LIB_Z=-lz
  67. endif
  68. ifeq ($(DP_LINK_ZLIB), dlopen)
  69.     CFLAGS_LIBZ=
  70.     LIB_Z=
  71. endif
  72.  
  73. # jpeg
  74. ifeq ($(DP_LINK_JPEG), shared)
  75.     CFLAGS_LIBJPEG=-DLINK_TO_LIBJPEG
  76.     LIB_JPEG=-ljpeg
  77. endif
  78. ifeq ($(DP_LINK_JPEG), dlopen)
  79.     CFLAGS_LIBJPEG=
  80.     LIB_JPEG=
  81. endif
  82.  
  83. # ode
  84. ifeq ($(DP_LINK_ODE), shared)
  85.     ODE_CONFIG?=ode-config
  86.     LIB_ODE=`$(ODE_CONFIG) --libs`
  87.     CFLAGS_ODE=`$(ODE_CONFIG) --cflags` -DUSEODE -DLINK_TO_LIBODE
  88. endif
  89. ifeq ($(DP_LINK_ODE), dlopen)
  90.     LIB_ODE=
  91.     CFLAGS_ODE=-DUSEODE
  92. endif
  93.  
  94. # d0_blind_id
  95. ifeq ($(DP_LINK_CRYPTO), shared)
  96.     LIB_CRYPTO=-ld0_blind_id
  97.     CFLAGS_CRYPTO=-DLINK_TO_CRYPTO
  98. endif
  99. ifeq ($(DP_LINK_CRYPTO), dlopen)
  100.     LIB_CRYPTO=
  101.     CFLAGS_CRYPTO=
  102. endif
  103. ifeq ($(DP_LINK_CRYPTO_RIJNDAEL), shared)
  104.     LIB_CRYPTO_RIJNDAEL=-ld0_rijndael
  105.     CFLAGS_CRYPTO_RIJNDAEL=-DLINK_TO_CRYPTO_RIJNDAEL
  106. endif
  107. ifeq ($(DP_LINK_CRYPTO_RIJNDAEL), dlopen)
  108.     LIB_CRYPTO_RIJNDAEL=
  109.     CFLAGS_CRYPTO_RIJNDAEL=
  110. endif
  111.  
  112. ##### Sound configuration #####
  113.  
  114. # WIN: DirectX and Win32 WAVE output
  115. OBJ_SOUND=snd_main.o snd_mem.o snd_mix.o snd_ogg.o snd_wav.o snd_win.o
  116. LIB_SOUND=
  117.  
  118. ##### Extra CFLAGS #####
  119.  
  120. CFLAGS_MAKEDEP?=-MMD
  121. ifdef DP_FS_BASEDIR
  122.     CFLAGS_FS=-DDP_FS_BASEDIR=\"$(DP_FS_BASEDIR)\"
  123. else
  124.     CFLAGS_FS=
  125. endif
  126.  
  127. CFLAGS_NET=
  128. # Systems without IPv6 support should uncomment this:
  129. #CFLAGS_NET+=-DNOSUPPORTIPV6
  130.  
  131. ##### GNU Make specific definitions #####
  132.  
  133. DO_LD=$(CC) -o ../../../$@ $^ $(LDFLAGS)
  134.  
  135.  
  136. ##### Definitions shared by all makefiles #####
  137.  
  138.  
  139.  
  140. # Invalid call detection
  141. CHECKLEVEL1 = @if [ "$(LEVEL)" != 1 ]; then $(MAKE) help; false; fi
  142. CHECKLEVEL2 = @if [ "$(LEVEL)" != 2 ]; then $(MAKE) help; false; fi
  143.  
  144. # Choose the compiler you want to use
  145. CC?=gcc
  146.  
  147. # athlon optimizations
  148. #CPUOPTIMIZATIONS?=-march=athlon
  149. # athlon xp optimizations
  150. #CPUOPTIMIZATIONS?=-march=athlon-xp
  151. # athlon 64 optimizations
  152. #CPUOPTIMIZATIONS?=-march=athlon64 -m32
  153. # Pentium 3 optimizations
  154. #CPUOPTIMIZATIONS?=-march=pentium3
  155. # Pentium 4 optimizations
  156. #CPUOPTIMIZATIONS?=-march=pentium4
  157. # 686 (Pentium Pro/II) optimizations
  158. #CPUOPTIMIZATIONS?=-march=i686
  159. # No specific CPU (386 compatible)
  160. #CPUOPTIMIZATIONS?=
  161. # Experimental
  162. #CPUOPTIMIZATIONS?=-fno-math-errno -ffinite-math-only -fno-rounding-math -fno-signaling-nans -fassociative-math -freciprocal-math -fno-signed-zeros -fno-trapping-math
  163. # Normal
  164. CPUOPTIMIZATIONS?=-fno-math-errno -ffinite-math-only -fno-rounding-math -fno-signaling-nans -fno-trapping-math
  165. # NOTE: *never* *ever* use the -ffast-math or -funsafe-math-optimizations flag
  166.  
  167. STRIP?=strip
  168.  
  169. ###### Common objects and flags #####
  170.  
  171. # Common objects
  172. OBJ_COMMON= \
  173.     bih.o \
  174.     crypto.o \
  175.     cl_collision.o \
  176.     cl_demo.o \
  177.     cl_dyntexture.o \
  178.     cl_input.o \
  179.     cl_main.o \
  180.     cl_parse.o \
  181.     cl_particles.o \
  182.     cl_screen.o \
  183.     cl_video.o \
  184.     clvm_cmds.o \
  185.     cmd.o \
  186.     collision.o \
  187.     common.o \
  188.     console.o \
  189.     csprogs.o \
  190.     curves.o \
  191.     cvar.o \
  192.     dpsoftrast.o \
  193.     dpvsimpledecode.o \
  194.     filematch.o \
  195.     fractalnoise.o \
  196.     fs.o \
  197.     ft2.o \
  198.     utf8lib.o \
  199.     gl_backend.o \
  200.     gl_draw.o \
  201.     gl_rmain.o \
  202.     gl_rsurf.o \
  203.     gl_textures.o \
  204.     hmac.o \
  205.     host.o \
  206.     host_cmd.o \
  207.     image.o \
  208.     image_png.o \
  209.     jpeg.o \
  210.     keys.o \
  211.     lhnet.o \
  212.     libcurl.o \
  213.     mathlib.o \
  214.     matrixlib.o \
  215.     mdfour.o \
  216.     meshqueue.o \
  217.     mod_skeletal_animatevertices_sse.o \
  218.     mod_skeletal_animatevertices_generic.o \
  219.     model_alias.o \
  220.     model_brush.o \
  221.     model_shared.o \
  222.     model_sprite.o \
  223.     netconn.o \
  224.     palette.o \
  225.     polygon.o \
  226.     portals.o \
  227.     protocol.o \
  228.     prvm_cmds.o \
  229.     prvm_edict.o \
  230.     prvm_exec.o \
  231.     r_explosion.o \
  232.     r_lerpanim.o \
  233.     r_lightning.o \
  234.     r_modules.o \
  235.     r_shadow.o \
  236.     r_sky.o \
  237.     r_sprites.o \
  238.     sbar.o \
  239.     sv_demo.o \
  240.     sv_main.o \
  241.     sv_move.o \
  242.     sv_phys.o \
  243.     sv_user.o \
  244.     svbsp.o \
  245.     svvm_cmds.o \
  246.     sys_shared.o \
  247.     vid_shared.o \
  248.     view.o \
  249.     wad.o \
  250.     world.o \
  251.     zone.o
  252.  
  253. OBJ_MENU= \
  254.     menu.o \
  255.     mvm_cmds.o
  256.  
  257.  
  258. # Compilation
  259. CFLAGS_COMMON=$(CFLAGS_MAKEDEP) $(CFLAGS_FS) $(CFLAGS_WARNINGS) $(CFLAGS_LIBZ) $(CFLAGS_LIBJPEG) $(CFLAGS_D3D) $(CFLAGS_NET) -D_FILE_OFFSET_BITS=64 -D__KERNEL_STRICT_NAMES -I../../../
  260. CFLAGS_CLIENT=-DCONFIG_MENU -DCONFIG_CD $(CFLAGS_VIDEO_CAPTURE)
  261. CFLAGS_DEBUG=-ggdb
  262. CFLAGS_PROFILE=-g -pg -ggdb -fprofile-arcs
  263. CFLAGS_RELEASE=
  264. CFLAGS_RELEASE_PROFILE=-fbranch-probabilities
  265.  
  266. ifeq ($(DP_SSE),1)
  267.     CFLAGS_SSE=-msse
  268.     CFLAGS_SSE2=-msse2
  269. else
  270.     CFLAGS_SSE=
  271.     CFLAGS_SSE2=
  272. endif # ifeq ($(DP_SSE),1)
  273.  
  274. OPTIM_DEBUG=$(CPUOPTIMIZATIONS)
  275. #OPTIM_RELEASE=-O2 -fno-strict-aliasing -ffast-math -funroll-loops $(CPUOPTIMIZATIONS)
  276. #OPTIM_RELEASE=-O2 -fno-strict-aliasing -fno-math-errno -fno-trapping-math -ffinite-math-only -fno-signaling-nans -fcx-limited-range -funroll-loops $(CPUOPTIMIZATIONS)
  277. #OPTIM_RELEASE=-O2 -fno-strict-aliasing -funroll-loops $(CPUOPTIMIZATIONS)
  278. #OPTIM_RELEASE=-O2 -fno-strict-aliasing $(CPUOPTIMIZATIONS)
  279. OPTIM_RELEASE=-O3 -fno-strict-aliasing $(CPUOPTIMIZATIONS)
  280. # NOTE: *never* *ever* use the -ffast-math or -funsafe-math-optimizations flag
  281.  
  282. DO_CC=$(CC) $(CFLAGS) -c $< -o $@
  283.  
  284.  
  285. # Link
  286. LDFLAGS_DEBUG=-g -ggdb $(OPTIM_DEBUG) -DSVNREVISION=`{ test -d .svn && svnversion; } || { test -d .git && git describe --always; } || echo -` -DBUILDTYPE=debug
  287. LDFLAGS_PROFILE=-g -pg -fprofile-arcs $(OPTIM_RELEASE) -DSVNREVISION=`{ test -d .svn && svnversion; } || { test -d .git && git describe --always; } || echo -` -DBUILDTYPE=profile
  288. LDFLAGS_RELEASE=$(OPTIM_RELEASE) -DSVNREVISION=`{ test -d .svn && svnversion; } || { test -d .git && git describe --always; } || echo -` -DBUILDTYPE=release
  289.  
  290.  
  291.  
  292. ##### Win32 specific variables #####
  293.  
  294. # note that builddate.c is very intentionally not compiled to a .o before
  295. # being linked, because it should be recompiled every time an executable is
  296. # built to give the executable a proper date string
  297. OBJ_CL= builddate.c sys_win.o vid_wgl.o thread_null.o $(OBJ_MENU) $(OBJ_SOUND) $(OBJ_CD) $(OBJ_VIDEO_CAPTURE) $(OBJ_COMMON)
  298.  
  299. # Link
  300. # see LDFLAGS_WINCOMMON in makefile
  301. LDFLAGS_CL=$(LDFLAGS_WINCOMMON) $(LIB_CRYPTO) $(LIB_CRYPTO_RIJNDAEL) -mwindows -lwinmm -luser32 -lgdi32 -ldxguid -ldinput -lcomctl32 -lws2_32 $(LDFLAGS_D3D) $(LIB_Z) $(LIB_JPEG)
  302. EXE_CL=_darkplaces.exe
  303.  
  304. VPATH := ../../../
  305.  
  306. ##### Commands #####
  307.  
  308. .PHONY : clean clean-profile help \
  309.      debug profile release \
  310.      cl-debug cl-profile cl-release
  311.  
  312.  
  313. release :
  314.     $(MAKE) bin-release \
  315.         EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
  316.  
  317.  
  318.  
  319. help:
  320.     @echo
  321.     @echo "===== Choose one ====="
  322.     @echo "* $(MAKE) clean                : delete all files produced by the build except"
  323.     @echo "                              profiling information"
  324.     @echo "* $(MAKE) clean-profile        : delete all files produced by the build, including"
  325.     @echo "                              profiling informaiton"
  326.     @echo "* $(MAKE) help                 : this help"
  327.     @echo "* $(MAKE) debug                : make client (debug version)"
  328.     @echo "* $(MAKE) profile              : make client (profile version)"
  329.     @echo "* $(MAKE) release              : make client (release version)"
  330.     @echo "* $(MAKE) release-profile      : make client (release version)"
  331.     @echo "                              (with profiling optimizations) The profiled"
  332.     @echo "                              version of the program must have been"
  333.     @echo "                              previously compiled"
  334.     @echo
  335.  
  336.  
  337.  
  338. debug :
  339.     $(MAKE) bin-debug \
  340.         EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
  341.  
  342. profile :
  343.     $(MAKE) bin-profile \
  344.         EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
  345.  
  346.  
  347. release-profile :
  348.     $(MAKE) bin-release-profile \
  349.         EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
  350.  
  351. bin-debug :
  352.     $(CHECKLEVEL1)
  353.     @echo
  354.     @echo '========== $(EXE) (debug) =========='
  355.     $(MAKE) prepare BUILD_DIR=build-obj/debug/$(EXE)
  356.     $(MAKE) -C build-obj/debug/$(EXE) $(EXE) \
  357.         CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_DEBUG) $(OPTIM_DEBUG)'\
  358.         LDFLAGS='$(LDFLAGS_DEBUG) $(LDFLAGS_COMMON)' LEVEL=2
  359.  
  360. bin-profile :
  361.     $(CHECKLEVEL1)
  362.     @echo
  363.     @echo '========== $(EXE) (profile) =========='
  364.     $(MAKE) prepare BUILD_DIR=build-obj/profile/$(EXE)
  365.     $(MAKE) -C build-obj/profile/$(EXE) $(EXE) \
  366.         CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_PROFILE) $(OPTIM_RELEASE)'\
  367.         LDFLAGS='$(LDFLAGS_PROFILE) $(LDFLAGS_COMMON)' LEVEL=2
  368.  
  369. bin-release :
  370.     $(CHECKLEVEL1)
  371.     @echo
  372.     @echo '========== $(EXE) (release) =========='
  373.     $(MAKE) prepare BUILD_DIR=build-obj/release/$(EXE)
  374.     $(MAKE) -C build-obj/release/$(EXE) $(EXE) \
  375.         CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_RELEASE) $(OPTIM_RELEASE)'\
  376.         LDFLAGS='$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)' LEVEL=2
  377.     $(STRIP) $(EXE)
  378.  
  379. bin-release-profile :
  380.     $(CHECKLEVEL1)
  381.     @echo
  382.     @echo '========== $(EXE) (release) =========='
  383.     $(MAKE) prepare BUILD_DIR=build-obj/release-profile/$(EXE)
  384.     $(MAKE) -C build-obj/release-profile/$(EXE) $(EXE) \
  385.         CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_RELEASE_PROFILE) $(OPTIM_RELEASE)'\
  386.         LDFLAGS='$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)' LEVEL=2
  387.     $(STRIP) $(EXE)
  388.  
  389. prepare :
  390.     $(CMD_MKDIR) $(BUILD_DIR)
  391.     $(CMD_CP) $(MAKEFILE) $(BUILD_DIR)/
  392.  
  393. #this checks USEODE when compiling so it needs the ODE flags as well
  394. prvm_cmds.o: prvm_cmds.c
  395.     $(CHECKLEVEL2)
  396.     $(DO_CC) $(CFLAGS_ODE)
  397.  
  398. world.o: world.c
  399.     $(CHECKLEVEL2)
  400.     $(DO_CC) $(CFLAGS_ODE)
  401.  
  402. crypto.o: crypto.c
  403.     $(CHECKLEVEL2)
  404.     $(DO_CC) $(CFLAGS_CRYPTO) $(CFLAGS_CRYPTO_RIJNDAEL)
  405.  
  406. mod_skeletal_animatevertices_sse.o: mod_skeletal_animatevertices_sse.c
  407.     $(CHECKLEVEL2)
  408.     $(DO_CC) $(CFLAGS_SSE)
  409.  
  410. dpsoftrast.o: dpsoftrast.c
  411.     $(CHECKLEVEL2)
  412.     $(DO_CC) $(CFLAGS_SSE2)
  413.  
  414. resource.o: resource.rc
  415.     $(CHECKLEVEL2)
  416.     windres -o $@ $<
  417.  
  418. .c.o:
  419.     $(CHECKLEVEL2)
  420.     $(DO_CC)
  421.  
  422. $(EXE_CL): $(OBJ_CL) resource.o
  423.     $(CHECKLEVEL2)
  424.     $(DO_LD)
  425.  
  426. clean:
  427.     -$(CMD_RM) $(EXE_CL)
  428.     -$(CMD_RM) *.o
  429.     -$(CMD_RM) *.d
  430.     -$(CMD_RM) build-obj/
  431.  
  432. clean-profile: clean
  433.     -$(CMD_RM) *.gcda
  434.     -$(CMD_RM) *.gcno
  435.  
  436.  
  437.  
  438.  
  439. print-%: ; @echo $*=$($*)
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446. ##### Dependency files #####
  447.  
  448. -include *.d
  449.  
  450. # hack to deal with no-longer-needed .h files
  451. %.h:
  452.     @echo
  453.     @echo "NOTE: file $@ mentioned in dependencies missing, continuing..."
  454.     @echo "HINT: consider 'make clean'"
  455.     @echo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement